Submitted By: Ken Moffat Date: 2022-01-25 Initial Package Version: 5.15.2 Upstream Status: Applied Origin: The kf5.15 branch (in git, origin/kde/5.15) - see https://dot.kde.org/2021/04/06/announcing-kdes-qt-5-patch-collection The kde patches are organized per-module, and include patches which were applied to the last public 5.15.2 release, as well as unwanted changes to force version 5.15.3 (in the case of qtscript, also 5.15.4). These patches were checked for updates on 2022-01-25. The following modules used by packages in BLFS have patches, for the details of what is included, and of any patches passed over, see the modules patches at https://rivendell.linuxfromscratch.org/~ken/qt5/ (the kf5.15-2.patch versions): qtbase, qtdeclarative, qtdoc, qtlocation, qtmultimedia, qtquickcontrols2, qtquickcontrols, qtsvg, qttools, qtwayland, qtwebchannel. At this point the following modules used by packages in BLFS do not have any useful patches: qtgraphicaleffects, qtimageformats, qtnetworkauth, qtscript, qtsensors, qtspeech,qtx11extras, qtxmlpatterns. QtWebEngine is not included here, we build it separately. Those packages should be enough to provide required dependencies for all kf5 packages, based on the details in Arch. The remaining modules are unlikely to be used by anyone building BLFS. diff -Naur a/qtbase/configure.json b/qtbase/configure.json --- a/qtbase/configure.json 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/configure.json 2022-01-25 17:23:44.143496294 +0000 @@ -1098,7 +1098,7 @@ }, "avx": { "label": "AVX", - "condition": "features.sse4_2 && tests.avx", + "condition": "features.sse4_2 && tests.avx && (!config.android || !arch.x86_64)", "output": [ "privateConfig", { "type": "define", "name": "QT_COMPILER_SUPPORTS_AVX", "value": 1 } @@ -1114,7 +1114,7 @@ }, "avx2": { "label": "AVX2", - "condition": "features.avx && tests.avx2", + "condition": "features.avx && tests.avx2 && (!config.android || !arch.x86_64)", "output": [ "privateConfig", "privateFeature", diff -Naur a/qtbase/examples/network/secureudpclient/association.cpp b/qtbase/examples/network/secureudpclient/association.cpp --- a/qtbase/examples/network/secureudpclient/association.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/examples/network/secureudpclient/association.cpp 2022-01-25 17:23:44.143496294 +0000 @@ -112,6 +112,11 @@ void DtlsAssociation::readyRead() { + if (socket.pendingDatagramSize() <= 0) { + emit warningMessage(tr("%1: spurious read notification?").arg(name)); + return; + } + //! [6] QByteArray dgram(socket.pendingDatagramSize(), Qt::Uninitialized); const qint64 bytesRead = socket.readDatagram(dgram.data(), dgram.size()); diff -Naur a/qtbase/examples/widgets/draganddrop/dropsite/droparea.cpp b/qtbase/examples/widgets/draganddrop/dropsite/droparea.cpp --- a/qtbase/examples/widgets/draganddrop/dropsite/droparea.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/examples/widgets/draganddrop/dropsite/droparea.cpp 2022-01-25 17:23:44.074496542 +0000 @@ -93,6 +93,9 @@ //! [dropEvent() function part2] if (mimeData->hasImage()) { setPixmap(qvariant_cast(mimeData->imageData())); + } else if (mimeData->hasFormat(QLatin1String("text/markdown"))) { + setText(QString::fromUtf8(mimeData->data(QLatin1String("text/markdown")))); + setTextFormat(Qt::MarkdownText); } else if (mimeData->hasHtml()) { setText(mimeData->html()); setTextFormat(Qt::RichText); diff -Naur a/qtbase/examples/widgets/draganddrop/dropsite/dropsitewindow.cpp b/qtbase/examples/widgets/draganddrop/dropsite/dropsitewindow.cpp --- a/qtbase/examples/widgets/draganddrop/dropsite/dropsitewindow.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/examples/widgets/draganddrop/dropsite/dropsitewindow.cpp 2022-01-25 17:23:44.074496542 +0000 @@ -132,6 +132,8 @@ QString text; if (format == QLatin1String("text/plain")) { text = mimeData->text().simplified(); + } else if (format == QLatin1String("text/markdown")) { + text = QString::fromUtf8(mimeData->data(QLatin1String("text/markdown"))); } else if (format == QLatin1String("text/html")) { text = mimeData->html().simplified(); } else if (format == QLatin1String("text/uri-list")) { diff -Naur a/qtbase/mkspecs/android-clang/qmake.conf b/qtbase/mkspecs/android-clang/qmake.conf --- a/qtbase/mkspecs/android-clang/qmake.conf 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/mkspecs/android-clang/qmake.conf 2022-01-25 17:23:44.106496427 +0000 @@ -44,7 +44,7 @@ CONFIG += $$ANDROID_PLATFORM ANDROID_MIN_SDK_VERSION = $$replace(ANDROID_PLATFORM, "android-", "") -ANDROID_TARGET_SDK_VERSION = 28 +ANDROID_TARGET_SDK_VERSION = 29 NDK_LLVM_PATH = $$NDK_ROOT/toolchains/llvm/prebuilt/$$NDK_HOST QMAKE_CC = $$NDK_LLVM_PATH/bin/clang diff -Naur a/qtbase/mkspecs/common/android/qplatformdefs.h b/qtbase/mkspecs/common/android/qplatformdefs.h --- a/qtbase/mkspecs/common/android/qplatformdefs.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/mkspecs/common/android/qplatformdefs.h 2022-01-25 17:23:44.177496172 +0000 @@ -144,11 +144,7 @@ #define QT_SIGNAL_ARGS int #define QT_SIGNAL_IGNORE SIG_IGN -#if defined(__GLIBC__) && (__GLIBC__ >= 2) #define QT_SOCKLEN_T socklen_t -#else -#define QT_SOCKLEN_T int -#endif #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500) #define QT_SNPRINTF ::snprintf diff -Naur a/qtbase/mkspecs/common/macx.conf b/qtbase/mkspecs/common/macx.conf --- a/qtbase/mkspecs/common/macx.conf 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/mkspecs/common/macx.conf 2022-01-25 17:23:44.100496449 +0000 @@ -12,7 +12,7 @@ # older SDKs we have to keep this. QT_MAC_SDK_VERSION_MIN = 10.14 -QT_MAC_SDK_VERSION_MAX = 10.15 +QT_MAC_SDK_VERSION_MAX = 11.0 device.sdk = macosx device.target = device diff -Naur a/qtbase/mkspecs/features/android/default_pre.prf b/qtbase/mkspecs/features/android/default_pre.prf --- a/qtbase/mkspecs/features/android/default_pre.prf 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/mkspecs/features/android/default_pre.prf 2022-01-25 17:23:44.092496477 +0000 @@ -36,6 +36,9 @@ QMAKE_LINK = $$QMAKE_CXX $$QMAKE_CFLAGS +equals(ANDROID_TARGET_ARCH, armeabi-v7a): \ + QMAKE_LINK += -Wl,--exclude-libs,libunwind.a + ANDROID_STDCPP_PATH = $$NDK_LLVM_PATH/sysroot/usr/lib/ # -fstack-protector-strong offers good protection against stack smashing attacks. diff -Naur a/qtbase/mkspecs/features/qt_helper_lib.prf b/qtbase/mkspecs/features/qt_helper_lib.prf --- a/qtbase/mkspecs/features/qt_helper_lib.prf 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/mkspecs/features/qt_helper_lib.prf 2022-01-25 17:23:44.115496395 +0000 @@ -89,4 +89,32 @@ # In static builds of Qt, convenience libraries must be installed, # as in this case they are not linked to the final library/plugin. -installed|if(!not_installed:qtConfig(static)): load(qt_installs) +installed|if(!not_installed:qtConfig(static)) { + !isEmpty(MODULE_EXT_HEADERS) { + headers.files = $${MODULE_EXT_HEADERS} + headers.path = $$[QT_INSTALL_HEADERS]/$$TARGET + INSTALLS += headers + } else { + !isEmpty(MODULE_EXT_HEADERS_DIR) { + headers.files = $$MODULE_EXT_HEADERS_DIR/* + headers.path = $$[QT_INSTALL_HEADERS]/$$TARGET + INSTALLS += headers + } + } + + CONFIG += qt_install_module + rpl_header_base = $$MODULE_INCLUDEPATH + rpl_lib_base = $${MODULE_LIBS} + qqt_dir = \$\$\$\$[QT_INSTALL_HEADERS] + pri_header_replace.match = $$rpl_header_base + pri_header_replace.replace = $$qqt_dir/$$TARGET + pri_header_replace.CONFIG = path + pri_header_replace.filename = qt_ext_$${MODULE}.pri + qqt_dir = \$\$\$\$[QT_INSTALL_LIBS] + pri_lib_replace.match = $$rpl_lib_base + pri_lib_replace.replace = $$qqt_dir/$$prefix$${THE_TARGET}.$$suffix + pri_lib_replace.CONFIG = path + pri_lib_replace.filename = qt_ext_$${MODULE}.pri + QMAKE_INSTALL_REPLACE += pri_header_replace pri_lib_replace + load(qt_installs) +} diff -Naur a/qtbase/mkspecs/features/toolchain.prf b/qtbase/mkspecs/features/toolchain.prf --- a/qtbase/mkspecs/features/toolchain.prf 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/mkspecs/features/toolchain.prf 2022-01-25 17:23:44.063496582 +0000 @@ -326,9 +326,17 @@ error("Mkspec does not specify MSVC_VER. Cannot continue.") versionAtLeast(MSVC_VER, 15.0) { dir = $$(VSINSTALLDIR) - isEmpty(dir): \ - dir = $$read_registry(HKLM, \ - "Software\\Microsoft\\VisualStudio\\SxS\\VS7\\$$MSVC_VER", 32) + isEmpty(dir) { + version_parts = $$split(MSVC_VER, .) + MSVC_NEXT_MAJOR = $$num_add($$first(version_parts), 1) + vswhere = "$$getenv(ProgramFiles\(x86\))/Microsoft Visual Studio/Installer/vswhere.exe" + !exists($$vswhere): \ + error("Could not find $$vswhere") + vswhere = $$system_quote($$system_path($$vswhere)) + # -version parameter: A version range for instances to find. 15.0 will get all versions >= 15.0 + # Example: [15.0,16.0) will find versions 15.*. + dir = $$system("$$vswhere -latest -version [$$MSVC_VER,$${MSVC_NEXT_MAJOR}.0] -property installationPath") + } isEmpty(dir): \ error("Failed to find the Visual Studio installation directory.") cmd += $$system_quote($$dir\\VC\\Auxiliary\\Build\\vcvarsall.bat) $$arch diff -Naur a/qtbase/mkspecs/features/uikit/default_post.prf b/qtbase/mkspecs/features/uikit/default_post.prf --- a/qtbase/mkspecs/features/uikit/default_post.prf 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/mkspecs/features/uikit/default_post.prf 2022-01-25 17:23:44.181496158 +0000 @@ -28,7 +28,7 @@ device_family.value = $$QMAKE_APPLE_TARGETED_DEVICE_FAMILY QMAKE_MAC_XCODE_SETTINGS += device_family - ios { + equals(TEMPLATE, app):ios { # Set up default 4-inch iPhone/iPod launch image so that our apps # support the full screen resolution of those devices. qmake_launch_image = Default-568h@2x.png diff -Naur a/qtbase/mkspecs/linux-clang/qplatformdefs.h b/qtbase/mkspecs/linux-clang/qplatformdefs.h --- a/qtbase/mkspecs/linux-clang/qplatformdefs.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/mkspecs/linux-clang/qplatformdefs.h 2022-01-25 17:23:44.178496168 +0000 @@ -79,14 +79,6 @@ #define QT_USE_XOPEN_LFS_EXTENSIONS #include "../common/posix/qplatformdefs.h" -#undef QT_SOCKLEN_T - -#if defined(__GLIBC__) && (__GLIBC__ >= 2) -#define QT_SOCKLEN_T socklen_t -#else -#define QT_SOCKLEN_T int -#endif - #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500) #define QT_SNPRINTF ::snprintf #define QT_VSNPRINTF ::vsnprintf diff -Naur a/qtbase/mkspecs/linux-g++/qplatformdefs.h b/qtbase/mkspecs/linux-g++/qplatformdefs.h --- a/qtbase/mkspecs/linux-g++/qplatformdefs.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/mkspecs/linux-g++/qplatformdefs.h 2022-01-25 17:23:44.178496168 +0000 @@ -79,14 +79,6 @@ #define QT_USE_XOPEN_LFS_EXTENSIONS #include "../common/posix/qplatformdefs.h" -#undef QT_SOCKLEN_T - -#if defined(__GLIBC__) && (__GLIBC__ < 2) -#define QT_SOCKLEN_T int -#else -#define QT_SOCKLEN_T socklen_t -#endif - #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500) #define QT_SNPRINTF ::snprintf #define QT_VSNPRINTF ::vsnprintf diff -Naur a/qtbase/mkspecs/linux-llvm/qplatformdefs.h b/qtbase/mkspecs/linux-llvm/qplatformdefs.h --- a/qtbase/mkspecs/linux-llvm/qplatformdefs.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/mkspecs/linux-llvm/qplatformdefs.h 2022-01-25 17:23:44.178496168 +0000 @@ -80,14 +80,6 @@ #define QT_USE_XOPEN_LFS_EXTENSIONS #include "../common/posix/qplatformdefs.h" -#undef QT_SOCKLEN_T - -#if defined(__GLIBC__) && (__GLIBC__ >= 2) -#define QT_SOCKLEN_T socklen_t -#else -#define QT_SOCKLEN_T int -#endif - #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500) #define QT_SNPRINTF ::snprintf #define QT_VSNPRINTF ::vsnprintf diff -Naur a/qtbase/mkspecs/linux-lsb-g++/qplatformdefs.h b/qtbase/mkspecs/linux-lsb-g++/qplatformdefs.h --- a/qtbase/mkspecs/linux-lsb-g++/qplatformdefs.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/mkspecs/linux-lsb-g++/qplatformdefs.h 2022-01-25 17:23:44.178496168 +0000 @@ -85,16 +85,9 @@ #include "../common/posix/qplatformdefs.h" #undef QT_OPEN_LARGEFILE -#undef QT_SOCKLEN_T #define QT_OPEN_LARGEFILE 0 -#if defined(__GLIBC__) && (__GLIBC__ >= 2) -#define QT_SOCKLEN_T socklen_t -#else -#define QT_SOCKLEN_T int -#endif - #ifndef SIOCGIFBRDADDR # define SIOCGIFBRDADDR 0x8919 #endif diff -Naur a/qtbase/mkspecs/lynxos-g++/qplatformdefs.h b/qtbase/mkspecs/lynxos-g++/qplatformdefs.h --- a/qtbase/mkspecs/lynxos-g++/qplatformdefs.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/mkspecs/lynxos-g++/qplatformdefs.h 2022-01-25 17:23:44.178496168 +0000 @@ -72,14 +72,6 @@ #include "../common/posix/qplatformdefs.h" -#undef QT_SOCKLEN_T - -#if defined(__GLIBC__) && (__GLIBC__ >= 2) -#define QT_SOCKLEN_T socklen_t -#else -#define QT_SOCKLEN_T int -#endif - #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500) #define QT_SNPRINTF ::snprintf #define QT_VSNPRINTF ::vsnprintf diff -Naur a/qtbase/mkspecs/macx-xcode/WorkspaceSettings.xcsettings b/qtbase/mkspecs/macx-xcode/WorkspaceSettings.xcsettings --- a/qtbase/mkspecs/macx-xcode/WorkspaceSettings.xcsettings 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/mkspecs/macx-xcode/WorkspaceSettings.xcsettings 2022-01-25 17:23:44.182496154 +0000 @@ -2,8 +2,6 @@ - BuildSystemType - Original IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded diff -Naur a/qtbase/qmake/doc/src/qmake-manual.qdoc b/qtbase/qmake/doc/src/qmake-manual.qdoc --- a/qtbase/qmake/doc/src/qmake-manual.qdoc 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/qmake/doc/src/qmake-manual.qdoc 2022-01-25 17:23:44.107496424 +0000 @@ -927,13 +927,9 @@ qmake ANDROID_ABIS="armeabi-v7a arm64-v8a" \endcode - Or directly in the \c .pro file: - - \badcode - ANDROID_ABIS = \ - armeabi-v7a \ - arm64-v8a - \endcode + \note It is possible to use this variable inside the *.pro file, however, + it is not recommended since it will override any ABIs specified on the + \c qmake command line. \target ANDROID_API_VERSION \section1 ANDROID_API_VERSION @@ -994,6 +990,19 @@ to enable OpenSSL in your application. For more information, see \l{Adding OpenSSL Support for Android}. + To include external libraries for multiple ABIs, where each ABIs has its own + directory, use the following: + + \badcode + for (abi, ANDROID_ABIS): ANDROID_EXTRA_LIBS += $$PWD/$${abi}/library_name.so + \endcode + + Otherwise, if the ABI is included in the library name, use the following: + + \badcode + for (abi, ANDROID_ABIS): ANDROID_EXTRA_LIBS += $$PWD/library_name_$${abi}.so + \endcode + \target ANDROID_EXTRA_PLUGINS \section1 ANDROID_EXTRA_PLUGINS @@ -1109,7 +1118,7 @@ \note This variable applies only to Android targets. Specifies the target Android API level for the project. By default, this - variable is set to API level 28. + variable is set to API level 29. \target ANDROID_VERSION_CODE \section1 ANDROID_VERSION_CODE @@ -4078,8 +4087,9 @@ Tests whether a file with the given \c filename exists. If the file exists, the function succeeds; otherwise it fails. - If a regular expression is specified for the filename, this function - succeeds if any file matches the regular expression specified. + + The \c filename argument may contain wildcards. + In that case, this function succeeds if any file matches. For example: \snippet code/doc_src_qmake-manual.pro 63 diff -Naur a/qtbase/qmake/generators/mac/pbuilder_pbx.cpp b/qtbase/qmake/generators/mac/pbuilder_pbx.cpp --- a/qtbase/qmake/generators/mac/pbuilder_pbx.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/qmake/generators/mac/pbuilder_pbx.cpp 2022-01-25 17:23:44.182496154 +0000 @@ -778,6 +778,8 @@ { QString mkfile = pbx_dir + Option::dir_sep + "qt_preprocess.mak"; QFile mkf(mkfile); + ProStringList outputPaths; + ProStringList inputPaths; if(mkf.open(QIODevice::WriteOnly | QIODevice::Text)) { writingUnixMakefileGenerator = true; debug_msg(1, "pbuilder: Creating file: %s", mkfile.toLatin1().constData()); @@ -827,8 +829,11 @@ ++added; const QString file_name = fileFixify(fn, FileFixifyFromOutdir); const QString tmpOut = fileFixify(tmp_out.first().toQString(), FileFixifyFromOutdir); - mkt << ' ' << escapeDependencyPath(Option::fixPathToTargetOS( + QString path = escapeDependencyPath(Option::fixPathToTargetOS( replaceExtraCompilerVariables(tmpOut, file_name, QString(), NoShell))); + mkt << ' ' << path; + inputPaths << fn; + outputPaths << path; } } } @@ -839,6 +844,14 @@ mkt.flush(); mkf.close(); } + // Remove duplicates from build steps with "combine" + outputPaths.removeDuplicates(); + + // Don't create cycles. We only have one qt_preprocess.mak which runs different compilers + // whose inputs may depend on the output of another. The "compilers" step will run all + // compilers anyway + inputPaths.removeEach(outputPaths); + mkfile = fileFixify(mkfile); QString phase_key = keyFor("QMAKE_PBX_PREPROCESS_TARGET"); // project->values("QMAKE_PBX_BUILDPHASES").append(phase_key); @@ -849,6 +862,8 @@ << "\t\t\t" << writeSettings("isa", "PBXShellScriptBuildPhase", SettingsNoQuote) << ";\n" << "\t\t\t" << writeSettings("runOnlyForDeploymentPostprocessing", "0", SettingsNoQuote) << ";\n" << "\t\t\t" << writeSettings("name", "Qt Preprocessors") << ";\n" + << "\t\t\t" << writeSettings("inputPaths", inputPaths, SettingsAsList, 4) << ";\n" + << "\t\t\t" << writeSettings("outputPaths", outputPaths, SettingsAsList, 4) << ";\n" << "\t\t\t" << writeSettings("shellPath", "/bin/sh") << ";\n" << "\t\t\t" << writeSettings("shellScript", "make -C " + IoUtils::shellQuoteUnix(Option::output_dir) + " -f " + IoUtils::shellQuoteUnix(mkfile)) << ";\n" diff -Naur a/qtbase/qmake/generators/makefile.cpp b/qtbase/qmake/generators/makefile.cpp --- a/qtbase/qmake/generators/makefile.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/qmake/generators/makefile.cpp 2022-01-25 17:23:44.115496395 +0000 @@ -1286,7 +1286,14 @@ else cmd = QLatin1String("$(QINSTALL)"); cmd += " " + escapeFilePath(wild) + " " + escapeFilePath(dst_file); - inst << cmd; + + QString sedArgs = createSedArgs(ProKey("QMAKE_INSTALL_REPLACE"), fi.fileName()); + if (!sedArgs.isEmpty()) + inst << "$(SED) " + sedArgs + ' ' + escapeFilePath(wild) + " > " + + escapeFilePath(dst_file); + else + inst << cmd; + if (!noStrip && !project->isActiveConfig("debug_info") && !project->isActiveConfig("nostrip") && !fi.isDir() && fi.isExecutable() && !project->isEmpty("QMAKE_STRIP")) inst << QString("-") + var("QMAKE_STRIP") + " " + @@ -3412,35 +3419,43 @@ return QString(str).replace('/', QLatin1String("\\\\\\\\")); } -QString MakefileGenerator::installMetaFile(const ProKey &replace_rule, const QString &src, const QString &dst) +QString MakefileGenerator::createSedArgs(const ProKey &replace_rule, const QString &file_name) const { - QString ret; - if (project->isEmpty(replace_rule) - || project->isActiveConfig("no_sed_meta_install")) { - ret += "$(INSTALL_FILE) " + escapeFilePath(src) + ' ' + escapeFilePath(dst); - } else { - QString sedargs; + QString sedargs; + if (!project->isEmpty(replace_rule) && !project->isActiveConfig("no_sed_meta_install")) { const ProStringList &replace_rules = project->values(replace_rule); for (int r = 0; r < replace_rules.size(); ++r) { const ProString match = project->first(ProKey(replace_rules.at(r) + ".match")), - replace = project->first(ProKey(replace_rules.at(r) + ".replace")); - if (!match.isEmpty() /*&& match != replace*/) { + replace = project->first(ProKey(replace_rules.at(r) + ".replace")), + filename = project->first(ProKey(replace_rules.at(r) + ".filename")); + if (!match.isEmpty() /*&& match != replace*/ + && (filename.isEmpty() || filename == file_name)) { sedargs += " -e " + shellQuote("s," + match + "," + replace + ",g"); - if (isWindowsShell() && project->first(ProKey(replace_rules.at(r) + ".CONFIG")).contains("path")) - sedargs += " -e " + shellQuote("s," + windowsifyPath(match.toQString()) - + "," + windowsifyPath(replace.toQString()) + ",gi"); + if (isWindowsShell() + && project->first(ProKey(replace_rules.at(r) + ".CONFIG")).contains("path")) + sedargs += " -e " + + shellQuote("s," + windowsifyPath(match.toQString()) + "," + + windowsifyPath(replace.toQString()) + ",gi"); } } - if (sedargs.isEmpty()) { - ret += "$(INSTALL_FILE) " + escapeFilePath(src) + ' ' + escapeFilePath(dst); - } else { - ret += "$(SED) " + sedargs + ' ' + escapeFilePath(src) + " > " + escapeFilePath(dst); - } + } + return sedargs; +} + +QString MakefileGenerator::installMetaFile(const ProKey &replace_rule, const QString &src, + const QString &dst) const +{ + QString ret; + QString sedargs = createSedArgs(replace_rule); + if (sedargs.isEmpty()) { + ret = "$(INSTALL_FILE) " + escapeFilePath(src) + ' ' + escapeFilePath(dst); + } else { + ret = "$(SED) " + sedargs + ' ' + escapeFilePath(src) + " > " + escapeFilePath(dst); } return ret; } -QString MakefileGenerator::shellQuote(const QString &str) +QString MakefileGenerator::shellQuote(const QString &str) const { return isWindowsShell() ? IoUtils::shellQuoteWin(str) : IoUtils::shellQuoteUnix(str); } diff -Naur a/qtbase/qmake/generators/makefile.h b/qtbase/qmake/generators/makefile.h --- a/qtbase/qmake/generators/makefile.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/qmake/generators/makefile.h 2022-01-25 17:23:44.115496395 +0000 @@ -251,8 +251,9 @@ protected: QString fileFixify(const QString &file, FileFixifyTypes fix = FileFixifyDefault, bool canon = true) const; QStringList fileFixify(const QStringList &files, FileFixifyTypes fix = FileFixifyDefault, bool canon = true) const; - - QString installMetaFile(const ProKey &replace_rule, const QString &src, const QString &dst); + QString createSedArgs(const ProKey &replace_rule, const QString &file_type = QString()) const; + QString installMetaFile(const ProKey &replace_rule, const QString &src, + const QString &dst) const; virtual bool processPrlFileBase(QString &origFile, const QStringRef &origName, const QStringRef &fixedBase, int slashOff); @@ -278,7 +279,7 @@ virtual bool mergeBuildProject(MakefileGenerator * /*other*/) { return false; } virtual bool openOutput(QFile &, const QString &build) const; bool isWindowsShell() const { return Option::dir_sep == QLatin1String("\\"); } - QString shellQuote(const QString &str); + QString shellQuote(const QString &str) const; virtual ProKey fullTargetVariable() const; }; Q_DECLARE_TYPEINFO(MakefileGenerator::Compiler, Q_MOVABLE_TYPE); diff -Naur a/qtbase/qmake/generators/win32/msvc_vcproj.cpp b/qtbase/qmake/generators/win32/msvc_vcproj.cpp --- a/qtbase/qmake/generators/win32/msvc_vcproj.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/qmake/generators/win32/msvc_vcproj.cpp 2022-01-25 17:23:44.073496546 +0000 @@ -1568,7 +1568,7 @@ QString tmp_out; if (!outputs.isEmpty()) - tmp_out = project->first(outputs.first().toKey()).toQString(); + tmp_out = outputs.first().toQString(); if (project->values(ProKey(*it + ".CONFIG")).indexOf("combine") != -1) { // Combined output, only one file result extraCompile.addFile(Option::fixPathToTargetOS( diff -Naur a/qtbase/src/3rdparty/freetype/freetype.pro b/qtbase/src/3rdparty/freetype/freetype.pro --- a/qtbase/src/3rdparty/freetype/freetype.pro 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/freetype/freetype.pro 2022-01-25 17:23:44.115496395 +0000 @@ -7,6 +7,7 @@ installed MODULE_INCLUDEPATH += $$PWD/include +MODULE_EXT_HEADERS_DIR = $$PWD/include load(qt_helper_lib) diff -Naur a/qtbase/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro b/qtbase/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro --- a/qtbase/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/harfbuzz-ng/harfbuzz-ng.pro 2022-01-25 17:23:44.115496395 +0000 @@ -7,7 +7,6 @@ MODULE_INCLUDEPATH += $$PWD/include -load(qt_helper_lib) # built-in shapers list configuration: SHAPERS += opentype # HB's main shaper; enabling it should be enough most of the time @@ -164,6 +163,8 @@ $$PWD/src/hb-ot-var.h } +MODULE_EXT_HEADERS = $$HEADERS + contains(SHAPERS, coretext) { DEFINES += HAVE_CORETEXT @@ -190,3 +191,5 @@ SOURCES += \ $$PWD/src/hb-fallback-shape.cc } + +load(qt_helper_lib) diff -Naur a/qtbase/src/3rdparty/harfbuzz-ng/src/hb-coretext.cc b/qtbase/src/3rdparty/harfbuzz-ng/src/hb-coretext.cc --- a/qtbase/src/3rdparty/harfbuzz-ng/src/hb-coretext.cc 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/harfbuzz-ng/src/hb-coretext.cc 2022-01-25 17:23:44.095496467 +0000 @@ -1322,7 +1322,7 @@ hb_coretext_aat_shaper_face_data_t * _hb_coretext_aat_shaper_face_data_create (hb_face_t *face) { - static const hb_tag_t tags[] = {HB_CORETEXT_TAG_MORX, HB_CORETEXT_TAG_MORT, HB_CORETEXT_TAG_KERX}; + static const hb_tag_t tags[] = {HB_CORETEXT_TAG_MORX, HB_CORETEXT_TAG_MORT, HB_CORETEXT_TAG_KERX, HB_CORETEXT_TAG_TRAK}; for (unsigned int i = 0; i < ARRAY_LENGTH (tags); i++) { diff -Naur a/qtbase/src/3rdparty/harfbuzz-ng/src/hb-coretext.h b/qtbase/src/3rdparty/harfbuzz-ng/src/hb-coretext.h --- a/qtbase/src/3rdparty/harfbuzz-ng/src/hb-coretext.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/harfbuzz-ng/src/hb-coretext.h 2022-01-25 17:23:44.095496467 +0000 @@ -43,7 +43,7 @@ #define HB_CORETEXT_TAG_MORT HB_TAG('m','o','r','t') #define HB_CORETEXT_TAG_MORX HB_TAG('m','o','r','x') #define HB_CORETEXT_TAG_KERX HB_TAG('k','e','r','x') - +#define HB_CORETEXT_TAG_TRAK HB_TAG('t','r','a','k') HB_EXTERN hb_face_t * hb_coretext_face_create (CGFontRef cg_font); diff -Naur a/qtbase/src/3rdparty/libjpeg/jconfig.h b/qtbase/src/3rdparty/libjpeg/jconfig.h --- a/qtbase/src/3rdparty/libjpeg/jconfig.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/libjpeg/jconfig.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,23 +0,0 @@ -// Definitions for building in Qt source, ref. src/jconfig.h.in - -#define JPEG_LIB_VERSION 80 - -#define LIBJPEG_TURBO_VERSION 2.0.5 - -#define LIBJPEG_TURBO_VERSION_NUMBER 2000005 - -#define C_ARITH_CODING_SUPPORTED 1 - -#define D_ARITH_CODING_SUPPORTED 1 - -#define MEM_SRCDST_SUPPORTED 1 - -#define BITS_IN_JSAMPLE 8 - -#define HAVE_STDDEF_H 1 - -#define HAVE_STDLIB_H 1 - -#define HAVE_UNSIGNED_CHAR 1 - -#define HAVE_UNSIGNED_SHORT 1 diff -Naur a/qtbase/src/3rdparty/libjpeg/libjpeg.pro b/qtbase/src/3rdparty/libjpeg/libjpeg.pro --- a/qtbase/src/3rdparty/libjpeg/libjpeg.pro 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/src/3rdparty/libjpeg/libjpeg.pro 2022-01-25 17:23:44.115496395 +0000 @@ -0,0 +1,79 @@ +TARGET = qtlibjpeg + +CONFIG += \ + static \ + hide_symbols \ + exceptions_off rtti_off warn_off \ + installed + +MODULE_INCLUDEPATH = $$PWD/src +MODULE_EXT_HEADERS = $$PWD/src/jpeglib.h \ + $$PWD/src/jerror.h \ + $$PWD/src/jconfig.h \ + $$PWD/src/jmorecfg.h + +INCLUDEPATH += $$PWD $$PWD/src + +load(qt_helper_lib) + +winrt: DEFINES += NO_GETENV + +# Disable warnings in 3rdparty code due to unused arguments +gcc: QMAKE_CFLAGS_WARN_ON += -Wno-unused-parameter -Wno-main + +# Do not warn about sprintf, getenv, sscanf ... use +msvc: DEFINES += _CRT_SECURE_NO_WARNINGS + +SOURCES += \ + $$PWD/src/jaricom.c \ + $$PWD/src/jcapimin.c \ + $$PWD/src/jcapistd.c \ + $$PWD/src/jcarith.c \ + $$PWD/src/jccoefct.c \ + $$PWD/src/jccolor.c \ + $$PWD/src/jcdctmgr.c \ + $$PWD/src/jchuff.c \ + $$PWD/src/jcinit.c \ + $$PWD/src/jcmainct.c \ + $$PWD/src/jcmarker.c \ + $$PWD/src/jcmaster.c \ + $$PWD/src/jcomapi.c \ + $$PWD/src/jcparam.c \ + $$PWD/src/jcprepct.c \ + $$PWD/src/jcsample.c \ + $$PWD/src/jctrans.c \ + $$PWD/src/jdapimin.c \ + $$PWD/src/jdapistd.c \ + $$PWD/src/jdarith.c \ + $$PWD/src/jdatadst.c \ + $$PWD/src/jdatasrc.c \ + $$PWD/src/jdcoefct.c \ + $$PWD/src/jdcolor.c \ + $$PWD/src/jddctmgr.c \ + $$PWD/src/jdhuff.c \ + $$PWD/src/jdinput.c \ + $$PWD/src/jdmainct.c \ + $$PWD/src/jdmarker.c \ + $$PWD/src/jdmaster.c \ + $$PWD/src/jdmerge.c \ + $$PWD/src/jdpostct.c \ + $$PWD/src/jdsample.c \ + $$PWD/src/jdtrans.c \ + $$PWD/src/jerror.c \ + $$PWD/src/jfdctflt.c \ + $$PWD/src/jfdctfst.c \ + $$PWD/src/jfdctint.c \ + $$PWD/src/jidctflt.c \ + $$PWD/src/jidctfst.c \ + $$PWD/src/jidctint.c \ + $$PWD/src/jquant1.c \ + $$PWD/src/jquant2.c \ + $$PWD/src/jutils.c \ + $$PWD/src/jmemmgr.c \ + $$PWD/src/jsimd_none.c \ + $$PWD/src/jcphuff.c \ + $$PWD/src/jidctred.c \ + $$PWD/src/jdphuff.c \ + $$PWD/src/jmemnobs.c + +TR_EXCLUDE += $$PWD/* diff -Naur a/qtbase/src/3rdparty/libjpeg/src/jconfig.h b/qtbase/src/3rdparty/libjpeg/src/jconfig.h --- a/qtbase/src/3rdparty/libjpeg/src/jconfig.h 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/src/3rdparty/libjpeg/src/jconfig.h 2022-01-25 17:23:44.115496395 +0000 @@ -0,0 +1,23 @@ +// Definitions for building in Qt source, ref. src/jconfig.h.in + +#define JPEG_LIB_VERSION 80 + +#define LIBJPEG_TURBO_VERSION 2.0.5 + +#define LIBJPEG_TURBO_VERSION_NUMBER 2000005 + +#define C_ARITH_CODING_SUPPORTED 1 + +#define D_ARITH_CODING_SUPPORTED 1 + +#define MEM_SRCDST_SUPPORTED 1 + +#define BITS_IN_JSAMPLE 8 + +#define HAVE_STDDEF_H 1 + +#define HAVE_STDLIB_H 1 + +#define HAVE_UNSIGNED_CHAR 1 + +#define HAVE_UNSIGNED_SHORT 1 diff -Naur a/qtbase/src/3rdparty/libjpeg.pri b/qtbase/src/3rdparty/libjpeg.pri --- a/qtbase/src/3rdparty/libjpeg.pri 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/libjpeg.pri 1970-01-01 01:00:00.000000000 +0100 @@ -1,65 +0,0 @@ -winrt: DEFINES += NO_GETENV - -# Disable warnings in 3rdparty code due to unused arguments -gcc: QMAKE_CFLAGS_WARN_ON += -Wno-unused-parameter -Wno-main - -# Do not warn about sprintf, getenv, sscanf ... use -msvc: DEFINES += _CRT_SECURE_NO_WARNINGS - -INCLUDEPATH += \ - $$PWD/libjpeg \ - $$PWD/libjpeg/src - -SOURCES += \ - $$PWD/libjpeg/src/jaricom.c \ - $$PWD/libjpeg/src/jcapimin.c \ - $$PWD/libjpeg/src/jcapistd.c \ - $$PWD/libjpeg/src/jcarith.c \ - $$PWD/libjpeg/src/jccoefct.c \ - $$PWD/libjpeg/src/jccolor.c \ - $$PWD/libjpeg/src/jcdctmgr.c \ - $$PWD/libjpeg/src/jchuff.c \ - $$PWD/libjpeg/src/jcinit.c \ - $$PWD/libjpeg/src/jcmainct.c \ - $$PWD/libjpeg/src/jcmarker.c \ - $$PWD/libjpeg/src/jcmaster.c \ - $$PWD/libjpeg/src/jcomapi.c \ - $$PWD/libjpeg/src/jcparam.c \ - $$PWD/libjpeg/src/jcprepct.c \ - $$PWD/libjpeg/src/jcsample.c \ - $$PWD/libjpeg/src/jctrans.c \ - $$PWD/libjpeg/src/jdapimin.c \ - $$PWD/libjpeg/src/jdapistd.c \ - $$PWD/libjpeg/src/jdarith.c \ - $$PWD/libjpeg/src/jdatadst.c \ - $$PWD/libjpeg/src/jdatasrc.c \ - $$PWD/libjpeg/src/jdcoefct.c \ - $$PWD/libjpeg/src/jdcolor.c \ - $$PWD/libjpeg/src/jddctmgr.c \ - $$PWD/libjpeg/src/jdhuff.c \ - $$PWD/libjpeg/src/jdinput.c \ - $$PWD/libjpeg/src/jdmainct.c \ - $$PWD/libjpeg/src/jdmarker.c \ - $$PWD/libjpeg/src/jdmaster.c \ - $$PWD/libjpeg/src/jdmerge.c \ - $$PWD/libjpeg/src/jdpostct.c \ - $$PWD/libjpeg/src/jdsample.c \ - $$PWD/libjpeg/src/jdtrans.c \ - $$PWD/libjpeg/src/jerror.c \ - $$PWD/libjpeg/src/jfdctflt.c \ - $$PWD/libjpeg/src/jfdctfst.c \ - $$PWD/libjpeg/src/jfdctint.c \ - $$PWD/libjpeg/src/jidctflt.c \ - $$PWD/libjpeg/src/jidctfst.c \ - $$PWD/libjpeg/src/jidctint.c \ - $$PWD/libjpeg/src/jquant1.c \ - $$PWD/libjpeg/src/jquant2.c \ - $$PWD/libjpeg/src/jutils.c \ - $$PWD/libjpeg/src/jmemmgr.c \ - $$PWD/libjpeg/src/jsimd_none.c \ - $$PWD/libjpeg/src/jcphuff.c \ - $$PWD/libjpeg/src/jidctred.c \ - $$PWD/libjpeg/src/jdphuff.c \ - $$PWD/libjpeg/src/jmemnobs.c - -TR_EXCLUDE += $$PWD/* diff -Naur a/qtbase/src/3rdparty/libpng/libpng.pro b/qtbase/src/3rdparty/libpng/libpng.pro --- a/qtbase/src/3rdparty/libpng/libpng.pro 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/libpng/libpng.pro 2022-01-25 17:23:44.115496395 +0000 @@ -7,6 +7,7 @@ installed MODULE_INCLUDEPATH = $$PWD +MODULE_EXT_HEADERS = png.h pngconf.h load(qt_helper_lib) diff -Naur a/qtbase/src/3rdparty/md4c/md4c.c b/qtbase/src/3rdparty/md4c/md4c.c --- a/qtbase/src/3rdparty/md4c/md4c.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/md4c/md4c.c 2022-01-25 17:23:44.077496531 +0000 @@ -137,19 +137,19 @@ /* For resolving of inline spans. */ MD_MARKCHAIN mark_chains[13]; -#define PTR_CHAIN ctx->mark_chains[0] -#define TABLECELLBOUNDARIES ctx->mark_chains[1] -#define ASTERISK_OPENERS_extraword_mod3_0 ctx->mark_chains[2] -#define ASTERISK_OPENERS_extraword_mod3_1 ctx->mark_chains[3] -#define ASTERISK_OPENERS_extraword_mod3_2 ctx->mark_chains[4] -#define ASTERISK_OPENERS_intraword_mod3_0 ctx->mark_chains[5] -#define ASTERISK_OPENERS_intraword_mod3_1 ctx->mark_chains[6] -#define ASTERISK_OPENERS_intraword_mod3_2 ctx->mark_chains[7] -#define UNDERSCORE_OPENERS ctx->mark_chains[8] -#define TILDE_OPENERS_1 ctx->mark_chains[9] -#define TILDE_OPENERS_2 ctx->mark_chains[10] -#define BRACKET_OPENERS ctx->mark_chains[11] -#define DOLLAR_OPENERS ctx->mark_chains[12] +#define PTR_CHAIN (ctx->mark_chains[0]) +#define TABLECELLBOUNDARIES (ctx->mark_chains[1]) +#define ASTERISK_OPENERS_extraword_mod3_0 (ctx->mark_chains[2]) +#define ASTERISK_OPENERS_extraword_mod3_1 (ctx->mark_chains[3]) +#define ASTERISK_OPENERS_extraword_mod3_2 (ctx->mark_chains[4]) +#define ASTERISK_OPENERS_intraword_mod3_0 (ctx->mark_chains[5]) +#define ASTERISK_OPENERS_intraword_mod3_1 (ctx->mark_chains[6]) +#define ASTERISK_OPENERS_intraword_mod3_2 (ctx->mark_chains[7]) +#define UNDERSCORE_OPENERS (ctx->mark_chains[8]) +#define TILDE_OPENERS_1 (ctx->mark_chains[9]) +#define TILDE_OPENERS_2 (ctx->mark_chains[10]) +#define BRACKET_OPENERS (ctx->mark_chains[11]) +#define DOLLAR_OPENERS (ctx->mark_chains[12]) #define OPENERS_CHAIN_FIRST 2 #define OPENERS_CHAIN_LAST 12 @@ -273,13 +273,10 @@ #define CH(off) (ctx->text[(off)]) #define STR(off) (ctx->text + (off)) -/* Check whether the pointer points into ctx->text. */ -#define IS_INPUT_STR(ptr) (ctx->text <= (ptr) && (ptr) < (ctx->text + ctx->size)) - /* Character classification. * Note we assume ASCII compatibility of code points < 128 here. */ #define ISIN_(ch, ch_min, ch_max) ((ch_min) <= (unsigned)(ch) && (unsigned)(ch) <= (ch_max)) -#define ISANYOF_(ch, palette) (md_strchr((palette), (ch)) != NULL) +#define ISANYOF_(ch, palette) ((ch) != _T('\0') && md_strchr((palette), (ch)) != NULL) #define ISANYOF2_(ch, ch1, ch2) ((ch) == (ch1) || (ch) == (ch2)) #define ISANYOF3_(ch, ch1, ch2, ch3) ((ch) == (ch1) || (ch) == (ch2) || (ch) == (ch3)) #define ISASCII_(ch) ((unsigned)(ch) <= 127) @@ -550,22 +547,22 @@ R(0x2030,0x2043), R(0x2045,0x2051), R(0x2053,0x205e), R(0x207d,0x207e), R(0x208d,0x208e), R(0x2308,0x230b), R(0x2329,0x232a), R(0x2768,0x2775), R(0x27c5,0x27c6), R(0x27e6,0x27ef), R(0x2983,0x2998), R(0x29d8,0x29db), R(0x29fc,0x29fd), R(0x2cf9,0x2cfc), R(0x2cfe,0x2cff), S(0x2d70), - R(0x2e00,0x2e2e), R(0x2e30,0x2e4f), R(0x3001,0x3003), R(0x3008,0x3011), R(0x3014,0x301f), S(0x3030), - S(0x303d), S(0x30a0), S(0x30fb), R(0xa4fe,0xa4ff), R(0xa60d,0xa60f), S(0xa673), S(0xa67e), + R(0x2e00,0x2e2e), R(0x2e30,0x2e4f), S(0x2e52), R(0x3001,0x3003), R(0x3008,0x3011), R(0x3014,0x301f), + S(0x3030), S(0x303d), S(0x30a0), S(0x30fb), R(0xa4fe,0xa4ff), R(0xa60d,0xa60f), S(0xa673), S(0xa67e), R(0xa6f2,0xa6f7), R(0xa874,0xa877), R(0xa8ce,0xa8cf), R(0xa8f8,0xa8fa), S(0xa8fc), R(0xa92e,0xa92f), S(0xa95f), R(0xa9c1,0xa9cd), R(0xa9de,0xa9df), R(0xaa5c,0xaa5f), R(0xaade,0xaadf), R(0xaaf0,0xaaf1), S(0xabeb), R(0xfd3e,0xfd3f), R(0xfe10,0xfe19), R(0xfe30,0xfe52), R(0xfe54,0xfe61), S(0xfe63), S(0xfe68), R(0xfe6a,0xfe6b), R(0xff01,0xff03), R(0xff05,0xff0a), R(0xff0c,0xff0f), R(0xff1a,0xff1b), R(0xff1f,0xff20), R(0xff3b,0xff3d), S(0xff3f), S(0xff5b), S(0xff5d), R(0xff5f,0xff65), R(0x10100,0x10102), S(0x1039f), S(0x103d0), S(0x1056f), S(0x10857), S(0x1091f), S(0x1093f), R(0x10a50,0x10a58), S(0x10a7f), - R(0x10af0,0x10af6), R(0x10b39,0x10b3f), R(0x10b99,0x10b9c), R(0x10f55,0x10f59), R(0x11047,0x1104d), - R(0x110bb,0x110bc), R(0x110be,0x110c1), R(0x11140,0x11143), R(0x11174,0x11175), R(0x111c5,0x111c8), - S(0x111cd), S(0x111db), R(0x111dd,0x111df), R(0x11238,0x1123d), S(0x112a9), R(0x1144b,0x1144f), - S(0x1145b), S(0x1145d), S(0x114c6), R(0x115c1,0x115d7), R(0x11641,0x11643), R(0x11660,0x1166c), - R(0x1173c,0x1173e), S(0x1183b), S(0x119e2), R(0x11a3f,0x11a46), R(0x11a9a,0x11a9c), R(0x11a9e,0x11aa2), - R(0x11c41,0x11c45), R(0x11c70,0x11c71), R(0x11ef7,0x11ef8), S(0x11fff), R(0x12470,0x12474), - R(0x16a6e,0x16a6f), S(0x16af5), R(0x16b37,0x16b3b), S(0x16b44), R(0x16e97,0x16e9a), S(0x16fe2), - S(0x1bc9f), R(0x1da87,0x1da8b), R(0x1e95e,0x1e95f) + R(0x10af0,0x10af6), R(0x10b39,0x10b3f), R(0x10b99,0x10b9c), S(0x10ead), R(0x10f55,0x10f59), + R(0x11047,0x1104d), R(0x110bb,0x110bc), R(0x110be,0x110c1), R(0x11140,0x11143), R(0x11174,0x11175), + R(0x111c5,0x111c8), S(0x111cd), S(0x111db), R(0x111dd,0x111df), R(0x11238,0x1123d), S(0x112a9), + R(0x1144b,0x1144f), R(0x1145a,0x1145b), S(0x1145d), S(0x114c6), R(0x115c1,0x115d7), R(0x11641,0x11643), + R(0x11660,0x1166c), R(0x1173c,0x1173e), S(0x1183b), R(0x11944,0x11946), S(0x119e2), R(0x11a3f,0x11a46), + R(0x11a9a,0x11a9c), R(0x11a9e,0x11aa2), R(0x11c41,0x11c45), R(0x11c70,0x11c71), R(0x11ef7,0x11ef8), + S(0x11fff), R(0x12470,0x12474), R(0x16a6e,0x16a6f), S(0x16af5), R(0x16b37,0x16b3b), S(0x16b44), + R(0x16e97,0x16e9a), S(0x16fe2), S(0x1bc9f), R(0x1da87,0x1da8b), R(0x1e95e,0x1e95f) }; #undef R #undef S @@ -588,52 +585,56 @@ static const unsigned FOLD_MAP_1[] = { R(0x0041,0x005a), S(0x00b5), R(0x00c0,0x00d6), R(0x00d8,0x00de), R(0x0100,0x012e), R(0x0132,0x0136), R(0x0139,0x0147), R(0x014a,0x0176), S(0x0178), R(0x0179,0x017d), S(0x017f), S(0x0181), S(0x0182), - S(0x0186), S(0x0187), S(0x0189), S(0x018b), S(0x018e), S(0x018f), S(0x0190), S(0x0191), S(0x0193), - S(0x0194), S(0x0196), S(0x0197), S(0x0198), S(0x019c), S(0x019d), S(0x019f), R(0x01a0,0x01a4), S(0x01a6), - S(0x01a7), S(0x01a9), S(0x01ac), S(0x01ae), S(0x01af), S(0x01b1), S(0x01b3), S(0x01b7), S(0x01b8), - S(0x01bc), S(0x01c4), S(0x01c5), S(0x01c7), S(0x01c8), S(0x01ca), R(0x01cb,0x01db), R(0x01de,0x01ee), - S(0x01f1), S(0x01f2), S(0x01f6), S(0x01f7), R(0x01f8,0x021e), S(0x0220), R(0x0222,0x0232), S(0x023a), - S(0x023b), S(0x023d), S(0x023e), S(0x0241), S(0x0243), S(0x0244), S(0x0245), R(0x0246,0x024e), S(0x0345), - S(0x0370), S(0x0376), S(0x037f), S(0x0386), R(0x0388,0x038a), S(0x038c), S(0x038e), R(0x0391,0x03a1), - R(0x03a3,0x03ab), S(0x03c2), S(0x03cf), S(0x03d0), S(0x03d1), S(0x03d5), S(0x03d6), R(0x03d8,0x03ee), - S(0x03f0), S(0x03f1), S(0x03f4), S(0x03f5), S(0x03f7), S(0x03f9), S(0x03fa), R(0x03fd,0x03ff), - R(0x0400,0x040f), R(0x0410,0x042f), R(0x0460,0x0480), R(0x048a,0x04be), S(0x04c0), R(0x04c1,0x04cd), - R(0x04d0,0x052e), R(0x0531,0x0556), R(0x10a0,0x10c5), S(0x10c7), S(0x10cd), R(0x13f8,0x13fd), S(0x1c80), - S(0x1c81), S(0x1c82), S(0x1c83), S(0x1c85), S(0x1c86), S(0x1c87), S(0x1c88), R(0x1c90,0x1cba), + S(0x0184), S(0x0186), S(0x0187), S(0x0189), S(0x018a), S(0x018b), S(0x018e), S(0x018f), S(0x0190), + S(0x0191), S(0x0193), S(0x0194), S(0x0196), S(0x0197), S(0x0198), S(0x019c), S(0x019d), S(0x019f), + R(0x01a0,0x01a4), S(0x01a6), S(0x01a7), S(0x01a9), S(0x01ac), S(0x01ae), S(0x01af), S(0x01b1), S(0x01b2), + S(0x01b3), S(0x01b5), S(0x01b7), S(0x01b8), S(0x01bc), S(0x01c4), S(0x01c5), S(0x01c7), S(0x01c8), + S(0x01ca), R(0x01cb,0x01db), R(0x01de,0x01ee), S(0x01f1), S(0x01f2), S(0x01f4), S(0x01f6), S(0x01f7), + R(0x01f8,0x021e), S(0x0220), R(0x0222,0x0232), S(0x023a), S(0x023b), S(0x023d), S(0x023e), S(0x0241), + S(0x0243), S(0x0244), S(0x0245), R(0x0246,0x024e), S(0x0345), S(0x0370), S(0x0372), S(0x0376), S(0x037f), + S(0x0386), R(0x0388,0x038a), S(0x038c), S(0x038e), S(0x038f), R(0x0391,0x03a1), R(0x03a3,0x03ab), + S(0x03c2), S(0x03cf), S(0x03d0), S(0x03d1), S(0x03d5), S(0x03d6), R(0x03d8,0x03ee), S(0x03f0), S(0x03f1), + S(0x03f4), S(0x03f5), S(0x03f7), S(0x03f9), S(0x03fa), R(0x03fd,0x03ff), R(0x0400,0x040f), + R(0x0410,0x042f), R(0x0460,0x0480), R(0x048a,0x04be), S(0x04c0), R(0x04c1,0x04cd), R(0x04d0,0x052e), + R(0x0531,0x0556), R(0x10a0,0x10c5), S(0x10c7), S(0x10cd), R(0x13f8,0x13fd), S(0x1c80), S(0x1c81), + S(0x1c82), S(0x1c83), S(0x1c84), S(0x1c85), S(0x1c86), S(0x1c87), S(0x1c88), R(0x1c90,0x1cba), R(0x1cbd,0x1cbf), R(0x1e00,0x1e94), S(0x1e9b), R(0x1ea0,0x1efe), R(0x1f08,0x1f0f), R(0x1f18,0x1f1d), R(0x1f28,0x1f2f), R(0x1f38,0x1f3f), R(0x1f48,0x1f4d), S(0x1f59), S(0x1f5b), S(0x1f5d), S(0x1f5f), - R(0x1f68,0x1f6f), S(0x1fb8), S(0x1fba), S(0x1fbe), R(0x1fc8,0x1fcb), S(0x1fd8), S(0x1fda), S(0x1fe8), - S(0x1fea), S(0x1fec), S(0x1ff8), S(0x1ffa), S(0x2126), S(0x212a), S(0x212b), S(0x2132), R(0x2160,0x216f), - S(0x2183), R(0x24b6,0x24cf), R(0x2c00,0x2c2e), S(0x2c60), S(0x2c62), S(0x2c63), S(0x2c64), - R(0x2c67,0x2c6b), S(0x2c6d), S(0x2c6e), S(0x2c6f), S(0x2c70), S(0x2c72), S(0x2c75), S(0x2c7e), - R(0x2c80,0x2ce2), S(0x2ceb), S(0x2cf2), R(0xa640,0xa66c), R(0xa680,0xa69a), R(0xa722,0xa72e), - R(0xa732,0xa76e), S(0xa779), S(0xa77d), R(0xa77e,0xa786), S(0xa78b), S(0xa78d), S(0xa790), + R(0x1f68,0x1f6f), S(0x1fb8), S(0x1fb9), S(0x1fba), S(0x1fbb), S(0x1fbe), R(0x1fc8,0x1fcb), S(0x1fd8), + S(0x1fd9), S(0x1fda), S(0x1fdb), S(0x1fe8), S(0x1fe9), S(0x1fea), S(0x1feb), S(0x1fec), S(0x1ff8), + S(0x1ff9), S(0x1ffa), S(0x1ffb), S(0x2126), S(0x212a), S(0x212b), S(0x2132), R(0x2160,0x216f), S(0x2183), + R(0x24b6,0x24cf), R(0x2c00,0x2c2e), S(0x2c60), S(0x2c62), S(0x2c63), S(0x2c64), R(0x2c67,0x2c6b), + S(0x2c6d), S(0x2c6e), S(0x2c6f), S(0x2c70), S(0x2c72), S(0x2c75), S(0x2c7e), S(0x2c7f), R(0x2c80,0x2ce2), + S(0x2ceb), S(0x2ced), S(0x2cf2), R(0xa640,0xa66c), R(0xa680,0xa69a), R(0xa722,0xa72e), R(0xa732,0xa76e), + S(0xa779), S(0xa77b), S(0xa77d), R(0xa77e,0xa786), S(0xa78b), S(0xa78d), S(0xa790), S(0xa792), R(0xa796,0xa7a8), S(0xa7aa), S(0xa7ab), S(0xa7ac), S(0xa7ad), S(0xa7ae), S(0xa7b0), S(0xa7b1), S(0xa7b2), - S(0xa7b3), R(0xa7b4,0xa7be), S(0xa7c2), S(0xa7c4), S(0xa7c5), S(0xa7c6), R(0xab70,0xabbf), - R(0xff21,0xff3a), R(0x10400,0x10427), R(0x104b0,0x104d3), R(0x10c80,0x10cb2), R(0x118a0,0x118bf), - R(0x16e40,0x16e5f), R(0x1e900,0x1e921) + S(0xa7b3), R(0xa7b4,0xa7be), S(0xa7c2), S(0xa7c4), S(0xa7c5), S(0xa7c6), S(0xa7c7), S(0xa7c9), S(0xa7f5), + R(0xab70,0xabbf), R(0xff21,0xff3a), R(0x10400,0x10427), R(0x104b0,0x104d3), R(0x10c80,0x10cb2), + R(0x118a0,0x118bf), R(0x16e40,0x16e5f), R(0x1e900,0x1e921) }; static const unsigned FOLD_MAP_1_DATA[] = { 0x0061, 0x007a, 0x03bc, 0x00e0, 0x00f6, 0x00f8, 0x00fe, 0x0101, 0x012f, 0x0133, 0x0137, 0x013a, 0x0148, - 0x014b, 0x0177, 0x00ff, 0x017a, 0x017e, 0x0073, 0x0253, 0x0183, 0x0254, 0x0188, 0x0256, 0x018c, 0x01dd, - 0x0259, 0x025b, 0x0192, 0x0260, 0x0263, 0x0269, 0x0268, 0x0199, 0x026f, 0x0272, 0x0275, 0x01a1, 0x01a5, - 0x0280, 0x01a8, 0x0283, 0x01ad, 0x0288, 0x01b0, 0x028a, 0x01b4, 0x0292, 0x01b9, 0x01bd, 0x01c6, 0x01c6, - 0x01c9, 0x01c9, 0x01cc, 0x01cc, 0x01dc, 0x01df, 0x01ef, 0x01f3, 0x01f3, 0x0195, 0x01bf, 0x01f9, 0x021f, - 0x019e, 0x0223, 0x0233, 0x2c65, 0x023c, 0x019a, 0x2c66, 0x0242, 0x0180, 0x0289, 0x028c, 0x0247, 0x024f, - 0x03b9, 0x0371, 0x0377, 0x03f3, 0x03ac, 0x03ad, 0x03af, 0x03cc, 0x03cd, 0x03b1, 0x03c1, 0x03c3, 0x03cb, - 0x03c3, 0x03d7, 0x03b2, 0x03b8, 0x03c6, 0x03c0, 0x03d9, 0x03ef, 0x03ba, 0x03c1, 0x03b8, 0x03b5, 0x03f8, - 0x03f2, 0x03fb, 0x037b, 0x037d, 0x0450, 0x045f, 0x0430, 0x044f, 0x0461, 0x0481, 0x048b, 0x04bf, 0x04cf, - 0x04c2, 0x04ce, 0x04d1, 0x052f, 0x0561, 0x0586, 0x2d00, 0x2d25, 0x2d27, 0x2d2d, 0x13f0, 0x13f5, 0x0432, - 0x0434, 0x043e, 0x0441, 0x0442, 0x044a, 0x0463, 0xa64b, 0x10d0, 0x10fa, 0x10fd, 0x10ff, 0x1e01, 0x1e95, - 0x1e61, 0x1ea1, 0x1eff, 0x1f00, 0x1f07, 0x1f10, 0x1f15, 0x1f20, 0x1f27, 0x1f30, 0x1f37, 0x1f40, 0x1f45, - 0x1f51, 0x1f53, 0x1f55, 0x1f57, 0x1f60, 0x1f67, 0x1fb0, 0x1f70, 0x03b9, 0x1f72, 0x1f75, 0x1fd0, 0x1f76, - 0x1fe0, 0x1f7a, 0x1fe5, 0x1f78, 0x1f7c, 0x03c9, 0x006b, 0x00e5, 0x214e, 0x2170, 0x217f, 0x2184, 0x24d0, - 0x24e9, 0x2c30, 0x2c5e, 0x2c61, 0x026b, 0x1d7d, 0x027d, 0x2c68, 0x2c6c, 0x0251, 0x0271, 0x0250, 0x0252, - 0x2c73, 0x2c76, 0x023f, 0x2c81, 0x2ce3, 0x2cec, 0x2cf3, 0xa641, 0xa66d, 0xa681, 0xa69b, 0xa723, 0xa72f, - 0xa733, 0xa76f, 0xa77a, 0x1d79, 0xa77f, 0xa787, 0xa78c, 0x0265, 0xa791, 0xa797, 0xa7a9, 0x0266, 0x025c, - 0x0261, 0x026c, 0x026a, 0x029e, 0x0287, 0x029d, 0xab53, 0xa7b5, 0xa7bf, 0xa7c3, 0xa794, 0x0282, 0x1d8e, - 0x13a0, 0x13ef, 0xff41, 0xff5a, 0x10428, 0x1044f, 0x104d8, 0x104fb, 0x10cc0, 0x10cf2, 0x118c0, 0x118df, - 0x16e60, 0x16e7f, 0x1e922, 0x1e943 + 0x014b, 0x0177, 0x00ff, 0x017a, 0x017e, 0x0073, 0x0253, 0x0183, 0x0185, 0x0254, 0x0188, 0x0256, 0x0257, + 0x018c, 0x01dd, 0x0259, 0x025b, 0x0192, 0x0260, 0x0263, 0x0269, 0x0268, 0x0199, 0x026f, 0x0272, 0x0275, + 0x01a1, 0x01a5, 0x0280, 0x01a8, 0x0283, 0x01ad, 0x0288, 0x01b0, 0x028a, 0x028b, 0x01b4, 0x01b6, 0x0292, + 0x01b9, 0x01bd, 0x01c6, 0x01c6, 0x01c9, 0x01c9, 0x01cc, 0x01cc, 0x01dc, 0x01df, 0x01ef, 0x01f3, 0x01f3, + 0x01f5, 0x0195, 0x01bf, 0x01f9, 0x021f, 0x019e, 0x0223, 0x0233, 0x2c65, 0x023c, 0x019a, 0x2c66, 0x0242, + 0x0180, 0x0289, 0x028c, 0x0247, 0x024f, 0x03b9, 0x0371, 0x0373, 0x0377, 0x03f3, 0x03ac, 0x03ad, 0x03af, + 0x03cc, 0x03cd, 0x03ce, 0x03b1, 0x03c1, 0x03c3, 0x03cb, 0x03c3, 0x03d7, 0x03b2, 0x03b8, 0x03c6, 0x03c0, + 0x03d9, 0x03ef, 0x03ba, 0x03c1, 0x03b8, 0x03b5, 0x03f8, 0x03f2, 0x03fb, 0x037b, 0x037d, 0x0450, 0x045f, + 0x0430, 0x044f, 0x0461, 0x0481, 0x048b, 0x04bf, 0x04cf, 0x04c2, 0x04ce, 0x04d1, 0x052f, 0x0561, 0x0586, + 0x2d00, 0x2d25, 0x2d27, 0x2d2d, 0x13f0, 0x13f5, 0x0432, 0x0434, 0x043e, 0x0441, 0x0442, 0x0442, 0x044a, + 0x0463, 0xa64b, 0x10d0, 0x10fa, 0x10fd, 0x10ff, 0x1e01, 0x1e95, 0x1e61, 0x1ea1, 0x1eff, 0x1f00, 0x1f07, + 0x1f10, 0x1f15, 0x1f20, 0x1f27, 0x1f30, 0x1f37, 0x1f40, 0x1f45, 0x1f51, 0x1f53, 0x1f55, 0x1f57, 0x1f60, + 0x1f67, 0x1fb0, 0x1fb1, 0x1f70, 0x1f71, 0x03b9, 0x1f72, 0x1f75, 0x1fd0, 0x1fd1, 0x1f76, 0x1f77, 0x1fe0, + 0x1fe1, 0x1f7a, 0x1f7b, 0x1fe5, 0x1f78, 0x1f79, 0x1f7c, 0x1f7d, 0x03c9, 0x006b, 0x00e5, 0x214e, 0x2170, + 0x217f, 0x2184, 0x24d0, 0x24e9, 0x2c30, 0x2c5e, 0x2c61, 0x026b, 0x1d7d, 0x027d, 0x2c68, 0x2c6c, 0x0251, + 0x0271, 0x0250, 0x0252, 0x2c73, 0x2c76, 0x023f, 0x0240, 0x2c81, 0x2ce3, 0x2cec, 0x2cee, 0x2cf3, 0xa641, + 0xa66d, 0xa681, 0xa69b, 0xa723, 0xa72f, 0xa733, 0xa76f, 0xa77a, 0xa77c, 0x1d79, 0xa77f, 0xa787, 0xa78c, + 0x0265, 0xa791, 0xa793, 0xa797, 0xa7a9, 0x0266, 0x025c, 0x0261, 0x026c, 0x026a, 0x029e, 0x0287, 0x029d, + 0xab53, 0xa7b5, 0xa7bf, 0xa7c3, 0xa794, 0x0282, 0x1d8e, 0xa7c8, 0xa7ca, 0xa7f6, 0x13a0, 0x13ef, 0xff41, + 0xff5a, 0x10428, 0x1044f, 0x104d8, 0x104fb, 0x10cc0, 0x10cf2, 0x118c0, 0x118df, 0x16e60, 0x16e7f, 0x1e922, + 0x1e943 }; static const unsigned FOLD_MAP_2[] = { S(0x00df), S(0x0130), S(0x0149), S(0x01f0), S(0x0587), S(0x1e96), S(0x1e97), S(0x1e98), S(0x1e99), @@ -1495,6 +1496,8 @@ SZ title_size; OFF dest_beg; OFF dest_end; + unsigned char label_needs_free : 1; + unsigned char title_needs_free : 1; }; /* Label equivalence is quite complicated with regards to whitespace and case @@ -1574,8 +1577,8 @@ OFF b_off; int a_reached_end = FALSE; int b_reached_end = FALSE; - MD_UNICODE_FOLD_INFO a_fi = { 0 }; - MD_UNICODE_FOLD_INFO b_fi = { 0 }; + MD_UNICODE_FOLD_INFO a_fi = { { 0 }, 0 }; + MD_UNICODE_FOLD_INFO b_fi = { { 0 }, 0 }; OFF a_fi_off = 0; OFF b_fi_off = 0; int cmp; @@ -2074,20 +2077,18 @@ OFF label_contents_beg; OFF label_contents_end; int label_contents_line_index = -1; - int label_is_multiline; - CHAR* label = NULL; - SZ label_size; + int label_is_multiline = FALSE; OFF dest_contents_beg; OFF dest_contents_end; OFF title_contents_beg; OFF title_contents_end; int title_contents_line_index; - int title_is_multiline; + int title_is_multiline = FALSE; OFF off; int line_index = 0; int tmp_line_index; - MD_REF_DEF* def; - int ret; + MD_REF_DEF* def = NULL; + int ret = 0; /* Link label. */ if(!md_is_link_label(ctx, lines, n_lines, lines[0].beg, @@ -2138,17 +2139,7 @@ if(off < lines[line_index].end) return FALSE; - /* Construct label. */ - if(!label_is_multiline) { - label = (CHAR*) STR(label_contents_beg); - label_size = label_contents_end - label_contents_beg; - } else { - MD_CHECK(md_merge_lines_alloc(ctx, label_contents_beg, label_contents_end, - lines + label_contents_line_index, n_lines - label_contents_line_index, - _T(' '), &label, &label_size)); - } - - /* Store the reference definition. */ + /* So, it _is_ a reference definition. Remember it. */ if(ctx->n_ref_defs >= ctx->alloc_ref_defs) { MD_REF_DEF* new_defs; @@ -2163,36 +2154,42 @@ ctx->ref_defs = new_defs; } - def = &ctx->ref_defs[ctx->n_ref_defs]; memset(def, 0, sizeof(MD_REF_DEF)); - def->label = label; - def->label_size = label_size; - - def->dest_beg = dest_contents_beg; - def->dest_end = dest_contents_end; - - if(title_contents_beg >= title_contents_end) { - def->title = NULL; - def->title_size = 0; - } else if(!title_is_multiline) { - def->title = (CHAR*) STR(title_contents_beg); - def->title_size = title_contents_end - title_contents_beg; + if(label_is_multiline) { + MD_CHECK(md_merge_lines_alloc(ctx, label_contents_beg, label_contents_end, + lines + label_contents_line_index, n_lines - label_contents_line_index, + _T(' '), &def->label, &def->label_size)); + def->label_needs_free = TRUE; } else { + def->label = (CHAR*) STR(label_contents_beg); + def->label_size = label_contents_end - label_contents_beg; + } + + if(title_is_multiline) { MD_CHECK(md_merge_lines_alloc(ctx, title_contents_beg, title_contents_end, lines + title_contents_line_index, n_lines - title_contents_line_index, _T('\n'), &def->title, &def->title_size)); + def->title_needs_free = TRUE; + } else { + def->title = (CHAR*) STR(title_contents_beg); + def->title_size = title_contents_end - title_contents_beg; } + def->dest_beg = dest_contents_beg; + def->dest_end = dest_contents_end; + /* Success. */ ctx->n_ref_defs++; return line_index + 1; abort: /* Failure. */ - if(!IS_INPUT_STR(label)) - free(label); + if(def != NULL && def->label_needs_free) + free(def->label); + if(def != NULL && def->title_needs_free) + free(def->title); return ret; } @@ -2241,7 +2238,7 @@ attr->title_needs_free = FALSE; } - if(!IS_INPUT_STR(label)) + if(beg_line != end_line) free(label); ret = (def != NULL); @@ -2355,9 +2352,9 @@ for(i = 0; i < ctx->n_ref_defs; i++) { MD_REF_DEF* def = &ctx->ref_defs[i]; - if(!IS_INPUT_STR(def->label)) + if(def->label_needs_free) free(def->label); - if(!IS_INPUT_STR(def->title)) + if(def->title_needs_free) free(def->title); } @@ -2728,7 +2725,7 @@ } } -/* We limit code span marks to lower then 32 backticks. This solves the +/* We limit code span marks to lower than 32 backticks. This solves the * pathologic case of too many openers, each of different length: Their * resolving would be then O(n^2). */ #define CODESPAN_MARK_MAXLEN 32 @@ -3447,7 +3444,7 @@ is_link = TRUE; - /* We don't allow destination to be longer then 100 characters. + /* We don't allow destination to be longer than 100 characters. * Lets scan to see whether there is '|'. (If not then the whole * wiki-link has to be below the 100 characters.) */ delim_index = opener_index + 1; @@ -3550,7 +3547,7 @@ if((mark->flags & (MD_MARK_OPENER | MD_MARK_RESOLVED)) == (MD_MARK_OPENER | MD_MARK_RESOLVED)) { if(ctx->marks[mark->next].beg >= inline_link_end) { /* Cancel the link status. */ - if(!IS_INPUT_STR(attr.title)) + if(attr.title_needs_free) free(attr.title); is_link = FALSE; break; @@ -4582,9 +4579,9 @@ MD_ASSERT(indent >= 0); /* Output code indentation. */ - while(indent > (int) SIZEOF_ARRAY(indent_chunk_str)) { + while(indent > (int) indent_chunk_size) { MD_TEXT(text_type, indent_chunk_str, indent_chunk_size); - indent -= SIZEOF_ARRAY(indent_chunk_str); + indent -= indent_chunk_size; } if(indent > 0) MD_TEXT(text_type, indent_chunk_str, indent); @@ -5811,7 +5808,7 @@ #if 1 /* This is 2nd half of the hack. If the flag is set (that is there * were 2nd blank line at the start of the list item) and we would also - * belonging to such list item, then interrupt the list. */ + * belonging to such list item, than interrupt the list. */ ctx->last_line_has_list_loosening_effect = FALSE; if(ctx->last_list_item_starts_with_two_blank_lines) { if(n_parents > 0 && ctx->containers[n_parents-1].ch != _T('>') && diff -Naur a/qtbase/src/3rdparty/md4c/md4c.h b/qtbase/src/3rdparty/md4c/md4c.h --- a/qtbase/src/3rdparty/md4c/md4c.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/md4c/md4c.h 2022-01-25 17:23:44.077496531 +0000 @@ -23,15 +23,15 @@ * IN THE SOFTWARE. */ -#ifndef MD4C_MARKDOWN_H -#define MD4C_MARKDOWN_H +#ifndef MD4C_H +#define MD4C_H #ifdef __cplusplus extern "C" { #endif #if defined MD4C_USE_UTF16 - /* Magic to support UTF-16. Not that in order to use it, you have to define + /* Magic to support UTF-16. Note that in order to use it, you have to define * the macro MD4C_USE_UTF16 both when building MD4C as well as when * including this header in your code. */ #ifdef _WIN32 @@ -119,7 +119,7 @@ * Detail: Structure MD_SPAN_IMG_DETAIL. * Note: Image text can contain nested spans and even nested images. * If rendered into ALT attribute of HTML tag, it's responsibility - * of the renderer to deal with it. + * of the parser to deal with it. */ MD_SPAN_IMG, @@ -171,7 +171,7 @@ * (c) Hexadecimal entity, e.g. ካ * * As MD4C is mostly encoding agnostic, application gets the verbatim - * entity text into the MD_RENDERER::text_callback(). */ + * entity text into the MD_PARSER::text_callback(). */ MD_TEXT_ENTITY, /* Text in a code block (inside MD_BLOCK_CODE) or inlined code (`code`). @@ -206,8 +206,13 @@ * propagated within various detailed structures, but which still may contain * string portions of different types like e.g. entities. * - * So, for example, lets consider an image has a title attribute string - * set to "foo " bar". (Note the string size is 14.) + * So, for example, lets consider this image: + * + * ![image alt text](http://example.org/image.png 'foo " bar') + * + * The image alt text is propagated as a normal text via the MD_PARSER::text() + * callback. However, the image title ('foo " bar') is propagated as + * MD_ATTRIBUTE in MD_SPAN_IMG_DETAIL::title. * * Then the attribute MD_SPAN_IMG_DETAIL::title shall provide the following: * -- [0]: "foo " (substr_types[0] == MD_TEXT_NORMAL; substr_offsets[0] == 0) @@ -215,10 +220,12 @@ * -- [2]: " bar" (substr_types[2] == MD_TEXT_NORMAL; substr_offsets[2] == 10) * -- [3]: (n/a) (n/a ; substr_offsets[3] == 14) * - * Note that these conditions are guaranteed: + * Note that these invariants are always guaranteed: * -- substr_offsets[0] == 0 * -- substr_offsets[LAST+1] == size - * -- Only MD_TEXT_NORMAL, MD_TEXT_ENTITY, MD_TEXT_NULLCHAR substrings can appear. + * -- Currently, only MD_TEXT_NORMAL, MD_TEXT_ENTITY, MD_TEXT_NULLCHAR + * substrings can appear. This could change only of the specification + * changes. */ typedef struct MD_ATTRIBUTE { const MD_CHAR* text; @@ -284,7 +291,7 @@ /* Flags specifying extensions/deviations from CommonMark specification. * - * By default (when MD_RENDERER::flags == 0), we follow CommonMark specification. + * By default (when MD_PARSER::flags == 0), we follow CommonMark specification. * The following flags may allow some extensions or deviations from it. */ #define MD_FLAG_COLLAPSEWHITESPACE 0x0001 /* In MD_TEXT_NORMAL, collapse non-trivial whitespace into single ' ' */ @@ -317,7 +324,7 @@ #define MD_DIALECT_COMMONMARK 0 #define MD_DIALECT_GITHUB (MD_FLAG_PERMISSIVEAUTOLINKS | MD_FLAG_TABLES | MD_FLAG_STRIKETHROUGH | MD_FLAG_TASKLISTS) -/* Renderer structure. +/* Parser structure. */ typedef struct MD_PARSER { /* Reserved. Set to zero. @@ -338,9 +345,10 @@ * * Note any strings provided to the callbacks as their arguments or as * members of any detail structure are generally not zero-terminated. - * Application has take the respective size information into account. + * Application has to take the respective size information into account. * - * Callbacks may abort further parsing of the document by returning non-zero. + * Any rendering callback may abort further parsing of the document by + * returning non-zero. */ int (*enter_block)(MD_BLOCKTYPE /*type*/, void* /*detail*/, void* /*userdata*/); int (*leave_block)(MD_BLOCKTYPE /*type*/, void* /*detail*/, void* /*userdata*/); @@ -365,18 +373,19 @@ } MD_PARSER; -/* For backward compatibility. Do not use in new code. */ +/* For backward compatibility. Do not use in new code. + */ typedef MD_PARSER MD_RENDERER; /* Parse the Markdown document stored in the string 'text' of size 'size'. - * The renderer provides callbacks to be called during the parsing so the + * The parser provides callbacks to be called during the parsing so the * caller can render the document on the screen or convert the Markdown * to another format. * * Zero is returned on success. If a runtime error occurs (e.g. a memory * fails), -1 is returned. If the processing is aborted due any callback - * returning non-zero, md_parse() the return value of the callback is returned. + * returning non-zero, the return value of the callback is returned. */ int md_parse(const MD_CHAR* text, MD_SIZE size, const MD_PARSER* parser, void* userdata); @@ -385,4 +394,4 @@ } /* extern "C" { */ #endif -#endif /* MD4C_MARKDOWN_H */ +#endif /* MD4C_H */ diff -Naur a/qtbase/src/3rdparty/md4c/qt_attribution.json b/qtbase/src/3rdparty/md4c/qt_attribution.json --- a/qtbase/src/3rdparty/md4c/qt_attribution.json 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/md4c/qt_attribution.json 2022-01-25 17:23:44.077496531 +0000 @@ -9,7 +9,7 @@ "License": "MIT License", "LicenseId": "MIT", "LicenseFile": "LICENSE.md", - "Version": "0.4.3", - "DownloadLocation": "https://github.com/mity/md4c/releases/tag/release-0.4.3", + "Version": "0.4.6", + "DownloadLocation": "https://github.com/mity/md4c/releases/tag/release-0.4.6", "Copyright": "Copyright © 2016-2020 Martin Mitáš" } diff -Naur a/qtbase/src/3rdparty/pcre2/AUTHORS b/qtbase/src/3rdparty/pcre2/AUTHORS --- a/qtbase/src/3rdparty/pcre2/AUTHORS 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/AUTHORS 2022-01-25 17:23:44.127496352 +0000 @@ -2,8 +2,8 @@ --------------------------- Written by: Philip Hazel -Email local part: ph10 -Email domain: cam.ac.uk +Email local part: Philip.Hazel +Email domain: gmail.com University of Cambridge Computing Service, Cambridge, England. diff -Naur a/qtbase/src/3rdparty/pcre2/import_from_pcre2_tarball.sh b/qtbase/src/3rdparty/pcre2/import_from_pcre2_tarball.sh --- a/qtbase/src/3rdparty/pcre2/import_from_pcre2_tarball.sh 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/import_from_pcre2_tarball.sh 2022-01-25 17:23:44.127496352 +0000 @@ -128,14 +128,15 @@ src/sljit/sljitNativePPC_32.c src/sljit/sljitNativePPC_64.c src/sljit/sljitNativePPC_common.c + src/sljit/sljitNativeS390X.c src/sljit/sljitNativeSPARC_32.c src/sljit/sljitNativeSPARC_common.c - src/sljit/sljitNativeTILEGX_64.c - src/sljit/sljitNativeTILEGX-encoder.c src/sljit/sljitNativeX86_32.c src/sljit/sljitNativeX86_64.c src/sljit/sljitNativeX86_common.c + src/sljit/sljitProtExecAllocator.c src/sljit/sljitUtils.c + src/sljit/sljitWXExecAllocator.c " for i in $FILES; do diff -Naur a/qtbase/src/3rdparty/pcre2/LICENCE b/qtbase/src/3rdparty/pcre2/LICENCE --- a/qtbase/src/3rdparty/pcre2/LICENCE 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/LICENCE 2022-01-25 17:23:44.127496352 +0000 @@ -20,8 +20,8 @@ --------------------------- Written by: Philip Hazel -Email local part: ph10 -Email domain: cam.ac.uk +Email local part: Philip.Hazel +Email domain: gmail.com University of Cambridge Computing Service, Cambridge, England. diff -Naur a/qtbase/src/3rdparty/pcre2/patches/0001-fix-rtems-build-undefine-madvise.patch b/qtbase/src/3rdparty/pcre2/patches/0001-fix-rtems-build-undefine-madvise.patch --- a/qtbase/src/3rdparty/pcre2/patches/0001-fix-rtems-build-undefine-madvise.patch 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/patches/0001-fix-rtems-build-undefine-madvise.patch 1970-01-01 01:00:00.000000000 +0100 @@ -1,28 +0,0 @@ -From ac10063196685fe6124055feb1275e13a78f562e Mon Sep 17 00:00:00 2001 -From: Mikhail Svetkin -Date: Tue, 20 Mar 2018 14:03:54 +0100 -Subject: [PATCH] rtems: Fix pcre2 build (madvise undefined) - -RTEMS does not have madvise. We can use only posix_madvise - -Change-Id: Ia18b7cd2d7f9db84331f7e2350d060b9e85b30c8 ---- - src/3rdparty/pcre2/src/sljit/sljitUtils.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/3rdparty/pcre2/src/sljit/sljitUtils.c b/src/3rdparty/pcre2/src/sljit/sljitUtils.c -index 5c2a838932..2ead044b1b 100644 ---- a/src/3rdparty/pcre2/src/sljit/sljitUtils.c -+++ b/src/3rdparty/pcre2/src/sljit/sljitUtils.c -@@ -315,7 +315,7 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_u8 *SLJIT_FUNC sljit_stack_resize(struct sljit_st - aligned_new_start = (sljit_uw)new_start & ~sljit_page_align; - aligned_old_start = ((sljit_uw)stack->start) & ~sljit_page_align; - /* If madvise is available, we release the unnecessary space. */ --#if defined(MADV_DONTNEED) -+#if defined(MADV_DONTNEED) && !defined(__rtems__) - if (aligned_new_start > aligned_old_start) - madvise((void*)aligned_old_start, aligned_new_start - aligned_old_start, MADV_DONTNEED); - #elif defined(POSIX_MADV_DONTNEED) --- -2.21.0 - diff -Naur a/qtbase/src/3rdparty/pcre2/qt_attribution.json b/qtbase/src/3rdparty/pcre2/qt_attribution.json --- a/qtbase/src/3rdparty/pcre2/qt_attribution.json 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/qt_attribution.json 2022-01-25 17:23:44.127496352 +0000 @@ -7,8 +7,8 @@ "Description": "The PCRE library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5.", "Homepage": "http://www.pcre.org/", - "Version": "10.35", - "DownloadLocation": "https://ftp.pcre.org/pub/pcre/pcre2-10.35.tar.bz2", + "Version": "10.36", + "DownloadLocation": "https://ftp.pcre.org/pub/pcre/pcre2-10.36.tar.bz2", "License": "BSD 3-clause \"New\" or \"Revised\" License", "LicenseId": "BSD-3-Clause", "LicenseFile": "LICENCE", @@ -24,12 +24,11 @@ "Path": "src/sljit", "Description": "The PCRE library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5.", "Homepage": "http://www.pcre.org/", - "Version": "10.35", - "DownloadLocation": "https://ftp.pcre.org/pub/pcre/pcre2-10.35.tar.bz2", + "Version": "10.36", + "DownloadLocation": "https://ftp.pcre.org/pub/pcre/pcre2-10.36.tar.bz2", "License": "BSD 2-clause \"Simplified\" License", "LicenseId": "BSD-2-Clause", "LicenseFile": "LICENCE-SLJIT", - "Copyright": "Copyright (c) 2009-2020 Zoltan Herczeg -Copyright 2013-2013 Tilera Corporation(jiwang@tilera.com)" + "Copyright": "Copyright (c) 2009-2020 Zoltan Herczeg" } ] diff -Naur a/qtbase/src/3rdparty/pcre2/src/pcre2_compile.c b/qtbase/src/3rdparty/pcre2/src/pcre2_compile.c --- a/qtbase/src/3rdparty/pcre2/src/pcre2_compile.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/pcre2_compile.c 2022-01-25 17:23:44.128496348 +0000 @@ -2344,7 +2344,7 @@ *errorcodeptr = ERR48; goto FAILED; } -*namelenptr = ptr - *nameptr; +*namelenptr = (uint32_t)(ptr - *nameptr); /* Subpattern names must not be empty, and their terminator is checked here. (What follows a verb or alpha assertion name is checked separately.) */ @@ -4331,6 +4331,7 @@ { if (++ptr >= ptrend || !IS_DIGIT(*ptr)) goto BAD_VERSION_CONDITION; minor = (*ptr++ - CHAR_0) * 10; + if (ptr >= ptrend) goto BAD_VERSION_CONDITION; if (IS_DIGIT(*ptr)) minor += *ptr++ - CHAR_0; if (ptr >= ptrend || *ptr != CHAR_RIGHT_PARENTHESIS) goto BAD_VERSION_CONDITION; diff -Naur a/qtbase/src/3rdparty/pcre2/src/pcre2.h b/qtbase/src/3rdparty/pcre2/src/pcre2.h --- a/qtbase/src/3rdparty/pcre2/src/pcre2.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/pcre2.h 2022-01-25 17:23:44.127496352 +0000 @@ -42,9 +42,9 @@ /* The current PCRE version information. */ #define PCRE2_MAJOR 10 -#define PCRE2_MINOR 35 +#define PCRE2_MINOR 36 #define PCRE2_PRERELEASE -#define PCRE2_DATE 2020-05-09 +#define PCRE2_DATE 2020-12-04 /* When an application links to a PCRE DLL in Windows, the symbols that are imported have to be identified as such. When building PCRE2, the appropriate diff -Naur a/qtbase/src/3rdparty/pcre2/src/pcre2_jit_compile.c b/qtbase/src/3rdparty/pcre2/src/pcre2_jit_compile.c --- a/qtbase/src/3rdparty/pcre2/src/pcre2_jit_compile.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/pcre2_jit_compile.c 2022-01-25 17:23:44.129496345 +0000 @@ -1466,9 +1466,9 @@ default: accelerated_start = NULL; fast_forward_allowed = FALSE; - break; + continue; } - continue; + break; case OP_ONCE: case OP_BRA: @@ -1834,57 +1834,57 @@ case OP_BRAZERO: case OP_BRAMINZERO: case OP_BRAPOSZERO: - repeat_check = FALSE; size = 1; + repeat_check = FALSE; break; CASE_ITERATOR_PRIVATE_DATA_1 - space = 1; size = -2; + space = 1; break; CASE_ITERATOR_PRIVATE_DATA_2A - space = 2; size = -2; + space = 2; break; CASE_ITERATOR_PRIVATE_DATA_2B - space = 2; size = -(2 + IMM2_SIZE); + space = 2; break; CASE_ITERATOR_TYPE_PRIVATE_DATA_1 - space = 1; size = 1; + space = 1; break; CASE_ITERATOR_TYPE_PRIVATE_DATA_2A + size = 1; if (cc[1] != OP_ANYNL && cc[1] != OP_EXTUNI) space = 2; - size = 1; break; case OP_TYPEUPTO: + size = 1 + IMM2_SIZE; if (cc[1 + IMM2_SIZE] != OP_ANYNL && cc[1 + IMM2_SIZE] != OP_EXTUNI) space = 2; - size = 1 + IMM2_SIZE; break; case OP_TYPEMINUPTO: - space = 2; size = 1 + IMM2_SIZE; + space = 2; break; case OP_CLASS: case OP_NCLASS: - space = get_class_iterator_size(cc + size); size = 1 + 32 / sizeof(PCRE2_UCHAR); + space = get_class_iterator_size(cc + size); break; #if defined SUPPORT_UNICODE || PCRE2_CODE_UNIT_WIDTH != 8 case OP_XCLASS: - space = get_class_iterator_size(cc + size); size = GET(cc, 1); + space = get_class_iterator_size(cc + size); break; #endif @@ -4578,7 +4578,14 @@ /* All newlines are ascii, just skip intermediate octets. */ jump[0] = CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); loop = LABEL(); - OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(0)); + if (sljit_emit_mem(compiler, MOV_UCHAR | SLJIT_MEM_SUPP | SLJIT_MEM_POST, TMP2, SLJIT_MEM1(STR_PTR), IN_UCHARS(1)) == SLJIT_SUCCESS) + sljit_emit_mem(compiler, MOV_UCHAR | SLJIT_MEM_POST, TMP2, SLJIT_MEM1(STR_PTR), IN_UCHARS(1)); + else + { + OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(0)); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + } + OP2(SLJIT_AND, TMP2, 0, TMP2, 0, SLJIT_IMM, 0xc0); CMPTO(SLJIT_EQUAL, TMP2, 0, SLJIT_IMM, 0x80, loop); OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); @@ -6161,9 +6168,9 @@ { DEFINE_COMPILER; struct sljit_label *loop; -struct sljit_jump *lastchar; +struct sljit_jump *lastchar = NULL; struct sljit_jump *firstchar; -struct sljit_jump *quit; +struct sljit_jump *quit = NULL; struct sljit_jump *foundcr = NULL; struct sljit_jump *notfoundnl; jump_list *newline = NULL; @@ -6176,39 +6183,71 @@ if (common->nltype == NLTYPE_FIXED && common->newline > 255) { - lastchar = CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); - if (HAS_VIRTUAL_REGISTERS) +#ifdef JIT_HAS_FAST_FORWARD_CHAR_PAIR_SIMD + if (JIT_HAS_FAST_FORWARD_CHAR_PAIR_SIMD && common->mode == PCRE2_JIT_COMPLETE) { - OP1(SLJIT_MOV, TMP1, 0, ARGUMENTS, 0); - OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, str)); - OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, begin)); + if (HAS_VIRTUAL_REGISTERS) + { + OP1(SLJIT_MOV, TMP1, 0, ARGUMENTS, 0); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, str)); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, begin)); + } + else + { + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(ARGUMENTS), SLJIT_OFFSETOF(jit_arguments, str)); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(ARGUMENTS), SLJIT_OFFSETOF(jit_arguments, begin)); + } + firstchar = CMP(SLJIT_LESS_EQUAL, STR_PTR, 0, TMP2, 0); + + OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + OP2(SLJIT_SUB | SLJIT_SET_Z, SLJIT_UNUSED, 0, STR_PTR, 0, TMP1, 0); + OP_FLAGS(SLJIT_MOV, TMP1, 0, SLJIT_NOT_EQUAL); +#if PCRE2_CODE_UNIT_WIDTH == 16 || PCRE2_CODE_UNIT_WIDTH == 32 + OP2(SLJIT_SHL, TMP1, 0, TMP1, 0, SLJIT_IMM, UCHAR_SHIFT); +#endif + OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, TMP1, 0); + + fast_forward_char_pair_simd(common, 1, common->newline & 0xff, common->newline & 0xff, 0, (common->newline >> 8) & 0xff, (common->newline >> 8) & 0xff); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(2)); } else +#endif /* JIT_HAS_FAST_FORWARD_CHAR_PAIR_SIMD */ { - OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(ARGUMENTS), SLJIT_OFFSETOF(jit_arguments, str)); - OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(ARGUMENTS), SLJIT_OFFSETOF(jit_arguments, begin)); - } - firstchar = CMP(SLJIT_LESS_EQUAL, STR_PTR, 0, TMP2, 0); + lastchar = CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); + if (HAS_VIRTUAL_REGISTERS) + { + OP1(SLJIT_MOV, TMP1, 0, ARGUMENTS, 0); + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, str)); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(TMP1), SLJIT_OFFSETOF(jit_arguments, begin)); + } + else + { + OP1(SLJIT_MOV, TMP2, 0, SLJIT_MEM1(ARGUMENTS), SLJIT_OFFSETOF(jit_arguments, str)); + OP1(SLJIT_MOV, TMP1, 0, SLJIT_MEM1(ARGUMENTS), SLJIT_OFFSETOF(jit_arguments, begin)); + } + firstchar = CMP(SLJIT_LESS_EQUAL, STR_PTR, 0, TMP2, 0); - OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, IN_UCHARS(2)); - OP2(SLJIT_SUB | SLJIT_SET_GREATER_EQUAL, SLJIT_UNUSED, 0, STR_PTR, 0, TMP1, 0); - OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_GREATER_EQUAL); + OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, SLJIT_IMM, IN_UCHARS(2)); + OP2(SLJIT_SUB | SLJIT_SET_GREATER_EQUAL, SLJIT_UNUSED, 0, STR_PTR, 0, TMP1, 0); + OP_FLAGS(SLJIT_MOV, TMP2, 0, SLJIT_GREATER_EQUAL); #if PCRE2_CODE_UNIT_WIDTH == 16 || PCRE2_CODE_UNIT_WIDTH == 32 - OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, UCHAR_SHIFT); + OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, UCHAR_SHIFT); #endif - OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, TMP2, 0); + OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, TMP2, 0); - loop = LABEL(); - OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); - quit = CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); - OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(-2)); - OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(-1)); - CMPTO(SLJIT_NOT_EQUAL, TMP1, 0, SLJIT_IMM, (common->newline >> 8) & 0xff, loop); - CMPTO(SLJIT_NOT_EQUAL, TMP2, 0, SLJIT_IMM, common->newline & 0xff, loop); + loop = LABEL(); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + quit = CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(-2)); + OP1(MOV_UCHAR, TMP2, 0, SLJIT_MEM1(STR_PTR), IN_UCHARS(-1)); + CMPTO(SLJIT_NOT_EQUAL, TMP1, 0, SLJIT_IMM, (common->newline >> 8) & 0xff, loop); + CMPTO(SLJIT_NOT_EQUAL, TMP2, 0, SLJIT_IMM, common->newline & 0xff, loop); + + JUMPHERE(quit); + JUMPHERE(lastchar); + } - JUMPHERE(quit); JUMPHERE(firstchar); - JUMPHERE(lastchar); if (common->match_end_ptr != 0) OP1(SLJIT_MOV, STR_END, 0, TMP3, 0); @@ -6225,22 +6264,59 @@ /* Example: match /^/ to \r\n from offset 1. */ firstchar = CMP(SLJIT_LESS_EQUAL, STR_PTR, 0, TMP2, 0); -move_back(common, NULL, FALSE); + +if (common->nltype == NLTYPE_ANY) + move_back(common, NULL, FALSE); +else + OP2(SLJIT_SUB, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); loop = LABEL(); common->ff_newline_shortcut = loop; -read_char(common, common->nlmin, common->nlmax, NULL, READ_CHAR_NEWLINE); -lastchar = CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); -if (common->nltype == NLTYPE_ANY || common->nltype == NLTYPE_ANYCRLF) - foundcr = CMP(SLJIT_EQUAL, TMP1, 0, SLJIT_IMM, CHAR_CR); -check_newlinechar(common, common->nltype, &newline, FALSE); -set_jumps(newline, loop); +#ifdef JIT_HAS_FAST_FORWARD_CHAR_SIMD +if (JIT_HAS_FAST_FORWARD_CHAR_SIMD && (common->nltype == NLTYPE_FIXED || common->nltype == NLTYPE_ANYCRLF)) + { + if (common->nltype == NLTYPE_ANYCRLF) + { + fast_forward_char_simd(common, CHAR_CR, CHAR_LF, 0); + if (common->mode != PCRE2_JIT_COMPLETE) + lastchar = CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); + + OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), 0); + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + quit = CMP(SLJIT_NOT_EQUAL, TMP1, 0, SLJIT_IMM, CHAR_CR); + } + else + { + fast_forward_char_simd(common, common->newline, common->newline, 0); + + OP2(SLJIT_ADD, STR_PTR, 0, STR_PTR, 0, SLJIT_IMM, IN_UCHARS(1)); + if (common->mode != PCRE2_JIT_COMPLETE) + { + OP2(SLJIT_SUB | SLJIT_SET_GREATER, SLJIT_UNUSED, 0, STR_PTR, 0, STR_END, 0); + CMOV(SLJIT_GREATER, STR_PTR, STR_END, 0); + } + } + } +else +#endif /* JIT_HAS_FAST_FORWARD_CHAR_SIMD */ + { + read_char(common, common->nlmin, common->nlmax, NULL, READ_CHAR_NEWLINE); + lastchar = CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); + if (common->nltype == NLTYPE_ANY || common->nltype == NLTYPE_ANYCRLF) + foundcr = CMP(SLJIT_EQUAL, TMP1, 0, SLJIT_IMM, CHAR_CR); + check_newlinechar(common, common->nltype, &newline, FALSE); + set_jumps(newline, loop); + } if (common->nltype == NLTYPE_ANY || common->nltype == NLTYPE_ANYCRLF) { - quit = JUMP(SLJIT_JUMP); - JUMPHERE(foundcr); + if (quit == NULL) + { + quit = JUMP(SLJIT_JUMP); + JUMPHERE(foundcr); + } + notfoundnl = CMP(SLJIT_GREATER_EQUAL, STR_PTR, 0, STR_END, 0); OP1(MOV_UCHAR, TMP1, 0, SLJIT_MEM1(STR_PTR), 0); OP2(SLJIT_SUB | SLJIT_SET_Z, SLJIT_UNUSED, 0, TMP1, 0, SLJIT_IMM, CHAR_NL); @@ -6252,7 +6328,9 @@ JUMPHERE(notfoundnl); JUMPHERE(quit); } -JUMPHERE(lastchar); + +if (lastchar) + JUMPHERE(lastchar); JUMPHERE(firstchar); if (common->match_end_ptr != 0) @@ -6493,9 +6571,11 @@ if (common->mode != PCRE2_JIT_COMPLETE) { + OP1(SLJIT_MOV, RETURN_ADDR, 0, TMP1, 0); OP1(SLJIT_MOV, TMP2, 0, STR_PTR, 0); move_back(common, NULL, TRUE); check_start_used_ptr(common); + OP1(SLJIT_MOV, TMP1, 0, RETURN_ADDR, 0); OP1(SLJIT_MOV, STR_PTR, 0, TMP2, 0); } } @@ -7594,25 +7674,43 @@ } cc = ccbegin; - } - if (needschar) - OP1(SLJIT_MOV, TMP1, 0, RETURN_ADDR, 0); + if (needstype) + { + /* TMP2 has already been shifted by 2 */ + if (!needschar) + { + OP2(SLJIT_ADD, TMP1, 0, TMP2, 0, TMP2, 0); + OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, TMP2, 0); - if (needstype) + OP1(SLJIT_MOV_U8, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)PRIV(ucd_records) + SLJIT_OFFSETOF(ucd_record, chartype)); + } + else + { + OP2(SLJIT_ADD, TMP1, 0, TMP2, 0, TMP2, 0); + OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, TMP1, 0); + + OP1(SLJIT_MOV, TMP1, 0, RETURN_ADDR, 0); + OP1(SLJIT_MOV_U8, RETURN_ADDR, 0, SLJIT_MEM1(TMP2), (sljit_sw)PRIV(ucd_records) + SLJIT_OFFSETOF(ucd_record, chartype)); + typereg = RETURN_ADDR; + } + } + else if (needschar) + OP1(SLJIT_MOV, TMP1, 0, RETURN_ADDR, 0); + } + else if (needstype) { + OP2(SLJIT_SHL, TMP1, 0, TMP2, 0, SLJIT_IMM, 3); + OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 2); + if (!needschar) { - OP2(SLJIT_SHL, TMP1, 0, TMP2, 0, SLJIT_IMM, 3); - OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 2); OP2(SLJIT_ADD, TMP1, 0, TMP1, 0, TMP2, 0); OP1(SLJIT_MOV_U8, TMP1, 0, SLJIT_MEM1(TMP1), (sljit_sw)PRIV(ucd_records) + SLJIT_OFFSETOF(ucd_record, chartype)); } else { - OP2(SLJIT_SHL, TMP1, 0, TMP2, 0, SLJIT_IMM, 2); - OP2(SLJIT_SHL, TMP2, 0, TMP2, 0, SLJIT_IMM, 3); OP2(SLJIT_ADD, TMP2, 0, TMP2, 0, TMP1, 0); OP1(SLJIT_MOV, TMP1, 0, RETURN_ADDR, 0); @@ -7620,6 +7718,8 @@ typereg = RETURN_ADDR; } } + else if (needschar) + OP1(SLJIT_MOV, TMP1, 0, RETURN_ADDR, 0); } #endif /* SUPPORT_UNICODE */ @@ -13581,7 +13681,7 @@ set_then_offsets(common, common->start, NULL); } -compiler = sljit_create_compiler(allocator_data); +compiler = sljit_create_compiler(allocator_data, NULL); if (!compiler) { SLJIT_FREE(common->optimized_cbracket, allocator_data); @@ -13983,7 +14083,7 @@ { /* This case is highly unlikely since we just recently freed a lot of memory. Not impossible though. */ - sljit_free_code(executable_func); + sljit_free_code(executable_func, NULL); PRIV(jit_free_rodata)(common->read_only_data_head, allocator_data); return PCRE2_ERROR_NOMEMORY; } @@ -14097,13 +14197,13 @@ /* Checks whether the executable allocator is working. This check might run multiple times in multi-threaded environments, but the result should not be affected by it. */ - void *ptr = SLJIT_MALLOC_EXEC(32); + void *ptr = SLJIT_MALLOC_EXEC(32, NULL); executable_allocator_is_working = -1; if (ptr != NULL) { - SLJIT_FREE_EXEC(((sljit_u8*)(ptr)) + SLJIT_EXEC_OFFSET(ptr)); + SLJIT_FREE_EXEC(((sljit_u8*)(ptr)) + SLJIT_EXEC_OFFSET(ptr), NULL); executable_allocator_is_working = 1; } } diff -Naur a/qtbase/src/3rdparty/pcre2/src/pcre2_jit_misc.c b/qtbase/src/3rdparty/pcre2/src/pcre2_jit_misc.c --- a/qtbase/src/3rdparty/pcre2/src/pcre2_jit_misc.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/pcre2_jit_misc.c 2022-01-25 17:23:44.129496345 +0000 @@ -89,7 +89,7 @@ for (i = 0; i < JIT_NUMBER_OF_COMPILE_MODES; i++) { if (functions->executable_funcs[i] != NULL) - sljit_free_code(functions->executable_funcs[i]); + sljit_free_code(functions->executable_funcs[i], NULL); PRIV(jit_free_rodata)(functions->read_only_data_heads[i], allocator_data); } diff -Naur a/qtbase/src/3rdparty/pcre2/src/pcre2_jit_neon_inc.h b/qtbase/src/3rdparty/pcre2/src/pcre2_jit_neon_inc.h --- a/qtbase/src/3rdparty/pcre2/src/pcre2_jit_neon_inc.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/pcre2_jit_neon_inc.h 2022-01-25 17:23:44.129496345 +0000 @@ -87,6 +87,10 @@ { quad_word qw; int_char ic; + +SLJIT_UNUSED_ARG(offs1); +SLJIT_UNUSED_ARG(offs2); + ic.x = chars; #if defined(FFCS) diff -Naur a/qtbase/src/3rdparty/pcre2/src/pcre2_match.c b/qtbase/src/3rdparty/pcre2/src/pcre2_match.c --- a/qtbase/src/3rdparty/pcre2/src/pcre2_match.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/pcre2_match.c 2022-01-25 17:23:44.129496345 +0000 @@ -6115,8 +6115,8 @@ BOOL startline; #if PCRE2_CODE_UNIT_WIDTH == 8 -BOOL memchr_not_found_first_cu = FALSE; -BOOL memchr_not_found_first_cu2 = FALSE; +BOOL memchr_not_found_first_cu; +BOOL memchr_not_found_first_cu2; #endif PCRE2_UCHAR first_cu = 0; @@ -6709,6 +6709,11 @@ start_partial = match_partial = NULL; mb->hitend = FALSE; +#if PCRE2_CODE_UNIT_WIDTH == 8 +memchr_not_found_first_cu = FALSE; +memchr_not_found_first_cu2 = FALSE; +#endif + for(;;) { PCRE2_SPTR new_start_match; @@ -7187,6 +7192,7 @@ starting code units in 8-bit and 16-bit modes. */ start_match = end_subject + 1; + #if PCRE2_CODE_UNIT_WIDTH != 32 while (start_match < true_end_subject && NOT_FIRSTCU(*start_match)) start_match++; diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitConfig.h b/qtbase/src/3rdparty/pcre2/src/sljit/sljitConfig.h --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitConfig.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitConfig.h 2022-01-25 17:23:44.130496341 +0000 @@ -24,19 +24,19 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef _SLJIT_CONFIG_H_ -#define _SLJIT_CONFIG_H_ +#ifndef SLJIT_CONFIG_H_ +#define SLJIT_CONFIG_H_ #ifdef __cplusplus extern "C" { #endif -/* --------------------------------------------------------------------- */ -/* Custom defines */ -/* --------------------------------------------------------------------- */ - -/* Put your custom defines here. This empty section will never change - which helps maintaining patches (with diff / patch utilities). */ +/* + This file contains the basic configuration options for the SLJIT compiler + and their default values. These options can be overridden in the + sljitConfigPre.h header file when SLJIT_HAVE_CONFIG_PRE is set to a + non-zero value. +*/ /* --------------------------------------------------------------------- */ /* Architecture */ @@ -54,7 +54,7 @@ /* #define SLJIT_CONFIG_MIPS_32 1 */ /* #define SLJIT_CONFIG_MIPS_64 1 */ /* #define SLJIT_CONFIG_SPARC_32 1 */ -/* #define SLJIT_CONFIG_TILEGX 1 */ +/* #define SLJIT_CONFIG_S390X 1 */ /* #define SLJIT_CONFIG_AUTO 1 */ /* #define SLJIT_CONFIG_UNSUPPORTED 1 */ @@ -63,12 +63,6 @@ /* Utilities */ /* --------------------------------------------------------------------- */ -/* Useful for thread-safe compiling of global functions. */ -#ifndef SLJIT_UTIL_GLOBAL_LOCK -/* Enabled by default */ -#define SLJIT_UTIL_GLOBAL_LOCK 1 -#endif - /* Implements a stack like data structure (by using mmap / VirtualAlloc */ /* or a custom allocator). */ #ifndef SLJIT_UTIL_STACK @@ -108,15 +102,31 @@ /* When SLJIT_PROT_EXECUTABLE_ALLOCATOR is enabled SLJIT uses an allocator which does not set writable and executable - permission flags at the same time. The trade-of is increased - memory consumption and disabled dynamic code modifications. */ + permission flags at the same time. + Instead, it creates a shared memory segment (usually backed by a file) + and maps it twice, with different permissions, depending on the use + case. + The trade-off is increased use of virtual memory, incompatibility with + fork(), and some possible additional security risks by the use of + publicly accessible files for the generated code. */ #ifndef SLJIT_PROT_EXECUTABLE_ALLOCATOR /* Disabled by default. */ #define SLJIT_PROT_EXECUTABLE_ALLOCATOR 0 #endif +/* When SLJIT_WX_EXECUTABLE_ALLOCATOR is enabled SLJIT uses an + allocator which does not set writable and executable permission + flags at the same time. + Instead, it creates a new independent map on each invocation and + switches permissions at the underlying pages as needed. + The trade-off is increased memory use and degraded performance. */ +#ifndef SLJIT_WX_EXECUTABLE_ALLOCATOR +/* Disabled by default. */ +#define SLJIT_WX_EXECUTABLE_ALLOCATOR 0 #endif +#endif /* !SLJIT_EXECUTABLE_ALLOCATOR */ + /* Force cdecl calling convention even if a better calling convention (e.g. fastcall) is supported by the C compiler. If this option is disabled (this is the default), functions @@ -159,4 +169,4 @@ } /* extern "C" */ #endif -#endif +#endif /* SLJIT_CONFIG_H_ */ diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitConfigInternal.h b/qtbase/src/3rdparty/pcre2/src/sljit/sljitConfigInternal.h --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitConfigInternal.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitConfigInternal.h 2022-01-25 17:23:44.130496341 +0000 @@ -24,8 +24,8 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef _SLJIT_CONFIG_INTERNAL_H_ -#define _SLJIT_CONFIG_INTERNAL_H_ +#ifndef SLJIT_CONFIG_INTERNAL_H_ +#define SLJIT_CONFIG_INTERNAL_H_ #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) \ || (defined SLJIT_DEBUG && SLJIT_DEBUG && (!defined(SLJIT_ASSERT) || !defined(SLJIT_UNREACHABLE))) @@ -81,30 +81,13 @@ Other macros: SLJIT_FUNC : calling convention attribute for both calling JIT from C and C calling back from JIT - SLJIT_W(number) : defining 64 bit constants on 64 bit architectures (compiler independent helper) + SLJIT_W(number) : defining 64 bit constants on 64 bit architectures (platform independent helper) */ /*****************/ /* Sanity check. */ /*****************/ -#if !((defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) \ - || (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) \ - || (defined SLJIT_CONFIG_ARM_V5 && SLJIT_CONFIG_ARM_V5) \ - || (defined SLJIT_CONFIG_ARM_V7 && SLJIT_CONFIG_ARM_V7) \ - || (defined SLJIT_CONFIG_ARM_THUMB2 && SLJIT_CONFIG_ARM_THUMB2) \ - || (defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64) \ - || (defined SLJIT_CONFIG_PPC_32 && SLJIT_CONFIG_PPC_32) \ - || (defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64) \ - || (defined SLJIT_CONFIG_MIPS_32 && SLJIT_CONFIG_MIPS_32) \ - || (defined SLJIT_CONFIG_MIPS_64 && SLJIT_CONFIG_MIPS_64) \ - || (defined SLJIT_CONFIG_SPARC_32 && SLJIT_CONFIG_SPARC_32) \ - || (defined SLJIT_CONFIG_TILEGX && SLJIT_CONFIG_TILEGX) \ - || (defined SLJIT_CONFIG_AUTO && SLJIT_CONFIG_AUTO) \ - || (defined SLJIT_CONFIG_UNSUPPORTED && SLJIT_CONFIG_UNSUPPORTED)) -#error "An architecture must be selected" -#endif - #if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) \ + (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) \ + (defined SLJIT_CONFIG_ARM_V5 && SLJIT_CONFIG_ARM_V5) \ @@ -113,15 +96,36 @@ + (defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64) \ + (defined SLJIT_CONFIG_PPC_32 && SLJIT_CONFIG_PPC_32) \ + (defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64) \ - + (defined SLJIT_CONFIG_TILEGX && SLJIT_CONFIG_TILEGX) \ + (defined SLJIT_CONFIG_MIPS_32 && SLJIT_CONFIG_MIPS_32) \ + (defined SLJIT_CONFIG_MIPS_64 && SLJIT_CONFIG_MIPS_64) \ + (defined SLJIT_CONFIG_SPARC_32 && SLJIT_CONFIG_SPARC_32) \ + + (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X) \ + (defined SLJIT_CONFIG_AUTO && SLJIT_CONFIG_AUTO) \ + (defined SLJIT_CONFIG_UNSUPPORTED && SLJIT_CONFIG_UNSUPPORTED) >= 2 #error "Multiple architectures are selected" #endif +#if !(defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) \ + && !(defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) \ + && !(defined SLJIT_CONFIG_ARM_V5 && SLJIT_CONFIG_ARM_V5) \ + && !(defined SLJIT_CONFIG_ARM_V7 && SLJIT_CONFIG_ARM_V7) \ + && !(defined SLJIT_CONFIG_ARM_THUMB2 && SLJIT_CONFIG_ARM_THUMB2) \ + && !(defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64) \ + && !(defined SLJIT_CONFIG_PPC_32 && SLJIT_CONFIG_PPC_32) \ + && !(defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64) \ + && !(defined SLJIT_CONFIG_MIPS_32 && SLJIT_CONFIG_MIPS_32) \ + && !(defined SLJIT_CONFIG_MIPS_64 && SLJIT_CONFIG_MIPS_64) \ + && !(defined SLJIT_CONFIG_SPARC_32 && SLJIT_CONFIG_SPARC_32) \ + && !(defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X) \ + && !(defined SLJIT_CONFIG_UNSUPPORTED && SLJIT_CONFIG_UNSUPPORTED) \ + && !(defined SLJIT_CONFIG_AUTO && SLJIT_CONFIG_AUTO) +#if defined SLJIT_CONFIG_AUTO && !SLJIT_CONFIG_AUTO +#error "An architecture must be selected" +#else /* SLJIT_CONFIG_AUTO */ +#define SLJIT_CONFIG_AUTO 1 +#endif /* !SLJIT_CONFIG_AUTO */ +#endif /* !SLJIT_CONFIG */ + /********************************************************/ /* Automatic CPU detection (requires compiler support). */ /********************************************************/ @@ -154,8 +158,6 @@ #define SLJIT_CONFIG_MIPS_64 1 #elif defined(__sparc__) || defined(__sparc) #define SLJIT_CONFIG_SPARC_32 1 -#elif defined(__tilegx__) -#define SLJIT_CONFIG_TILEGX 1 #else /* Unsupported architecture */ #define SLJIT_CONFIG_UNSUPPORTED 1 @@ -210,18 +212,16 @@ /***********************************************************/ #ifdef SLJIT_CONFIG_X86 -#if defined(__CET__) + +#if defined(__CET__) && !(defined SLJIT_CONFIG_X86_CET && SLJIT_CONFIG_X86_CET) #define SLJIT_CONFIG_X86_CET 1 #endif -#if (defined SLJIT_CONFIG_X86_CET && SLJIT_CONFIG_X86_CET) -#if defined(__GNUC__) -#if !defined (__SHSTK__) -#error "-mshstk is needed to compile with -fcf-protection" -#endif + +#if (defined SLJIT_CONFIG_X86_CET && SLJIT_CONFIG_X86_CET) && defined(__GNUC__) #include #endif -#endif -#endif + +#endif /* SLJIT_CONFIG_X86 */ /**********************************/ /* External function definitions. */ @@ -411,7 +411,7 @@ && !(defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64) \ && !(defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64) \ && !(defined SLJIT_CONFIG_MIPS_64 && SLJIT_CONFIG_MIPS_64) \ - && !(defined SLJIT_CONFIG_TILEGX && SLJIT_CONFIG_TILEGX) + && !(defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X) #define SLJIT_32BIT_ARCHITECTURE 1 #define SLJIT_WORD_SHIFT 2 typedef unsigned int sljit_uw; @@ -453,10 +453,14 @@ #if (defined SLJIT_CONFIG_UNSUPPORTED && SLJIT_CONFIG_UNSUPPORTED) #define SLJIT_W(w) (w##l) #elif (defined SLJIT_64BIT_ARCHITECTURE && SLJIT_64BIT_ARCHITECTURE) +#ifdef _WIN64 #define SLJIT_W(w) (w##ll) -#else +#else /* !windows */ +#define SLJIT_W(w) (w##l) +#endif /* windows */ +#else /* 32 bit */ #define SLJIT_W(w) (w) -#endif +#endif /* unknown */ #endif /* !SLJIT_W */ @@ -504,7 +508,8 @@ #endif /* !SLJIT_MIPS_REV */ -#elif (defined SLJIT_CONFIG_SPARC_32 && SLJIT_CONFIG_SPARC_32) +#elif (defined SLJIT_CONFIG_SPARC_32 && SLJIT_CONFIG_SPARC_32) \ + || (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X) #define SLJIT_BIG_ENDIAN 1 @@ -531,7 +536,8 @@ || (defined SLJIT_CONFIG_ARM_THUMB2 && SLJIT_CONFIG_ARM_THUMB2) \ || (defined SLJIT_CONFIG_ARM_64 && SLJIT_CONFIG_ARM_64) \ || (defined SLJIT_CONFIG_PPC_32 && SLJIT_CONFIG_PPC_32) \ - || (defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64) + || (defined SLJIT_CONFIG_PPC_64 && SLJIT_CONFIG_PPC_64) \ + || (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X) #define SLJIT_UNALIGNED 1 #endif @@ -549,17 +555,19 @@ #ifndef SLJIT_FUNC -#if (defined SLJIT_USE_CDECL_CALLING_CONVENTION && SLJIT_USE_CDECL_CALLING_CONVENTION) +#if (defined SLJIT_USE_CDECL_CALLING_CONVENTION && SLJIT_USE_CDECL_CALLING_CONVENTION) \ + || !(defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) -/* Force cdecl. */ #define SLJIT_FUNC -#elif (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) - -#if defined(__GNUC__) && !defined(__APPLE__) +#elif defined(__GNUC__) && !defined(__APPLE__) +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) #define SLJIT_FUNC __attribute__ ((fastcall)) #define SLJIT_X86_32_FASTCALL 1 +#else +#define SLJIT_FUNC +#endif /* gcc >= 3.4 */ #elif defined(_MSC_VER) @@ -573,16 +581,10 @@ #else /* Unknown compiler. */ -/* The cdecl attribute is the default. */ -#define SLJIT_FUNC - -#endif - -#else /* Non x86-32 architectures. */ - +/* The cdecl calling convention is usually the x86 default. */ #define SLJIT_FUNC -#endif /* SLJIT_CONFIG_X86_32 */ +#endif /* SLJIT_USE_CDECL_CALLING_CONVENTION */ #endif /* !SLJIT_FUNC */ @@ -613,8 +615,16 @@ SLJIT_API_FUNC_ATTRIBUTE void* sljit_malloc_exec(sljit_uw size); SLJIT_API_FUNC_ATTRIBUTE void sljit_free_exec(void* ptr); SLJIT_API_FUNC_ATTRIBUTE void sljit_free_unused_memory_exec(void); -#define SLJIT_MALLOC_EXEC(size) sljit_malloc_exec(size) -#define SLJIT_FREE_EXEC(ptr) sljit_free_exec(ptr) +#define SLJIT_BUILTIN_MALLOC_EXEC(size, exec_allocator_data) sljit_malloc_exec(size) +#define SLJIT_BUILTIN_FREE_EXEC(ptr, exec_allocator_data) sljit_free_exec(ptr) + +#ifndef SLJIT_MALLOC_EXEC +#define SLJIT_MALLOC_EXEC(size, exec_allocator_data) SLJIT_BUILTIN_MALLOC_EXEC((size), (exec_allocator_data)) +#endif /* SLJIT_MALLOC_EXEC */ + +#ifndef SLJIT_FREE_EXEC +#define SLJIT_FREE_EXEC(ptr, exec_allocator_data) SLJIT_BUILTIN_FREE_EXEC((ptr), (exec_allocator_data)) +#endif /* SLJIT_FREE_EXEC */ #if (defined SLJIT_PROT_EXECUTABLE_ALLOCATOR && SLJIT_PROT_EXECUTABLE_ALLOCATOR) SLJIT_API_FUNC_ATTRIBUTE sljit_sw sljit_exec_offset(void* ptr); @@ -623,7 +633,7 @@ #define SLJIT_EXEC_OFFSET(ptr) 0 #endif -#endif +#endif /* SLJIT_EXECUTABLE_ALLOCATOR */ /**********************************************/ /* Registers and locals offset determination. */ @@ -699,11 +709,32 @@ #define SLJIT_LOCALS_OFFSET_BASE ((16 + 1 + 6 + 2 + 1) * sizeof(sljit_sw)) #endif -#elif (defined SLJIT_CONFIG_TILEGX && SLJIT_CONFIG_TILEGX) +#elif (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X) -#define SLJIT_NUMBER_OF_REGISTERS 10 -#define SLJIT_NUMBER_OF_SAVED_REGISTERS 5 -#define SLJIT_LOCALS_OFFSET_BASE 0 +/* + * https://refspecs.linuxbase.org/ELF/zSeries/lzsabi0_zSeries.html#STACKFRAME + * + * 160 + * .. FR6 + * .. FR4 + * .. FR2 + * 128 FR0 + * 120 R15 (used for SP) + * 112 R14 + * 104 R13 + * 96 R12 + * .. + * 48 R6 + * .. + * 16 R2 + * 8 RESERVED + * 0 SP + */ +#define SLJIT_S390X_DEFAULT_STACK_FRAME_SIZE 160 + +#define SLJIT_NUMBER_OF_REGISTERS 12 +#define SLJIT_NUMBER_OF_SAVED_REGISTERS 8 +#define SLJIT_LOCALS_OFFSET_BASE SLJIT_S390X_DEFAULT_STACK_FRAME_SIZE #elif (defined SLJIT_CONFIG_UNSUPPORTED && SLJIT_CONFIG_UNSUPPORTED) @@ -791,4 +822,4 @@ } /* extern "C" */ #endif -#endif +#endif /* SLJIT_CONFIG_INTERNAL_H_ */ diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitExecAllocator.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitExecAllocator.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitExecAllocator.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitExecAllocator.c 2022-01-25 17:23:44.130496341 +0000 @@ -72,9 +72,8 @@ alloc_chunk / free_chunk : * allocate executable system memory chunks * the size is always divisible by CHUNK_SIZE - allocator_grab_lock / allocator_release_lock : - * make the allocator thread safe - * can be empty if the OS (or the application) does not support threading + SLJIT_ALLOCATOR_LOCK / SLJIT_ALLOCATOR_UNLOCK : + * provided as part of sljitUtils * only the allocator requires this lock, sljit is fully thread safe as it only uses local variables */ @@ -95,6 +94,7 @@ #else #ifdef __APPLE__ +#ifdef MAP_ANON /* Configures TARGET_OS_OSX when appropriate */ #include @@ -104,17 +104,23 @@ #ifdef MAP_JIT +/* + On macOS systems, returns MAP_JIT if it is defined _and_ we're running on a + version where it's OK to have more than one JIT block. + On non-macOS systems, returns MAP_JIT if it is defined. +*/ static SLJIT_INLINE int get_map_jit_flag() { -/* On macOS systems, returns MAP_JIT if it is defined _and_ we're running on a version - of macOS where it's OK to have more than one JIT block. - On non-macOS systems, returns MAP_JIT if it is defined. */ #if TARGET_OS_OSX + sljit_sw page_size = get_page_alignment() + 1; + void *ptr; static int map_jit_flag = -1; - /* The following code is thread safe because multiple initialization - sets map_jit_flag to the same value and the code has no side-effects. - Changing the kernel version witout system restart is (very) unlikely. */ + /* + The following code is thread safe because multiple initialization + sets map_jit_flag to the same value and the code has no side-effects. + Changing the kernel version witout system restart is (very) unlikely. + */ if (map_jit_flag == -1) { struct utsname name; @@ -123,15 +129,9 @@ /* Kernel version for 10.14.0 (Mojave) */ if (atoi(name.release) >= 18) { - /* Only use MAP_JIT if a hardened runtime is used, because MAP_JIT is incompatible with fork(). */ + /* Only use MAP_JIT if a hardened runtime is used */ - /* mirroring page size detection from sljit_allocate_stack */ - long page_size = sysconf(_SC_PAGESIZE); - /* Should never happen */ - if (page_size < 0) - page_size = 4096; - - void *ptr = mmap(NULL, page_size, PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANON, -1, 0); + ptr = mmap(NULL, page_size, PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANON, -1, 0); if (ptr == MAP_FAILED) { map_jit_flag = MAP_JIT; @@ -148,7 +148,7 @@ } #endif /* MAP_JIT */ - +#endif /* MAP_ANON */ #endif /* __APPLE__ */ static SLJIT_INLINE void* alloc_chunk(sljit_uw size) @@ -166,10 +166,9 @@ retval = mmap(NULL, size, prot, flags, -1, 0); #else /* !MAP_ANON */ - if (dev_zero < 0) { - if (open_dev_zero()) - return NULL; - } + if (SLJIT_UNLIKELY((dev_zero < 0) && open_dev_zero())) + return NULL; + retval = mmap(NULL, size, prot, MAP_PRIVATE, dev_zero, 0); #endif /* MAP_ANON */ @@ -253,7 +252,7 @@ struct free_block *free_block; sljit_uw chunk_size; - allocator_grab_lock(); + SLJIT_ALLOCATOR_LOCK(); if (size < (64 - sizeof(struct block_header))) size = (64 - sizeof(struct block_header)); size = ALIGN_SIZE(size); @@ -277,7 +276,7 @@ } allocated_size += size; header->size = size; - allocator_release_lock(); + SLJIT_ALLOCATOR_UNLOCK(); return MEM_START(header); } free_block = free_block->next; @@ -286,7 +285,7 @@ chunk_size = (size + sizeof(struct block_header) + CHUNK_SIZE - 1) & CHUNK_MASK; header = (struct block_header*)alloc_chunk(chunk_size); if (!header) { - allocator_release_lock(); + SLJIT_ALLOCATOR_UNLOCK(); return NULL; } @@ -313,7 +312,7 @@ } next_header->size = 1; next_header->prev_size = chunk_size; - allocator_release_lock(); + SLJIT_ALLOCATOR_UNLOCK(); return MEM_START(header); } @@ -322,7 +321,7 @@ struct block_header *header; struct free_block* free_block; - allocator_grab_lock(); + SLJIT_ALLOCATOR_LOCK(); header = AS_BLOCK_HEADER(ptr, -(sljit_sw)sizeof(struct block_header)); allocated_size -= header->size; @@ -359,7 +358,7 @@ } } - allocator_release_lock(); + SLJIT_ALLOCATOR_UNLOCK(); } SLJIT_API_FUNC_ATTRIBUTE void sljit_free_unused_memory_exec(void) @@ -367,7 +366,7 @@ struct free_block* free_block; struct free_block* next_free_block; - allocator_grab_lock(); + SLJIT_ALLOCATOR_LOCK(); free_block = free_blocks; while (free_block) { @@ -382,5 +381,5 @@ } SLJIT_ASSERT((total_size && free_blocks) || (!total_size && !free_blocks)); - allocator_release_lock(); + SLJIT_ALLOCATOR_UNLOCK(); } diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitLir.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitLir.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitLir.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitLir.c 2022-01-25 17:23:44.130496341 +0000 @@ -28,7 +28,6 @@ #ifdef _WIN32 -/* For SLJIT_CACHE_FLUSH, which can expand to FlushInstructionCache. */ #include #endif /* _WIN32 */ @@ -223,14 +222,6 @@ # define FCSR_FCC 33 #endif -#if (defined SLJIT_CONFIG_TILEGX && SLJIT_CONFIG_TILEGX) -# define IS_JAL 0x04 -# define IS_COND 0x08 - -# define PATCH_B 0x10 -# define PATCH_J 0x20 -#endif - #if (defined SLJIT_CONFIG_SPARC_32 && SLJIT_CONFIG_SPARC_32) # define IS_MOVABLE 0x04 # define IS_COND 0x08 @@ -274,6 +265,8 @@ #if (defined SLJIT_PROT_EXECUTABLE_ALLOCATOR && SLJIT_PROT_EXECUTABLE_ALLOCATOR) #include "sljitProtExecAllocator.c" +#elif (defined SLJIT_WX_EXECUTABLE_ALLOCATOR && SLJIT_WX_EXECUTABLE_ALLOCATOR) +#include "sljitWXExecAllocator.c" #else #include "sljitExecAllocator.c" #endif @@ -286,6 +279,10 @@ #define SLJIT_ADD_EXEC_OFFSET(ptr, exec_offset) ((sljit_u8 *)(ptr)) #endif +#ifndef SLJIT_UPDATE_WX_FLAGS +#define SLJIT_UPDATE_WX_FLAGS(from, to, enable_exec) +#endif + /* Argument checking features. */ #if (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) @@ -366,7 +363,7 @@ static void init_compiler(void); #endif -SLJIT_API_FUNC_ATTRIBUTE struct sljit_compiler* sljit_create_compiler(void *allocator_data) +SLJIT_API_FUNC_ATTRIBUTE struct sljit_compiler* sljit_create_compiler(void *allocator_data, void *exec_allocator_data) { struct sljit_compiler *compiler = (struct sljit_compiler*)SLJIT_MALLOC(sizeof(struct sljit_compiler), allocator_data); if (!compiler) @@ -393,6 +390,7 @@ compiler->error = SLJIT_SUCCESS; compiler->allocator_data = allocator_data; + compiler->exec_allocator_data = exec_allocator_data; compiler->buf = (struct sljit_memory_fragment*)SLJIT_MALLOC(BUF_SIZE, allocator_data); compiler->abuf = (struct sljit_memory_fragment*)SLJIT_MALLOC(ABUF_SIZE, allocator_data); @@ -485,22 +483,28 @@ } #if (defined SLJIT_CONFIG_ARM_THUMB2 && SLJIT_CONFIG_ARM_THUMB2) -SLJIT_API_FUNC_ATTRIBUTE void sljit_free_code(void* code) +SLJIT_API_FUNC_ATTRIBUTE void sljit_free_code(void* code, void *exec_allocator_data) { + SLJIT_UNUSED_ARG(exec_allocator_data); + /* Remove thumb mode flag. */ - SLJIT_FREE_EXEC((void*)((sljit_uw)code & ~0x1)); + SLJIT_FREE_EXEC((void*)((sljit_uw)code & ~0x1), exec_allocator_data); } #elif (defined SLJIT_INDIRECT_CALL && SLJIT_INDIRECT_CALL) -SLJIT_API_FUNC_ATTRIBUTE void sljit_free_code(void* code) +SLJIT_API_FUNC_ATTRIBUTE void sljit_free_code(void* code, void *exec_allocator_data) { + SLJIT_UNUSED_ARG(exec_allocator_data); + /* Resolve indirection. */ code = (void*)(*(sljit_uw*)code); - SLJIT_FREE_EXEC(code); + SLJIT_FREE_EXEC(code, exec_allocator_data); } #else -SLJIT_API_FUNC_ATTRIBUTE void sljit_free_code(void* code) +SLJIT_API_FUNC_ATTRIBUTE void sljit_free_code(void* code, void *exec_allocator_data) { - SLJIT_FREE_EXEC(code); + SLJIT_UNUSED_ARG(exec_allocator_data); + + SLJIT_FREE_EXEC(code, exec_allocator_data); } #endif @@ -627,7 +631,10 @@ return arg_count; } -#if !(defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86) + +/* Only used in RISC architectures where the instruction size is constant */ +#if !(defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86) \ + && !(defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X) static SLJIT_INLINE sljit_uw compute_next_addr(struct sljit_label *label, struct sljit_jump *jump, struct sljit_const *const_, struct sljit_put_label *put_label) @@ -649,7 +656,7 @@ return result; } -#endif /* !SLJIT_CONFIG_X86 */ +#endif /* !SLJIT_CONFIG_X86 && !SLJIT_CONFIG_S390X */ static SLJIT_INLINE void set_emit_enter(struct sljit_compiler *compiler, sljit_s32 options, sljit_s32 args, sljit_s32 scratches, sljit_s32 saveds, @@ -1378,6 +1385,8 @@ #elif (defined SLJIT_CONFIG_ARM_THUMB2 && SLJIT_CONFIG_ARM_THUMB2) CHECK_ARGUMENT((size == 2 && (((sljit_sw)instruction) & 0x1) == 0) || (size == 4 && (((sljit_sw)instruction) & 0x3) == 0)); +#elif (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X) + CHECK_ARGUMENT(size == 2 || size == 4 || size == 6); #else CHECK_ARGUMENT(size == 4 && (((sljit_sw)instruction) & 0x3) == 0); #endif @@ -2034,7 +2043,7 @@ #if (defined SLJIT_CONFIG_X86 && SLJIT_CONFIG_X86) \ || (defined SLJIT_CONFIG_PPC && SLJIT_CONFIG_PPC) \ || (defined SLJIT_CONFIG_SPARC_32 && SLJIT_CONFIG_SPARC_32) \ - || ((defined SLJIT_CONFIG_MIPS && SLJIT_CONFIG_MIPS) && !(defined SLJIT_MIPS_REV && SLJIT_MIPS_REV >= 1)) + || ((defined SLJIT_CONFIG_MIPS && SLJIT_CONFIG_MIPS) && !(defined SLJIT_MIPS_REV && SLJIT_MIPS_REV >= 1 && SLJIT_MIPS_REV < 6)) static SLJIT_INLINE sljit_s32 sljit_emit_cmov_generic(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 dst_reg, @@ -2111,8 +2120,8 @@ # include "sljitNativeMIPS_common.c" #elif (defined SLJIT_CONFIG_SPARC && SLJIT_CONFIG_SPARC) # include "sljitNativeSPARC_common.c" -#elif (defined SLJIT_CONFIG_TILEGX && SLJIT_CONFIG_TILEGX) -# include "sljitNativeTILEGX_64.c" +#elif (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X) +# include "sljitNativeS390X.c" #endif #if !(defined SLJIT_CONFIG_MIPS && SLJIT_CONFIG_MIPS) @@ -2143,7 +2152,7 @@ #endif if (SLJIT_UNLIKELY((src1 & SLJIT_IMM) && !(src2 & SLJIT_IMM))) { - /* Immediate is prefered as second argument by most architectures. */ + /* Immediate is preferred as second argument by most architectures. */ switch (condition) { case SLJIT_LESS: condition = SLJIT_GREATER; @@ -2292,9 +2301,10 @@ return "unsupported"; } -SLJIT_API_FUNC_ATTRIBUTE struct sljit_compiler* sljit_create_compiler(void *allocator_data) +SLJIT_API_FUNC_ATTRIBUTE struct sljit_compiler* sljit_create_compiler(void *allocator_data, void *exec_allocator_data) { SLJIT_UNUSED_ARG(allocator_data); + SLJIT_UNUSED_ARG(exec_allocator_data); SLJIT_UNREACHABLE(); return NULL; } @@ -2342,9 +2352,10 @@ return 0; } -SLJIT_API_FUNC_ATTRIBUTE void sljit_free_code(void* code) +SLJIT_API_FUNC_ATTRIBUTE void sljit_free_code(void* code, void *exec_allocator_data) { SLJIT_UNUSED_ARG(code); + SLJIT_UNUSED_ARG(exec_allocator_data); SLJIT_UNREACHABLE(); } diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitLir.h b/qtbase/src/3rdparty/pcre2/src/sljit/sljitLir.h --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitLir.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitLir.h 2022-01-25 17:23:44.130496341 +0000 @@ -24,8 +24,8 @@ * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef _SLJIT_LIR_H_ -#define _SLJIT_LIR_H_ +#ifndef SLJIT_LIR_H_ +#define SLJIT_LIR_H_ /* ------------------------------------------------------------------------ @@ -70,9 +70,11 @@ - pass --smc-check=all argument to valgrind, since JIT is a "self-modifying code" */ -#if !(defined SLJIT_NO_DEFAULT_CONFIG && SLJIT_NO_DEFAULT_CONFIG) +#if (defined SLJIT_HAVE_CONFIG_PRE && SLJIT_HAVE_CONFIG_PRE) +#include "sljitConfigPre.h" +#endif /* SLJIT_HAVE_CONFIG_PRE */ + #include "sljitConfig.h" -#endif /* The following header file defines useful macros for fine tuning sljit based code generators. They are listed in the beginning @@ -80,6 +82,10 @@ #include "sljitConfigInternal.h" +#if (defined SLJIT_HAVE_CONFIG_POST && SLJIT_HAVE_CONFIG_POST) +#include "sljitConfigPost.h" +#endif /* SLJIT_HAVE_CONFIG_POST */ + #ifdef __cplusplus extern "C" { #endif @@ -385,6 +391,7 @@ struct sljit_put_label *last_put_label; void *allocator_data; + void *exec_allocator_data; struct sljit_memory_fragment *buf; struct sljit_memory_fragment *abuf; @@ -451,9 +458,9 @@ sljit_sw cache_argw; #endif -#if (defined SLJIT_CONFIG_TILEGX && SLJIT_CONFIG_TILEGX) - sljit_s32 cache_arg; - sljit_sw cache_argw; +#if (defined SLJIT_CONFIG_S390X && SLJIT_CONFIG_S390X) + /* Need to allocate register save area to make calls. */ + sljit_s32 have_save_area; #endif #if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) @@ -485,10 +492,12 @@ custom memory managers. This pointer is passed to SLJIT_MALLOC and SLJIT_FREE macros. Most allocators (including the default one) ignores this value, and it is recommended to pass NULL - as a dummy value for allocator_data. + as a dummy value for allocator_data. The exec_allocator_data + has the same purpose but this one is passed to SLJIT_MALLOC_EXEC / + SLJIT_MALLOC_FREE functions. Returns NULL if failed. */ -SLJIT_API_FUNC_ATTRIBUTE struct sljit_compiler* sljit_create_compiler(void *allocator_data); +SLJIT_API_FUNC_ATTRIBUTE struct sljit_compiler* sljit_create_compiler(void *allocator_data, void *exec_allocator_data); /* Frees everything except the compiled machine code. */ SLJIT_API_FUNC_ATTRIBUTE void sljit_free_compiler(struct sljit_compiler *compiler); @@ -535,7 +544,7 @@ /* Free executable code. */ -SLJIT_API_FUNC_ATTRIBUTE void sljit_free_code(void* code); +SLJIT_API_FUNC_ATTRIBUTE void sljit_free_code(void* code, void *exec_allocator_data); /* When the protected executable allocator is used the JIT code is mapped @@ -699,7 +708,7 @@ */ /* - IMPORATNT NOTE: memory access MUST be naturally aligned except + IMPORTANT NOTE: memory access MUST be naturally aligned unless SLJIT_UNALIGNED macro is defined and its value is 1. length | alignment @@ -741,6 +750,9 @@ mips: [reg+imm], -65536 <= imm <= 65535 sparc: [reg+imm], -4096 <= imm <= 4095 [reg+reg] is supported + s390x: [reg+imm], -2^19 <= imm < 2^19 + [reg+reg] is supported + Write-back is not supported */ /* Macros for specifying operand types. */ @@ -1405,12 +1417,6 @@ /* Portable helper function to get an offset of a member. */ #define SLJIT_OFFSETOF(base, member) ((sljit_sw)(&((base*)0x10)->member) - 0x10) -#if (defined SLJIT_UTIL_GLOBAL_LOCK && SLJIT_UTIL_GLOBAL_LOCK) -/* This global lock is useful to compile common functions. */ -SLJIT_API_FUNC_ATTRIBUTE void SLJIT_FUNC sljit_grab_lock(void); -SLJIT_API_FUNC_ATTRIBUTE void SLJIT_FUNC sljit_release_lock(void); -#endif - #if (defined SLJIT_UTIL_STACK && SLJIT_UTIL_STACK) /* The sljit_stack structure and its manipulation functions provides @@ -1538,4 +1544,4 @@ } /* extern "C" */ #endif -#endif /* _SLJIT_LIR_H_ */ +#endif /* SLJIT_LIR_H_ */ diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeARM_32.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeARM_32.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeARM_32.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeARM_32.c 2022-01-25 17:23:44.130496341 +0000 @@ -467,18 +467,28 @@ sljit_s32 bl = (mov_pc & 0x0000f000) != RD(TMP_PC); sljit_sw diff = (sljit_sw)(((sljit_sw)new_addr - (sljit_sw)(inst + 2) - executable_offset) >> 2); + SLJIT_UNUSED_ARG(executable_offset); + if (diff <= 0x7fffff && diff >= -0x800000) { /* Turn to branch. */ if (!bl) { + if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(inst, inst + 1, 0); + } inst[0] = (mov_pc & COND_MASK) | (B - CONDITIONAL) | (diff & 0xffffff); if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(inst, inst + 1, 1); inst = (sljit_uw *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); SLJIT_CACHE_FLUSH(inst, inst + 1); } } else { + if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(inst, inst + 2, 0); + } inst[0] = (mov_pc & COND_MASK) | (BL - CONDITIONAL) | (diff & 0xffffff); inst[1] = NOP; if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(inst, inst + 2, 1); inst = (sljit_uw *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); SLJIT_CACHE_FLUSH(inst, inst + 2); } @@ -491,28 +501,52 @@ ptr = inst + 1; if (*inst != mov_pc) { + if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(inst, inst + (!bl ? 1 : 2), 0); + } inst[0] = mov_pc; if (!bl) { if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(inst, inst + 1, 1); inst = (sljit_uw *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); SLJIT_CACHE_FLUSH(inst, inst + 1); } } else { inst[1] = BLX | RM(TMP_REG1); if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(inst, inst + 2, 1); inst = (sljit_uw *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); SLJIT_CACHE_FLUSH(inst, inst + 2); } } } + + if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(ptr, ptr + 1, 0); + } + *ptr = new_addr; + + if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(ptr, ptr + 1, 1); + } } #else sljit_uw *inst = (sljit_uw*)jump_ptr; + + SLJIT_UNUSED_ARG(executable_offset); + SLJIT_ASSERT((inst[0] & 0xfff00000) == MOVW && (inst[1] & 0xfff00000) == MOVT); + + if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(inst, inst + 2, 0); + } + inst[0] = MOVW | (inst[0] & 0xf000) | ((new_addr << 4) & 0xf0000) | (new_addr & 0xfff); inst[1] = MOVT | (inst[1] & 0xf000) | ((new_addr >> 12) & 0xf0000) | ((new_addr >> 16) & 0xfff); + if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(inst, inst + 2, 1); inst = (sljit_uw *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); SLJIT_CACHE_FLUSH(inst, inst + 2); } @@ -529,10 +563,18 @@ sljit_uw ldr_literal = ptr[1]; sljit_uw src2; + SLJIT_UNUSED_ARG(executable_offset); + src2 = get_imm(new_constant); if (src2) { + if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(inst, inst + 1, 0); + } + *inst = 0xe3a00000 | (ldr_literal & 0xf000) | src2; + if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(inst, inst + 1, 1); inst = (sljit_uw *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); SLJIT_CACHE_FLUSH(inst, inst + 1); } @@ -541,8 +583,14 @@ src2 = get_imm(~new_constant); if (src2) { + if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(inst, inst + 1, 0); + } + *inst = 0xe3e00000 | (ldr_literal & 0xf000) | src2; + if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(inst, inst + 1, 1); inst = (sljit_uw *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); SLJIT_CACHE_FLUSH(inst, inst + 1); } @@ -555,19 +603,44 @@ ptr = inst + 1; if (*inst != ldr_literal) { + if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(inst, inst + 1, 0); + } + *inst = ldr_literal; + if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(inst, inst + 1, 1); inst = (sljit_uw *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); SLJIT_CACHE_FLUSH(inst, inst + 1); } } + + if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(ptr, ptr + 1, 0); + } + *ptr = new_constant; + + if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(ptr, ptr + 1, 1); + } #else sljit_uw *inst = (sljit_uw*)addr; + + SLJIT_UNUSED_ARG(executable_offset); + SLJIT_ASSERT((inst[0] & 0xfff00000) == MOVW && (inst[1] & 0xfff00000) == MOVT); + + if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(inst, inst + 2, 0); + } + inst[0] = MOVW | (inst[0] & 0xf000) | ((new_constant << 4) & 0xf0000) | (new_constant & 0xfff); inst[1] = MOVT | (inst[1] & 0xf000) | ((new_constant >> 12) & 0xf0000) | ((new_constant >> 16) & 0xfff); + if (flush_cache) { + SLJIT_UPDATE_WX_FLAGS(inst, inst + 2, 1); inst = (sljit_uw *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); SLJIT_CACHE_FLUSH(inst, inst + 2); } @@ -612,7 +685,7 @@ #else size = compiler->size; #endif - code = (sljit_uw*)SLJIT_MALLOC_EXEC(size * sizeof(sljit_uw)); + code = (sljit_uw*)SLJIT_MALLOC_EXEC(size * sizeof(sljit_uw), compiler->exec_allocator_data); PTR_FAIL_WITH_EXEC_IF(code); buf = compiler->buf; @@ -653,7 +726,7 @@ } else { if (SLJIT_UNLIKELY(resolve_const_pool_index(compiler, &first_patch, cpool_current_index, cpool_start_address, buf_ptr))) { - SLJIT_FREE_EXEC(code); + SLJIT_FREE_EXEC(code, compiler->exec_allocator_data); compiler->error = SLJIT_ERR_ALLOC_FAILED; return NULL; } @@ -756,7 +829,7 @@ cpool_current_index = 0; while (buf_ptr < buf_end) { if (SLJIT_UNLIKELY(resolve_const_pool_index(compiler, &first_patch, cpool_current_index, cpool_start_address, buf_ptr))) { - SLJIT_FREE_EXEC(code); + SLJIT_FREE_EXEC(code, compiler->exec_allocator_data); compiler->error = SLJIT_ERR_ALLOC_FAILED; return NULL; } @@ -856,6 +929,7 @@ code_ptr = (sljit_uw *)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset); SLJIT_CACHE_FLUSH(code, code_ptr); + SLJIT_UPDATE_WX_FLAGS(code, code_ptr, 1); return code; } diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeARM_64.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeARM_64.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeARM_64.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeARM_64.c 2022-01-25 17:23:44.131496337 +0000 @@ -151,16 +151,6 @@ return push_inst(compiler, MOVK | RD(dst) | ((imm >> 48) << 5) | (3 << 21)); } -static SLJIT_INLINE void modify_imm64_const(sljit_ins* inst, sljit_uw new_imm) -{ - sljit_s32 dst = inst[0] & 0x1f; - SLJIT_ASSERT((inst[0] & 0xffe00000) == MOVZ && (inst[1] & 0xffe00000) == (MOVK | (1 << 21))); - inst[0] = MOVZ | dst | ((new_imm & 0xffff) << 5); - inst[1] = MOVK | dst | (((new_imm >> 16) & 0xffff) << 5) | (1 << 21); - inst[2] = MOVK | dst | (((new_imm >> 32) & 0xffff) << 5) | (2 << 21); - inst[3] = MOVK | dst | ((new_imm >> 48) << 5) | (3 << 21); -} - static SLJIT_INLINE sljit_sw detect_jump_type(struct sljit_jump *jump, sljit_ins *code_ptr, sljit_ins *code, sljit_sw executable_offset) { sljit_sw diff; @@ -253,7 +243,7 @@ CHECK_PTR(check_sljit_generate_code(compiler)); reverse_buf(compiler); - code = (sljit_ins*)SLJIT_MALLOC_EXEC(compiler->size * sizeof(sljit_ins)); + code = (sljit_ins*)SLJIT_MALLOC_EXEC(compiler->size * sizeof(sljit_ins), compiler->exec_allocator_data); PTR_FAIL_WITH_EXEC_IF(code); buf = compiler->buf; @@ -380,6 +370,7 @@ code_ptr = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset); SLJIT_CACHE_FLUSH(code, code_ptr); + SLJIT_UPDATE_WX_FLAGS(code, code_ptr, 1); return code; } @@ -2034,15 +2025,24 @@ SLJIT_API_FUNC_ATTRIBUTE void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_target, sljit_sw executable_offset) { sljit_ins* inst = (sljit_ins*)addr; - modify_imm64_const(inst, new_target); + sljit_s32 dst; + SLJIT_UNUSED_ARG(executable_offset); + + SLJIT_UPDATE_WX_FLAGS(inst, inst + 4, 0); + + dst = inst[0] & 0x1f; + SLJIT_ASSERT((inst[0] & 0xffe00000) == MOVZ && (inst[1] & 0xffe00000) == (MOVK | (1 << 21))); + inst[0] = MOVZ | dst | ((new_target & 0xffff) << 5); + inst[1] = MOVK | dst | (((new_target >> 16) & 0xffff) << 5) | (1 << 21); + inst[2] = MOVK | dst | (((new_target >> 32) & 0xffff) << 5) | (2 << 21); + inst[3] = MOVK | dst | ((new_target >> 48) << 5) | (3 << 21); + + SLJIT_UPDATE_WX_FLAGS(inst, inst + 4, 1); inst = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); SLJIT_CACHE_FLUSH(inst, inst + 4); } SLJIT_API_FUNC_ATTRIBUTE void sljit_set_const(sljit_uw addr, sljit_sw new_constant, sljit_sw executable_offset) { - sljit_ins* inst = (sljit_ins*)addr; - modify_imm64_const(inst, new_constant); - inst = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); - SLJIT_CACHE_FLUSH(inst, inst + 4); + sljit_set_jump_addr(addr, new_constant, executable_offset); } diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeARM_T2_32.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeARM_T2_32.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeARM_T2_32.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeARM_T2_32.c 2022-01-25 17:23:44.131496337 +0000 @@ -377,7 +377,7 @@ CHECK_PTR(check_sljit_generate_code(compiler)); reverse_buf(compiler); - code = (sljit_u16*)SLJIT_MALLOC_EXEC(compiler->size * sizeof(sljit_u16)); + code = (sljit_u16*)SLJIT_MALLOC_EXEC(compiler->size * sizeof(sljit_u16), compiler->exec_allocator_data); PTR_FAIL_WITH_EXEC_IF(code); buf = compiler->buf; @@ -463,6 +463,8 @@ code_ptr = (sljit_u16 *)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset); SLJIT_CACHE_FLUSH(code, code_ptr); + SLJIT_UPDATE_WX_FLAGS(code, code_ptr, 1); + /* Set thumb mode flag. */ return (void*)((sljit_uw)code | 0x1); } @@ -608,7 +610,7 @@ Although some clever things could be done here, "NOT IMM" does not worth the efforts. */ break; case SLJIT_ADD: - nimm = -imm; + nimm = -(sljit_sw)imm; if (IS_2_LO_REGS(reg, dst)) { if (imm <= 0x7) return push_inst16(compiler, ADDSI3 | IMM3(imm) | RD3(dst) | RN3(reg)); @@ -630,7 +632,7 @@ nimm = get_imm(imm); if (nimm != INVALID_IMM) return push_inst32(compiler, ADD_WI | (flags & SET_FLAGS) | RD4(dst) | RN4(reg) | nimm); - nimm = get_imm(-imm); + nimm = get_imm(-(sljit_sw)imm); if (nimm != INVALID_IMM) return push_inst32(compiler, SUB_WI | (flags & SET_FLAGS) | RD4(dst) | RN4(reg) | nimm); break; @@ -655,11 +657,11 @@ nimm = get_imm(imm); if (nimm != INVALID_IMM) return push_inst32(compiler, CMPI_W | RN4(reg) | nimm); - nimm = get_imm(-imm); + nimm = get_imm(-(sljit_sw)imm); if (nimm != INVALID_IMM) return push_inst32(compiler, CMNI_W | RN4(reg) | nimm); } - nimm = -imm; + nimm = -(sljit_sw)imm; if (IS_2_LO_REGS(reg, dst)) { if (imm <= 0x7) return push_inst16(compiler, SUBSI3 | IMM3(imm) | RD3(dst) | RN3(reg)); @@ -681,7 +683,7 @@ nimm = get_imm(imm); if (nimm != INVALID_IMM) return push_inst32(compiler, SUB_WI | (flags & SET_FLAGS) | RD4(dst) | RN4(reg) | nimm); - nimm = get_imm(-imm); + nimm = get_imm(-(sljit_sw)imm); if (nimm != INVALID_IMM) return push_inst32(compiler, ADD_WI | (flags & SET_FLAGS) | RD4(dst) | RN4(reg) | nimm); break; @@ -2366,15 +2368,16 @@ SLJIT_API_FUNC_ATTRIBUTE void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_target, sljit_sw executable_offset) { sljit_u16 *inst = (sljit_u16*)addr; + SLJIT_UNUSED_ARG(executable_offset); + + SLJIT_UPDATE_WX_FLAGS(inst, inst + 4, 0); modify_imm32_const(inst, new_target); + SLJIT_UPDATE_WX_FLAGS(inst, inst + 4, 1); inst = (sljit_u16 *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); SLJIT_CACHE_FLUSH(inst, inst + 4); } SLJIT_API_FUNC_ATTRIBUTE void sljit_set_const(sljit_uw addr, sljit_sw new_constant, sljit_sw executable_offset) { - sljit_u16 *inst = (sljit_u16*)addr; - modify_imm32_const(inst, new_constant); - inst = (sljit_u16 *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); - SLJIT_CACHE_FLUSH(inst, inst + 4); + sljit_set_jump_addr(addr, new_constant, executable_offset); } diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_32.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_32.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_32.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_32.c 2022-01-25 17:23:44.131496337 +0000 @@ -425,23 +425,20 @@ SLJIT_API_FUNC_ATTRIBUTE void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_target, sljit_sw executable_offset) { sljit_ins *inst = (sljit_ins *)addr; + SLJIT_UNUSED_ARG(executable_offset); + SLJIT_UPDATE_WX_FLAGS(inst, inst + 2, 0); SLJIT_ASSERT((inst[0] & 0xffe00000) == LUI && (inst[1] & 0xfc000000) == ORI); inst[0] = (inst[0] & 0xffff0000) | ((new_target >> 16) & 0xffff); inst[1] = (inst[1] & 0xffff0000) | (new_target & 0xffff); + SLJIT_UPDATE_WX_FLAGS(inst, inst + 2, 1); inst = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); SLJIT_CACHE_FLUSH(inst, inst + 2); } SLJIT_API_FUNC_ATTRIBUTE void sljit_set_const(sljit_uw addr, sljit_sw new_constant, sljit_sw executable_offset) { - sljit_ins *inst = (sljit_ins *)addr; - - SLJIT_ASSERT((inst[0] & 0xffe00000) == LUI && (inst[1] & 0xfc000000) == ORI); - inst[0] = (inst[0] & 0xffff0000) | ((new_constant >> 16) & 0xffff); - inst[1] = (inst[1] & 0xffff0000) | (new_constant & 0xffff); - inst = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); - SLJIT_CACHE_FLUSH(inst, inst + 2); + sljit_set_jump_addr(addr, new_constant, executable_offset); } static sljit_s32 call_with_args(struct sljit_compiler *compiler, sljit_s32 arg_types, sljit_ins *ins_ptr) diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_64.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_64.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_64.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_64.c 2022-01-25 17:23:44.131496337 +0000 @@ -525,25 +525,21 @@ SLJIT_API_FUNC_ATTRIBUTE void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_target, sljit_sw executable_offset) { sljit_ins *inst = (sljit_ins *)addr; + SLJIT_UNUSED_ARG(executable_offset); + SLJIT_UPDATE_WX_FLAGS(inst, inst + 6, 0); inst[0] = (inst[0] & 0xffff0000) | ((new_target >> 48) & 0xffff); inst[1] = (inst[1] & 0xffff0000) | ((new_target >> 32) & 0xffff); inst[3] = (inst[3] & 0xffff0000) | ((new_target >> 16) & 0xffff); inst[5] = (inst[5] & 0xffff0000) | (new_target & 0xffff); + SLJIT_UPDATE_WX_FLAGS(inst, inst + 6, 1); inst = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); SLJIT_CACHE_FLUSH(inst, inst + 6); } SLJIT_API_FUNC_ATTRIBUTE void sljit_set_const(sljit_uw addr, sljit_sw new_constant, sljit_sw executable_offset) { - sljit_ins *inst = (sljit_ins *)addr; - - inst[0] = (inst[0] & 0xffff0000) | ((new_constant >> 48) & 0xffff); - inst[1] = (inst[1] & 0xffff0000) | ((new_constant >> 32) & 0xffff); - inst[3] = (inst[3] & 0xffff0000) | ((new_constant >> 16) & 0xffff); - inst[5] = (inst[5] & 0xffff0000) | (new_constant & 0xffff); - inst = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); - SLJIT_CACHE_FLUSH(inst, inst + 6); + sljit_set_jump_addr(addr, new_constant, executable_offset); } static sljit_s32 call_with_args(struct sljit_compiler *compiler, sljit_s32 arg_types, sljit_ins *ins_ptr) diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_common.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_common.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_common.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeMIPS_common.c 2022-01-25 17:23:44.131496337 +0000 @@ -290,9 +290,9 @@ Useful for reordering instructions in the delay slot. */ static sljit_s32 push_inst(struct sljit_compiler *compiler, sljit_ins ins, sljit_s32 delay_slot) { + sljit_ins *ptr = (sljit_ins*)ensure_buf(compiler, sizeof(sljit_ins)); SLJIT_ASSERT(delay_slot == MOVABLE_INS || delay_slot >= UNMOVABLE_INS || delay_slot == ((ins >> 11) & 0x1f) || delay_slot == ((ins >> 16) & 0x1f)); - sljit_ins *ptr = (sljit_ins*)ensure_buf(compiler, sizeof(sljit_ins)); FAIL_IF(!ptr); *ptr = ins; compiler->size++; @@ -520,7 +520,7 @@ CHECK_PTR(check_sljit_generate_code(compiler)); reverse_buf(compiler); - code = (sljit_ins*)SLJIT_MALLOC_EXEC(compiler->size * sizeof(sljit_ins)); + code = (sljit_ins*)SLJIT_MALLOC_EXEC(compiler->size * sizeof(sljit_ins), compiler->exec_allocator_data); PTR_FAIL_WITH_EXEC_IF(code); buf = compiler->buf; @@ -667,6 +667,7 @@ /* GCC workaround for invalid code generation with -O2. */ sljit_cache_flush(code, code_ptr); #endif + SLJIT_UPDATE_WX_FLAGS(code, code_ptr, 1); return code; } @@ -679,7 +680,7 @@ #ifdef SLJIT_IS_FPU_AVAILABLE return SLJIT_IS_FPU_AVAILABLE; #elif defined(__GNUC__) - asm ("cfc1 %0, $0" : "=r"(fir)); + __asm__ ("cfc1 %0, $0" : "=r"(fir)); return (fir >> 22) & 0x1; #else #error "FIR check is not implemented for this architecture" @@ -2185,14 +2186,14 @@ sljit_s32 dst_reg, sljit_s32 src, sljit_sw srcw) { -#if (defined SLJIT_MIPS_REV && SLJIT_MIPS_REV >= 1) +#if (defined SLJIT_MIPS_REV && SLJIT_MIPS_REV >= 1 && SLJIT_MIPS_REV < 6) sljit_ins ins; -#endif /* SLJIT_MIPS_REV >= 1 */ +#endif /* SLJIT_MIPS_REV >= 1 && SLJIT_MIPS_REV < 6 */ CHECK_ERROR(); CHECK(check_sljit_emit_cmov(compiler, type, dst_reg, src, srcw)); -#if (defined SLJIT_MIPS_REV && SLJIT_MIPS_REV >= 1) +#if (defined SLJIT_MIPS_REV && SLJIT_MIPS_REV >= 1 && SLJIT_MIPS_REV < 6) if (SLJIT_UNLIKELY(src & SLJIT_IMM)) { #if (defined SLJIT_CONFIG_MIPS_64 && SLJIT_CONFIG_MIPS_64) @@ -2249,7 +2250,7 @@ return push_inst(compiler, ins | S(src) | D(dst_reg), DR(dst_reg)); -#else /* SLJIT_MIPS_REV < 1 */ +#else /* SLJIT_MIPS_REV < 1 || SLJIT_MIPS_REV >= 6 */ return sljit_emit_cmov_generic(compiler, type, dst_reg, src, srcw); #endif /* SLJIT_MIPS_REV >= 1 */ } diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativePPC_32.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativePPC_32.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativePPC_32.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativePPC_32.c 2022-01-25 17:23:44.131496337 +0000 @@ -258,21 +258,18 @@ SLJIT_API_FUNC_ATTRIBUTE void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_target, sljit_sw executable_offset) { sljit_ins *inst = (sljit_ins *)addr; + SLJIT_UNUSED_ARG(executable_offset); + SLJIT_UPDATE_WX_FLAGS(inst, inst + 2, 0); SLJIT_ASSERT((inst[0] & 0xfc1f0000) == ADDIS && (inst[1] & 0xfc000000) == ORI); inst[0] = (inst[0] & 0xffff0000) | ((new_target >> 16) & 0xffff); inst[1] = (inst[1] & 0xffff0000) | (new_target & 0xffff); + SLJIT_UPDATE_WX_FLAGS(inst, inst + 2, 1); inst = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); SLJIT_CACHE_FLUSH(inst, inst + 2); } SLJIT_API_FUNC_ATTRIBUTE void sljit_set_const(sljit_uw addr, sljit_sw new_constant, sljit_sw executable_offset) { - sljit_ins *inst = (sljit_ins *)addr; - - SLJIT_ASSERT((inst[0] & 0xfc1f0000) == ADDIS && (inst[1] & 0xfc000000) == ORI); - inst[0] = (inst[0] & 0xffff0000) | ((new_constant >> 16) & 0xffff); - inst[1] = (inst[1] & 0xffff0000) | (new_constant & 0xffff); - inst = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); - SLJIT_CACHE_FLUSH(inst, inst + 2); + sljit_set_jump_addr(addr, new_constant, executable_offset); } diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativePPC_64.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativePPC_64.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativePPC_64.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativePPC_64.c 2022-01-25 17:23:44.131496337 +0000 @@ -477,23 +477,19 @@ SLJIT_API_FUNC_ATTRIBUTE void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_target, sljit_sw executable_offset) { sljit_ins *inst = (sljit_ins*)addr; + SLJIT_UNUSED_ARG(executable_offset); + SLJIT_UPDATE_WX_FLAGS(inst, inst + 5, 0); inst[0] = (inst[0] & 0xffff0000) | ((new_target >> 48) & 0xffff); inst[1] = (inst[1] & 0xffff0000) | ((new_target >> 32) & 0xffff); inst[3] = (inst[3] & 0xffff0000) | ((new_target >> 16) & 0xffff); inst[4] = (inst[4] & 0xffff0000) | (new_target & 0xffff); + SLJIT_UPDATE_WX_FLAGS(inst, inst + 5, 1); inst = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); SLJIT_CACHE_FLUSH(inst, inst + 5); } SLJIT_API_FUNC_ATTRIBUTE void sljit_set_const(sljit_uw addr, sljit_sw new_constant, sljit_sw executable_offset) { - sljit_ins *inst = (sljit_ins*)addr; - - inst[0] = (inst[0] & 0xffff0000) | ((new_constant >> 48) & 0xffff); - inst[1] = (inst[1] & 0xffff0000) | ((new_constant >> 32) & 0xffff); - inst[3] = (inst[3] & 0xffff0000) | ((new_constant >> 16) & 0xffff); - inst[4] = (inst[4] & 0xffff0000) | (new_constant & 0xffff); - inst = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); - SLJIT_CACHE_FLUSH(inst, inst + 5); + sljit_set_jump_addr(addr, new_constant, executable_offset); } diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativePPC_common.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativePPC_common.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativePPC_common.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativePPC_common.c 2022-01-25 17:23:44.132496334 +0000 @@ -404,7 +404,7 @@ compiler->size += (sizeof(struct sljit_function_context) / sizeof(sljit_ins)); #endif #endif - code = (sljit_ins*)SLJIT_MALLOC_EXEC(compiler->size * sizeof(sljit_ins)); + code = (sljit_ins*)SLJIT_MALLOC_EXEC(compiler->size * sizeof(sljit_ins), compiler->exec_allocator_data); PTR_FAIL_WITH_EXEC_IF(code); buf = compiler->buf; @@ -607,6 +607,7 @@ code_ptr = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset); SLJIT_CACHE_FLUSH(code, code_ptr); + SLJIT_UPDATE_WX_FLAGS(code, code_ptr, 1); #if (defined SLJIT_INDIRECT_CALL && SLJIT_INDIRECT_CALL) return code_ptr; diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeS390X.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeS390X.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeS390X.c 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeS390X.c 2022-01-25 17:23:44.132496334 +0000 @@ -0,0 +1,2812 @@ +/* + * Stack-less Just-In-Time compiler + * + * Copyright Zoltan Herczeg (hzmester@freemail.hu). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND CONTRIBUTORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER(S) OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include + +#ifdef __ARCH__ +#define ENABLE_STATIC_FACILITY_DETECTION 1 +#else +#define ENABLE_STATIC_FACILITY_DETECTION 0 +#endif +#define ENABLE_DYNAMIC_FACILITY_DETECTION 1 + +SLJIT_API_FUNC_ATTRIBUTE const char* sljit_get_platform_name(void) +{ + return "s390x" SLJIT_CPUINFO; +} + +/* Instructions. */ +typedef sljit_uw sljit_ins; + +/* Instruction tags (most significant halfword). */ +const sljit_ins sljit_ins_const = (sljit_ins)1 << 48; + +static const sljit_u8 reg_map[SLJIT_NUMBER_OF_REGISTERS + 4] = { + 14, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 0, 1 +}; + +/* there are also a[2-15] available, but they are slower to access and + * their use is limited as mundaym explained: + * https://github.com/zherczeg/sljit/pull/91#discussion_r486895689 + */ + +/* General Purpose Registers [0-15]. */ +typedef sljit_uw sljit_gpr; + +/* + * WARNING + * the following code is non standard and should be improved for + * consistency, but doesn't use SLJIT_NUMBER_OF_REGISTERS based + * registers because r0 and r1 are the ABI recommended volatiles. + * there is a gpr() function that maps sljit to physical register numbers + * that should be used instead of the usual index into reg_map[] and + * will be retired ASAP (TODO: carenas) + */ + +const sljit_gpr r0 = 0; /* reg_map[SLJIT_NUMBER_OF_REGISTERS + 2]: 0 in address calculations; reserved */ +const sljit_gpr r1 = 1; /* reg_map[SLJIT_NUMBER_OF_REGISTERS + 3]: reserved */ +const sljit_gpr r2 = 2; /* reg_map[1]: 1st argument */ +const sljit_gpr r3 = 3; /* reg_map[2]: 2nd argument */ +const sljit_gpr r4 = 4; /* reg_map[3]: 3rd argument */ +const sljit_gpr r5 = 5; /* reg_map[4]: 4th argument */ +const sljit_gpr r6 = 6; /* reg_map[5]: 5th argument; 1st saved register */ +const sljit_gpr r7 = 7; /* reg_map[6] */ +const sljit_gpr r8 = 8; /* reg_map[7] */ +const sljit_gpr r9 = 9; /* reg_map[8] */ +const sljit_gpr r10 = 10; /* reg_map[9] */ +const sljit_gpr r11 = 11; /* reg_map[10] */ +const sljit_gpr r12 = 12; /* reg_map[11]: GOT */ +const sljit_gpr r13 = 13; /* reg_map[12]: Literal Pool pointer */ +const sljit_gpr r14 = 14; /* reg_map[0]: return address and flag register */ +const sljit_gpr r15 = 15; /* reg_map[SLJIT_NUMBER_OF_REGISTERS + 1]: stack pointer */ + +/* WARNING: r12 and r13 shouldn't be used as per ABI recommendation */ +/* TODO(carenas): r12 might conflict in PIC code, reserve? */ +/* TODO(carenas): r13 is usually pointed to "pool" per ABI, using a tmp + * like we do know might be faster though, reserve? + */ + +/* TODO(carenas): should be named TMP_REG[1-2] for consistency */ +#define tmp0 r0 +#define tmp1 r1 + +/* TODO(carenas): flags should move to a different register so that + * link register doesn't need to change + */ + +/* Link registers. The normal link register is r14, but since + we use that for flags we need to use r0 instead to do fast + calls so that flags are preserved. */ +const sljit_gpr link_r = 14; /* r14 */ +const sljit_gpr fast_link_r = 0; /* r0 */ + +/* Flag register layout: + + 0 32 33 34 36 64 + +---------------+---+---+-------+-------+ + | ZERO | 0 | 0 | C C |///////| + +---------------+---+---+-------+-------+ +*/ +const sljit_gpr flag_r = 14; /* r14 */ + +struct sljit_s390x_const { + struct sljit_const const_; /* must be first */ + sljit_sw init_value; /* required to build literal pool */ +}; + +/* Convert SLJIT register to hardware register. */ +static SLJIT_INLINE sljit_gpr gpr(sljit_s32 r) +{ + SLJIT_ASSERT(r != SLJIT_UNUSED); + SLJIT_ASSERT(r < (sljit_s32)(sizeof(reg_map) / sizeof(reg_map[0]))); + return reg_map[r]; +} + +/* Size of instruction in bytes. Tags must already be cleared. */ +static SLJIT_INLINE sljit_uw sizeof_ins(sljit_ins ins) +{ + /* keep faulting instructions */ + if (ins == 0) + return 2; + + if ((ins & 0x00000000ffffL) == ins) + return 2; + if ((ins & 0x0000ffffffffL) == ins) + return 4; + if ((ins & 0xffffffffffffL) == ins) + return 6; + + SLJIT_UNREACHABLE(); + return (sljit_uw)-1; +} + +static sljit_s32 push_inst(struct sljit_compiler *compiler, sljit_ins ins) +{ + sljit_ins *ibuf = (sljit_ins *)ensure_buf(compiler, sizeof(sljit_ins)); + FAIL_IF(!ibuf); + *ibuf = ins; + compiler->size++; + return SLJIT_SUCCESS; +} + +static sljit_s32 encode_inst(void **ptr, sljit_ins ins) +{ + sljit_u16 *ibuf = (sljit_u16 *)*ptr; + sljit_uw size = sizeof_ins(ins); + + SLJIT_ASSERT((size & 6) == size); + switch (size) { + case 6: + *ibuf++ = (sljit_u16)(ins >> 32); + /* fallthrough */ + case 4: + *ibuf++ = (sljit_u16)(ins >> 16); + /* fallthrough */ + case 2: + *ibuf++ = (sljit_u16)(ins); + } + *ptr = (void*)ibuf; + return SLJIT_SUCCESS; +} + +/* Map the given type to a 4-bit condition code mask. */ +static SLJIT_INLINE sljit_u8 get_cc(sljit_s32 type) { + const sljit_u8 eq = 1 << 3; /* equal {,to zero} */ + const sljit_u8 lt = 1 << 2; /* less than {,zero} */ + const sljit_u8 gt = 1 << 1; /* greater than {,zero} */ + const sljit_u8 ov = 1 << 0; /* {overflow,NaN} */ + + switch (type) { + case SLJIT_EQUAL: + case SLJIT_EQUAL_F64: + return eq; + + case SLJIT_NOT_EQUAL: + case SLJIT_NOT_EQUAL_F64: + return ~eq; + + case SLJIT_LESS: + case SLJIT_SIG_LESS: + case SLJIT_LESS_F64: + return lt; + + case SLJIT_LESS_EQUAL: + case SLJIT_SIG_LESS_EQUAL: + case SLJIT_LESS_EQUAL_F64: + return (lt | eq); + + case SLJIT_GREATER: + case SLJIT_SIG_GREATER: + case SLJIT_GREATER_F64: + return gt; + + case SLJIT_GREATER_EQUAL: + case SLJIT_SIG_GREATER_EQUAL: + case SLJIT_GREATER_EQUAL_F64: + return (gt | eq); + + case SLJIT_OVERFLOW: + case SLJIT_MUL_OVERFLOW: + case SLJIT_UNORDERED_F64: + return ov; + + case SLJIT_NOT_OVERFLOW: + case SLJIT_MUL_NOT_OVERFLOW: + case SLJIT_ORDERED_F64: + return ~ov; + } + + SLJIT_UNREACHABLE(); + return (sljit_u8)-1; +} + +/* Facility to bit index mappings. + Note: some facilities share the same bit index. */ +typedef sljit_uw facility_bit; +#define STORE_FACILITY_LIST_EXTENDED_FACILITY 7 +#define FAST_LONG_DISPLACEMENT_FACILITY 19 +#define EXTENDED_IMMEDIATE_FACILITY 21 +#define GENERAL_INSTRUCTION_EXTENSION_FACILITY 34 +#define DISTINCT_OPERAND_FACILITY 45 +#define HIGH_WORD_FACILITY 45 +#define POPULATION_COUNT_FACILITY 45 +#define LOAD_STORE_ON_CONDITION_1_FACILITY 45 +#define MISCELLANEOUS_INSTRUCTION_EXTENSIONS_1_FACILITY 49 +#define LOAD_STORE_ON_CONDITION_2_FACILITY 53 +#define MISCELLANEOUS_INSTRUCTION_EXTENSIONS_2_FACILITY 58 +#define VECTOR_FACILITY 129 +#define VECTOR_ENHANCEMENTS_1_FACILITY 135 + +/* Report whether a facility is known to be present due to the compiler + settings. This function should always be compiled to a constant + value given a constant argument. */ +static SLJIT_INLINE int have_facility_static(facility_bit x) +{ +#if ENABLE_STATIC_FACILITY_DETECTION + switch (x) { + case FAST_LONG_DISPLACEMENT_FACILITY: + return (__ARCH__ >= 6 /* z990 */); + case EXTENDED_IMMEDIATE_FACILITY: + case STORE_FACILITY_LIST_EXTENDED_FACILITY: + return (__ARCH__ >= 7 /* z9-109 */); + case GENERAL_INSTRUCTION_EXTENSION_FACILITY: + return (__ARCH__ >= 8 /* z10 */); + case DISTINCT_OPERAND_FACILITY: + return (__ARCH__ >= 9 /* z196 */); + case MISCELLANEOUS_INSTRUCTION_EXTENSIONS_1_FACILITY: + return (__ARCH__ >= 10 /* zEC12 */); + case LOAD_STORE_ON_CONDITION_2_FACILITY: + case VECTOR_FACILITY: + return (__ARCH__ >= 11 /* z13 */); + case MISCELLANEOUS_INSTRUCTION_EXTENSIONS_2_FACILITY: + case VECTOR_ENHANCEMENTS_1_FACILITY: + return (__ARCH__ >= 12 /* z14 */); + default: + SLJIT_UNREACHABLE(); + } +#endif + return 0; +} + +static SLJIT_INLINE unsigned long get_hwcap() +{ + static unsigned long hwcap = 0; + if (SLJIT_UNLIKELY(!hwcap)) { + hwcap = getauxval(AT_HWCAP); + SLJIT_ASSERT(hwcap != 0); + } + return hwcap; +} + +static SLJIT_INLINE int have_stfle() +{ + if (have_facility_static(STORE_FACILITY_LIST_EXTENDED_FACILITY)) + return 1; + + return (get_hwcap() & HWCAP_S390_STFLE); +} + +/* Report whether the given facility is available. This function always + performs a runtime check. */ +static int have_facility_dynamic(facility_bit x) +{ +#if ENABLE_DYNAMIC_FACILITY_DETECTION + static struct { + sljit_uw bits[4]; + } cpu_features; + size_t size = sizeof(cpu_features); + const sljit_uw word_index = x >> 6; + const sljit_uw bit_index = ((1UL << 63) >> (x & 63)); + + SLJIT_ASSERT(x < size * 8); + if (SLJIT_UNLIKELY(!have_stfle())) + return 0; + + if (SLJIT_UNLIKELY(cpu_features.bits[0] == 0)) { + __asm__ __volatile__ ( + "lgr %%r0, %0;" + "stfle 0(%1);" + /* outputs */: + /* inputs */: "d" ((size / 8) - 1), "a" (&cpu_features) + /* clobbers */: "r0", "cc", "memory" + ); + SLJIT_ASSERT(cpu_features.bits[0] != 0); + } + return (cpu_features.bits[word_index] & bit_index) != 0; +#else + return 0; +#endif +} + +#define HAVE_FACILITY(name, bit) \ +static SLJIT_INLINE int name() \ +{ \ + static int have = -1; \ + /* Static check first. May allow the function to be optimized away. */ \ + if (have_facility_static(bit)) \ + have = 1; \ + else if (SLJIT_UNLIKELY(have < 0)) \ + have = have_facility_dynamic(bit) ? 1 : 0; \ +\ + return have; \ +} + +HAVE_FACILITY(have_eimm, EXTENDED_IMMEDIATE_FACILITY) +HAVE_FACILITY(have_ldisp, FAST_LONG_DISPLACEMENT_FACILITY) +HAVE_FACILITY(have_genext, GENERAL_INSTRUCTION_EXTENSION_FACILITY) +HAVE_FACILITY(have_lscond1, LOAD_STORE_ON_CONDITION_1_FACILITY) +HAVE_FACILITY(have_lscond2, LOAD_STORE_ON_CONDITION_2_FACILITY) +HAVE_FACILITY(have_misc2, MISCELLANEOUS_INSTRUCTION_EXTENSIONS_2_FACILITY) +#undef HAVE_FACILITY + +#define is_u12(d) (0 <= (d) && (d) <= 0x00000fffL) +#define is_u32(d) (0 <= (d) && (d) <= 0xffffffffL) + +#define CHECK_SIGNED(v, bitlen) \ + ((v) == (((v) << (sizeof(v) * 8 - bitlen)) >> (sizeof(v) * 8 - bitlen))) + +#define is_s16(d) CHECK_SIGNED((d), 16) +#define is_s20(d) CHECK_SIGNED((d), 20) +#define is_s32(d) CHECK_SIGNED((d), 32) + +static SLJIT_INLINE sljit_uw disp_s20(sljit_s32 d) +{ + sljit_uw dh = (d >> 12) & 0xff; + sljit_uw dl = (d << 8) & 0xfff00; + + SLJIT_ASSERT(is_s20(d)); + return dh | dl; +} + +/* TODO(carenas): variadic macro is not strictly needed */ +#define SLJIT_S390X_INSTRUCTION(op, ...) \ +static SLJIT_INLINE sljit_ins op(__VA_ARGS__) + +/* RR form instructions. */ +#define SLJIT_S390X_RR(name, pattern) \ +SLJIT_S390X_INSTRUCTION(name, sljit_gpr dst, sljit_gpr src) \ +{ \ + return (pattern) | ((dst & 0xf) << 4) | (src & 0xf); \ +} + +/* ADD */ +SLJIT_S390X_RR(ar, 0x1a00) + +/* ADD LOGICAL */ +SLJIT_S390X_RR(alr, 0x1e00) + +/* AND */ +SLJIT_S390X_RR(nr, 0x1400) + +/* BRANCH AND SAVE */ +SLJIT_S390X_RR(basr, 0x0d00) + +/* BRANCH ON CONDITION */ +SLJIT_S390X_RR(bcr, 0x0700) /* TODO(mundaym): type for mask? */ + +/* COMPARE */ +SLJIT_S390X_RR(cr, 0x1900) + +/* COMPARE LOGICAL */ +SLJIT_S390X_RR(clr, 0x1500) + +/* DIVIDE */ +SLJIT_S390X_RR(dr, 0x1d00) + +/* EXCLUSIVE OR */ +SLJIT_S390X_RR(xr, 0x1700) + +/* LOAD */ +SLJIT_S390X_RR(lr, 0x1800) + +/* LOAD COMPLEMENT */ +SLJIT_S390X_RR(lcr, 0x1300) + +/* OR */ +SLJIT_S390X_RR(or, 0x1600) + +/* SUBTRACT */ +SLJIT_S390X_RR(sr, 0x1b00) + +/* SUBTRACT LOGICAL */ +SLJIT_S390X_RR(slr, 0x1f00) + +#undef SLJIT_S390X_RR + +/* RRE form instructions */ +#define SLJIT_S390X_RRE(name, pattern) \ +SLJIT_S390X_INSTRUCTION(name, sljit_gpr dst, sljit_gpr src) \ +{ \ + return (pattern) | ((dst & 0xf) << 4) | (src & 0xf); \ +} + +/* ADD */ +SLJIT_S390X_RRE(agr, 0xb9080000) + +/* ADD LOGICAL */ +SLJIT_S390X_RRE(algr, 0xb90a0000) + +/* ADD LOGICAL WITH CARRY */ +SLJIT_S390X_RRE(alcr, 0xb9980000) +SLJIT_S390X_RRE(alcgr, 0xb9880000) + +/* AND */ +SLJIT_S390X_RRE(ngr, 0xb9800000) + +/* COMPARE */ +SLJIT_S390X_RRE(cgr, 0xb9200000) + +/* COMPARE LOGICAL */ +SLJIT_S390X_RRE(clgr, 0xb9210000) + +/* DIVIDE LOGICAL */ +SLJIT_S390X_RRE(dlr, 0xb9970000) +SLJIT_S390X_RRE(dlgr, 0xb9870000) + +/* DIVIDE SINGLE */ +SLJIT_S390X_RRE(dsgr, 0xb90d0000) + +/* EXCLUSIVE OR */ +SLJIT_S390X_RRE(xgr, 0xb9820000) + +/* LOAD */ +SLJIT_S390X_RRE(lgr, 0xb9040000) +SLJIT_S390X_RRE(lgfr, 0xb9140000) + +/* LOAD BYTE */ +SLJIT_S390X_RRE(lbr, 0xb9260000) +SLJIT_S390X_RRE(lgbr, 0xb9060000) + +/* LOAD COMPLEMENT */ +SLJIT_S390X_RRE(lcgr, 0xb9030000) + +/* LOAD HALFWORD */ +SLJIT_S390X_RRE(lhr, 0xb9270000) +SLJIT_S390X_RRE(lghr, 0xb9070000) + +/* LOAD LOGICAL */ +SLJIT_S390X_RRE(llgfr, 0xb9160000) + +/* LOAD LOGICAL CHARACTER */ +SLJIT_S390X_RRE(llcr, 0xb9940000) +SLJIT_S390X_RRE(llgcr, 0xb9840000) + +/* LOAD LOGICAL HALFWORD */ +SLJIT_S390X_RRE(llhr, 0xb9950000) +SLJIT_S390X_RRE(llghr, 0xb9850000) + +/* MULTIPLY LOGICAL */ +SLJIT_S390X_RRE(mlgr, 0xb9860000) + +/* MULTIPLY SINGLE */ +SLJIT_S390X_RRE(msr, 0xb2520000) +SLJIT_S390X_RRE(msgr, 0xb90c0000) +SLJIT_S390X_RRE(msgfr, 0xb91c0000) + +/* OR */ +SLJIT_S390X_RRE(ogr, 0xb9810000) + +/* SUBTRACT */ +SLJIT_S390X_RRE(sgr, 0xb9090000) + +/* SUBTRACT LOGICAL */ +SLJIT_S390X_RRE(slgr, 0xb90b0000) + +/* SUBTRACT LOGICAL WITH BORROW */ +SLJIT_S390X_RRE(slbr, 0xb9990000) +SLJIT_S390X_RRE(slbgr, 0xb9890000) + +#undef SLJIT_S390X_RRE + +/* RI-a form instructions */ +#define SLJIT_S390X_RIA(name, pattern, imm_type) \ +SLJIT_S390X_INSTRUCTION(name, sljit_gpr reg, imm_type imm) \ +{ \ + return (pattern) | ((reg & 0xf) << 20) | (imm & 0xffff); \ +} + +/* ADD HALFWORD IMMEDIATE */ +SLJIT_S390X_RIA(ahi, 0xa70a0000, sljit_s16) +SLJIT_S390X_RIA(aghi, 0xa70b0000, sljit_s16) + +/* COMPARE HALFWORD IMMEDIATE */ +SLJIT_S390X_RIA(chi, 0xa70e0000, sljit_s16) +SLJIT_S390X_RIA(cghi, 0xa70f0000, sljit_s16) + +/* LOAD HALFWORD IMMEDIATE */ +SLJIT_S390X_RIA(lhi, 0xa7080000, sljit_s16) +SLJIT_S390X_RIA(lghi, 0xa7090000, sljit_s16) + +/* LOAD LOGICAL IMMEDIATE */ +SLJIT_S390X_RIA(llihh, 0xa50c0000, sljit_u16) +SLJIT_S390X_RIA(llihl, 0xa50d0000, sljit_u16) +SLJIT_S390X_RIA(llilh, 0xa50e0000, sljit_u16) +SLJIT_S390X_RIA(llill, 0xa50f0000, sljit_u16) + +/* MULTIPLY HALFWORD IMMEDIATE */ +SLJIT_S390X_RIA(mhi, 0xa70c0000, sljit_s16) +SLJIT_S390X_RIA(mghi, 0xa70d0000, sljit_s16) + +/* OR IMMEDIATE */ +SLJIT_S390X_RIA(oilh, 0xa50a0000, sljit_u16) + +/* TEST UNDER MASK */ +SLJIT_S390X_RIA(tmlh, 0xa7000000, sljit_u16) + +#undef SLJIT_S390X_RIA + +/* RIL-a form instructions (requires extended immediate facility) */ +#define SLJIT_S390X_RILA(name, pattern, imm_type) \ +SLJIT_S390X_INSTRUCTION(name, sljit_gpr reg, imm_type imm) \ +{ \ + SLJIT_ASSERT(have_eimm()); \ + return (pattern) | ((sljit_ins)(reg & 0xf) << 36) | (imm & 0xffffffff); \ +} + +/* ADD IMMEDIATE */ +SLJIT_S390X_RILA(afi, 0xc20900000000, sljit_s32) +SLJIT_S390X_RILA(agfi, 0xc20800000000, sljit_s32) + +/* ADD IMMEDIATE HIGH */ +SLJIT_S390X_RILA(aih, 0xcc0800000000, sljit_s32) /* TODO(mundaym): high-word facility? */ + +/* ADD LOGICAL IMMEDIATE */ +SLJIT_S390X_RILA(alfi, 0xc20b00000000, sljit_u32) +SLJIT_S390X_RILA(algfi, 0xc20a00000000, sljit_u32) + +/* AND IMMEDIATE */ +SLJIT_S390X_RILA(nihf, 0xc00a00000000, sljit_u32) +SLJIT_S390X_RILA(nilf, 0xc00b00000000, sljit_u32) + +/* COMPARE IMMEDIATE */ +SLJIT_S390X_RILA(cfi, 0xc20d00000000, sljit_s32) +SLJIT_S390X_RILA(cgfi, 0xc20c00000000, sljit_s32) + +/* COMPARE IMMEDIATE HIGH */ +SLJIT_S390X_RILA(cih, 0xcc0d00000000, sljit_s32) /* TODO(mundaym): high-word facility? */ + +/* COMPARE LOGICAL IMMEDIATE */ +SLJIT_S390X_RILA(clfi, 0xc20f00000000, sljit_u32) +SLJIT_S390X_RILA(clgfi, 0xc20e00000000, sljit_u32) + +/* EXCLUSIVE OR IMMEDIATE */ +SLJIT_S390X_RILA(xilf, 0xc00700000000, sljit_u32) + +/* INSERT IMMEDIATE */ +SLJIT_S390X_RILA(iihf, 0xc00800000000, sljit_u32) +SLJIT_S390X_RILA(iilf, 0xc00900000000, sljit_u32) + +/* LOAD IMMEDIATE */ +SLJIT_S390X_RILA(lgfi, 0xc00100000000, sljit_s32) + +/* LOAD LOGICAL IMMEDIATE */ +SLJIT_S390X_RILA(llihf, 0xc00e00000000, sljit_u32) +SLJIT_S390X_RILA(llilf, 0xc00f00000000, sljit_u32) + +/* OR IMMEDIATE */ +SLJIT_S390X_RILA(oilf, 0xc00d00000000, sljit_u32) + +#undef SLJIT_S390X_RILA + +/* RX-a form instructions */ +#define SLJIT_S390X_RXA(name, pattern) \ +SLJIT_S390X_INSTRUCTION(name, sljit_gpr r, sljit_u16 d, sljit_gpr x, sljit_gpr b) \ +{ \ + sljit_ins ri, xi, bi, di; \ +\ + SLJIT_ASSERT((d & 0xfff) == d); \ + ri = (sljit_ins)(r & 0xf) << 20; \ + xi = (sljit_ins)(x & 0xf) << 16; \ + bi = (sljit_ins)(b & 0xf) << 12; \ + di = (sljit_ins)(d & 0xfff); \ +\ + return (pattern) | ri | xi | bi | di; \ +} + +/* ADD */ +SLJIT_S390X_RXA(a, 0x5a000000) + +/* ADD LOGICAL */ +SLJIT_S390X_RXA(al, 0x5e000000) + +/* AND */ +SLJIT_S390X_RXA(n, 0x54000000) + +/* EXCLUSIVE OR */ +SLJIT_S390X_RXA(x, 0x57000000) + +/* LOAD */ +SLJIT_S390X_RXA(l, 0x58000000) + +/* LOAD ADDRESS */ +SLJIT_S390X_RXA(la, 0x41000000) + +/* LOAD HALFWORD */ +SLJIT_S390X_RXA(lh, 0x48000000) + +/* MULTIPLY SINGLE */ +SLJIT_S390X_RXA(ms, 0x71000000) + +/* OR */ +SLJIT_S390X_RXA(o, 0x56000000) + +/* STORE */ +SLJIT_S390X_RXA(st, 0x50000000) + +/* STORE CHARACTER */ +SLJIT_S390X_RXA(stc, 0x42000000) + +/* STORE HALFWORD */ +SLJIT_S390X_RXA(sth, 0x40000000) + +/* SUBTRACT */ +SLJIT_S390X_RXA(s, 0x5b000000) + +/* SUBTRACT LOGICAL */ +SLJIT_S390X_RXA(sl, 0x5f000000) + +#undef SLJIT_S390X_RXA + +/* RXY-a instructions */ +#define SLJIT_S390X_RXYA(name, pattern, cond) \ +SLJIT_S390X_INSTRUCTION(name, sljit_gpr r, sljit_s32 d, sljit_gpr x, sljit_gpr b) \ +{ \ + sljit_ins ri, xi, bi, di; \ +\ + SLJIT_ASSERT(cond); \ + ri = (sljit_ins)(r & 0xf) << 36; \ + xi = (sljit_ins)(x & 0xf) << 32; \ + bi = (sljit_ins)(b & 0xf) << 28; \ + di = (sljit_ins)disp_s20(d) << 8; \ +\ + return (pattern) | ri | xi | bi | di; \ +} + +/* ADD */ +SLJIT_S390X_RXYA(ay, 0xe3000000005a, have_ldisp()) +SLJIT_S390X_RXYA(ag, 0xe30000000008, 1) + +/* ADD LOGICAL */ +SLJIT_S390X_RXYA(aly, 0xe3000000005e, have_ldisp()) +SLJIT_S390X_RXYA(alg, 0xe3000000000a, 1) + +/* ADD LOGICAL WITH CARRY */ +SLJIT_S390X_RXYA(alc, 0xe30000000098, 1) +SLJIT_S390X_RXYA(alcg, 0xe30000000088, 1) + +/* AND */ +SLJIT_S390X_RXYA(ny, 0xe30000000054, have_ldisp()) +SLJIT_S390X_RXYA(ng, 0xe30000000080, 1) + +/* EXCLUSIVE OR */ +SLJIT_S390X_RXYA(xy, 0xe30000000057, have_ldisp()) +SLJIT_S390X_RXYA(xg, 0xe30000000082, 1) + +/* LOAD */ +SLJIT_S390X_RXYA(ly, 0xe30000000058, have_ldisp()) +SLJIT_S390X_RXYA(lg, 0xe30000000004, 1) +SLJIT_S390X_RXYA(lgf, 0xe30000000014, 1) + +/* LOAD BYTE */ +SLJIT_S390X_RXYA(lb, 0xe30000000076, have_ldisp()) +SLJIT_S390X_RXYA(lgb, 0xe30000000077, have_ldisp()) + +/* LOAD HALFWORD */ +SLJIT_S390X_RXYA(lhy, 0xe30000000078, have_ldisp()) +SLJIT_S390X_RXYA(lgh, 0xe30000000015, 1) + +/* LOAD LOGICAL */ +SLJIT_S390X_RXYA(llgf, 0xe30000000016, 1) + +/* LOAD LOGICAL CHARACTER */ +SLJIT_S390X_RXYA(llc, 0xe30000000094, have_eimm()) +SLJIT_S390X_RXYA(llgc, 0xe30000000090, 1) + +/* LOAD LOGICAL HALFWORD */ +SLJIT_S390X_RXYA(llh, 0xe30000000095, have_eimm()) +SLJIT_S390X_RXYA(llgh, 0xe30000000091, 1) + +/* MULTIPLY SINGLE */ +SLJIT_S390X_RXYA(msy, 0xe30000000051, have_ldisp()) +SLJIT_S390X_RXYA(msg, 0xe3000000000c, 1) + +/* OR */ +SLJIT_S390X_RXYA(oy, 0xe30000000056, have_ldisp()) +SLJIT_S390X_RXYA(og, 0xe30000000081, 1) + +/* STORE */ +SLJIT_S390X_RXYA(sty, 0xe30000000050, have_ldisp()) +SLJIT_S390X_RXYA(stg, 0xe30000000024, 1) + +/* STORE CHARACTER */ +SLJIT_S390X_RXYA(stcy, 0xe30000000072, have_ldisp()) + +/* STORE HALFWORD */ +SLJIT_S390X_RXYA(sthy, 0xe30000000070, have_ldisp()) + +/* SUBTRACT */ +SLJIT_S390X_RXYA(sy, 0xe3000000005b, have_ldisp()) +SLJIT_S390X_RXYA(sg, 0xe30000000009, 1) + +/* SUBTRACT LOGICAL */ +SLJIT_S390X_RXYA(sly, 0xe3000000005f, have_ldisp()) +SLJIT_S390X_RXYA(slg, 0xe3000000000b, 1) + +/* SUBTRACT LOGICAL WITH BORROW */ +SLJIT_S390X_RXYA(slb, 0xe30000000099, 1) +SLJIT_S390X_RXYA(slbg, 0xe30000000089, 1) + +#undef SLJIT_S390X_RXYA + +/* RS-a instructions */ +#define SLJIT_S390X_RSA(name, pattern) \ +SLJIT_S390X_INSTRUCTION(name, sljit_gpr reg, sljit_sw d, sljit_gpr b) \ +{ \ + sljit_ins r1 = (sljit_ins)(reg & 0xf) << 20; \ + sljit_ins b2 = (sljit_ins)(b & 0xf) << 12; \ + sljit_ins d2 = (sljit_ins)(d & 0xfff); \ + return (pattern) | r1 | b2 | d2; \ +} + +/* SHIFT LEFT SINGLE LOGICAL */ +SLJIT_S390X_RSA(sll, 0x89000000) + +/* SHIFT RIGHT SINGLE */ +SLJIT_S390X_RSA(sra, 0x8a000000) + +/* SHIFT RIGHT SINGLE LOGICAL */ +SLJIT_S390X_RSA(srl, 0x88000000) + +#undef SLJIT_S390X_RSA + +/* RSY-a instructions */ +#define SLJIT_S390X_RSYA(name, pattern, cond) \ +SLJIT_S390X_INSTRUCTION(name, sljit_gpr dst, sljit_gpr src, sljit_sw d, sljit_gpr b) \ +{ \ + sljit_ins r1, r3, b2, d2; \ +\ + SLJIT_ASSERT(cond); \ + r1 = (sljit_ins)(dst & 0xf) << 36; \ + r3 = (sljit_ins)(src & 0xf) << 32; \ + b2 = (sljit_ins)(b & 0xf) << 28; \ + d2 = (sljit_ins)disp_s20(d) << 8; \ +\ + return (pattern) | r1 | r3 | b2 | d2; \ +} + +/* LOAD MULTIPLE */ +SLJIT_S390X_RSYA(lmg, 0xeb0000000004, 1) + +/* SHIFT LEFT LOGICAL */ +SLJIT_S390X_RSYA(sllg, 0xeb000000000d, 1) + +/* SHIFT RIGHT SINGLE */ +SLJIT_S390X_RSYA(srag, 0xeb000000000a, 1) + +/* SHIFT RIGHT SINGLE LOGICAL */ +SLJIT_S390X_RSYA(srlg, 0xeb000000000c, 1) + +/* STORE MULTIPLE */ +SLJIT_S390X_RSYA(stmg, 0xeb0000000024, 1) + +#undef SLJIT_S390X_RSYA + +/* RIE-f instructions (require general-instructions-extension facility) */ +#define SLJIT_S390X_RIEF(name, pattern) \ +SLJIT_S390X_INSTRUCTION(name, sljit_gpr dst, sljit_gpr src, sljit_u8 start, sljit_u8 end, sljit_u8 rot) \ +{ \ + sljit_ins r1, r2, i3, i4, i5; \ +\ + SLJIT_ASSERT(have_genext()); \ + r1 = (sljit_ins)(dst & 0xf) << 36; \ + r2 = (sljit_ins)(src & 0xf) << 32; \ + i3 = (sljit_ins)start << 24; \ + i4 = (sljit_ins)end << 16; \ + i5 = (sljit_ins)rot << 8; \ +\ + return (pattern) | r1 | r2 | i3 | i4 | i5; \ +} + +/* ROTATE THEN AND SELECTED BITS */ +/* SLJIT_S390X_RIEF(rnsbg, 0xec0000000054) */ + +/* ROTATE THEN EXCLUSIVE OR SELECTED BITS */ +/* SLJIT_S390X_RIEF(rxsbg, 0xec0000000057) */ + +/* ROTATE THEN OR SELECTED BITS */ +SLJIT_S390X_RIEF(rosbg, 0xec0000000056) + +/* ROTATE THEN INSERT SELECTED BITS */ +/* SLJIT_S390X_RIEF(risbg, 0xec0000000055) */ +/* SLJIT_S390X_RIEF(risbgn, 0xec0000000059) */ + +/* ROTATE THEN INSERT SELECTED BITS HIGH */ +SLJIT_S390X_RIEF(risbhg, 0xec000000005d) + +/* ROTATE THEN INSERT SELECTED BITS LOW */ +/* SLJIT_S390X_RIEF(risblg, 0xec0000000051) */ + +#undef SLJIT_S390X_RIEF + +/* RRF-a instructions */ +#define SLJIT_S390X_RRFA(name, pattern, cond) \ +SLJIT_S390X_INSTRUCTION(name, sljit_gpr dst, sljit_gpr src1, sljit_gpr src2) \ +{ \ + sljit_ins r1, r2, r3; \ +\ + SLJIT_ASSERT(cond); \ + r1 = (sljit_ins)(dst & 0xf) << 4; \ + r2 = (sljit_ins)(src1 & 0xf); \ + r3 = (sljit_ins)(src2 & 0xf) << 12; \ +\ + return (pattern) | r3 | r1 | r2; \ +} + +/* MULTIPLY */ +SLJIT_S390X_RRFA(msrkc, 0xb9fd0000, have_misc2()) +SLJIT_S390X_RRFA(msgrkc, 0xb9ed0000, have_misc2()) + +#undef SLJIT_S390X_RRFA + +/* RRF-c instructions (require load/store-on-condition 1 facility) */ +#define SLJIT_S390X_RRFC(name, pattern) \ +SLJIT_S390X_INSTRUCTION(name, sljit_gpr dst, sljit_gpr src, sljit_uw mask) \ +{ \ + sljit_ins r1, r2, m3; \ +\ + SLJIT_ASSERT(have_lscond1()); \ + r1 = (sljit_ins)(dst & 0xf) << 4; \ + r2 = (sljit_ins)(src & 0xf); \ + m3 = (sljit_ins)(mask & 0xf) << 12; \ +\ + return (pattern) | m3 | r1 | r2; \ +} + +/* LOAD HALFWORD IMMEDIATE ON CONDITION */ +SLJIT_S390X_RRFC(locr, 0xb9f20000) +SLJIT_S390X_RRFC(locgr, 0xb9e20000) + +#undef SLJIT_S390X_RRFC + +/* RIE-g instructions (require load/store-on-condition 2 facility) */ +#define SLJIT_S390X_RIEG(name, pattern) \ +SLJIT_S390X_INSTRUCTION(name, sljit_gpr reg, sljit_sw imm, sljit_uw mask) \ +{ \ + sljit_ins r1, m3, i2; \ +\ + SLJIT_ASSERT(have_lscond2()); \ + r1 = (sljit_ins)(reg & 0xf) << 36; \ + m3 = (sljit_ins)(mask & 0xf) << 32; \ + i2 = (sljit_ins)(imm & 0xffffL) << 16; \ +\ + return (pattern) | r1 | m3 | i2; \ +} + +/* LOAD HALFWORD IMMEDIATE ON CONDITION */ +SLJIT_S390X_RIEG(lochi, 0xec0000000042) +SLJIT_S390X_RIEG(locghi, 0xec0000000046) + +#undef SLJIT_S390X_RIEG + +#define SLJIT_S390X_RILB(name, pattern, cond) \ +SLJIT_S390X_INSTRUCTION(name, sljit_gpr reg, sljit_sw ri) \ +{ \ + sljit_ins r1, ri2; \ +\ + SLJIT_ASSERT(cond); \ + r1 = (sljit_ins)(reg & 0xf) << 36; \ + ri2 = (sljit_ins)(ri & 0xffffffff); \ +\ + return (pattern) | r1 | ri2; \ +} + +/* BRANCH RELATIVE AND SAVE LONG */ +SLJIT_S390X_RILB(brasl, 0xc00500000000, 1) + +/* LOAD ADDRESS RELATIVE LONG */ +SLJIT_S390X_RILB(larl, 0xc00000000000, 1) + +/* LOAD RELATIVE LONG */ +SLJIT_S390X_RILB(lgrl, 0xc40800000000, have_genext()) + +#undef SLJIT_S390X_RILB + +SLJIT_S390X_INSTRUCTION(br, sljit_gpr target) +{ + return 0x07f0 | target; +} + +SLJIT_S390X_INSTRUCTION(brcl, sljit_uw mask, sljit_sw target) +{ + sljit_ins m1 = (sljit_ins)(mask & 0xf) << 36; + sljit_ins ri2 = (sljit_ins)target & 0xffffffff; + return 0xc00400000000L | m1 | ri2; +} + +SLJIT_S390X_INSTRUCTION(flogr, sljit_gpr dst, sljit_gpr src) +{ + sljit_ins r1 = ((sljit_ins)dst & 0xf) << 8; + sljit_ins r2 = ((sljit_ins)src & 0xf); + SLJIT_ASSERT(have_eimm()); + return 0xb9830000 | r1 | r2; +} + +/* INSERT PROGRAM MASK */ +SLJIT_S390X_INSTRUCTION(ipm, sljit_gpr dst) +{ + return 0xb2220000 | ((sljit_ins)(dst & 0xf) << 4); +} + +/* ROTATE THEN INSERT SELECTED BITS HIGH (ZERO) */ +SLJIT_S390X_INSTRUCTION(risbhgz, sljit_gpr dst, sljit_gpr src, sljit_u8 start, sljit_u8 end, sljit_u8 rot) +{ + return risbhg(dst, src, start, 0x8 | end, rot); +} + +#undef SLJIT_S390X_INSTRUCTION + +/* load condition code as needed to match type */ +static sljit_s32 push_load_cc(struct sljit_compiler *compiler, sljit_s32 type) +{ + type &= ~SLJIT_I32_OP; + switch (type) { + case SLJIT_ZERO: + case SLJIT_NOT_ZERO: + return push_inst(compiler, cih(flag_r, 0)); + break; + default: + return push_inst(compiler, tmlh(flag_r, 0x3000)); + break; + } + return SLJIT_SUCCESS; +} + +static sljit_s32 push_store_zero_flag(struct sljit_compiler *compiler, sljit_s32 op, sljit_gpr source) +{ + /* insert low 32-bits into high 32-bits of flag register */ + FAIL_IF(push_inst(compiler, risbhgz(flag_r, source, 0, 31, 32))); + if (!(op & SLJIT_I32_OP)) { + /* OR high 32-bits with high 32-bits of flag register */ + return push_inst(compiler, rosbg(flag_r, source, 0, 31, 0)); + } + return SLJIT_SUCCESS; +} + +/* load 64-bit immediate into register without clobbering flags */ +static sljit_s32 push_load_imm_inst(struct sljit_compiler *compiler, sljit_gpr target, sljit_sw v) +{ + /* 4 byte instructions */ + if (is_s16(v)) + return push_inst(compiler, lghi(target, (sljit_s16)v)); + + if ((sljit_uw)v == (v & 0x000000000000ffffU)) + return push_inst(compiler, llill(target, (sljit_u16)v)); + + if ((sljit_uw)v == (v & 0x00000000ffff0000U)) + return push_inst(compiler, llilh(target, (sljit_u16)(v >> 16))); + + if ((sljit_uw)v == (v & 0x0000ffff00000000U)) + return push_inst(compiler, llihl(target, (sljit_u16)(v >> 32))); + + if ((sljit_uw)v == (v & 0xffff000000000000U)) + return push_inst(compiler, llihh(target, (sljit_u16)(v >> 48))); + + /* 6 byte instructions (requires extended immediate facility) */ + if (have_eimm()) { + if (is_s32(v)) + return push_inst(compiler, lgfi(target, (sljit_s32)v)); + + if ((sljit_uw)v == (v & 0x00000000ffffffffU)) + return push_inst(compiler, llilf(target, (sljit_u32)v)); + + if ((sljit_uw)v == (v & 0xffffffff00000000U)) + return push_inst(compiler, llihf(target, (sljit_u32)(v >> 32))); + + FAIL_IF(push_inst(compiler, llilf(target, (sljit_u32)v))); + return push_inst(compiler, iihf(target, (sljit_u32)(v >> 32))); + } + /* TODO(mundaym): instruction sequences that don't use extended immediates */ + abort(); +} + +struct addr { + sljit_gpr base; + sljit_gpr index; + sljit_sw offset; +}; + +/* transform memory operand into D(X,B) form with a signed 20-bit offset */ +static sljit_s32 make_addr_bxy(struct sljit_compiler *compiler, + struct addr *addr, sljit_s32 mem, sljit_sw off, + sljit_gpr tmp /* clobbered, must not be r0 */) +{ + sljit_gpr base = r0; + sljit_gpr index = r0; + + SLJIT_ASSERT(tmp != r0); + if (mem & REG_MASK) + base = gpr(mem & REG_MASK); + + if (mem & OFFS_REG_MASK) { + index = gpr(OFFS_REG(mem)); + if (off != 0) { + /* shift and put the result into tmp */ + SLJIT_ASSERT(0 <= off && off < 64); + FAIL_IF(push_inst(compiler, sllg(tmp, index, off, 0))); + index = tmp; + off = 0; /* clear offset */ + } + } + else if (!is_s20(off)) { + FAIL_IF(push_load_imm_inst(compiler, tmp, off)); + index = tmp; + off = 0; /* clear offset */ + } + addr->base = base; + addr->index = index; + addr->offset = off; + return SLJIT_SUCCESS; +} + +/* transform memory operand into D(X,B) form with an unsigned 12-bit offset */ +static sljit_s32 make_addr_bx(struct sljit_compiler *compiler, + struct addr *addr, sljit_s32 mem, sljit_sw off, + sljit_gpr tmp /* clobbered, must not be r0 */) +{ + sljit_gpr base = r0; + sljit_gpr index = r0; + + SLJIT_ASSERT(tmp != r0); + if (mem & REG_MASK) + base = gpr(mem & REG_MASK); + + if (mem & OFFS_REG_MASK) { + index = gpr(OFFS_REG(mem)); + if (off != 0) { + /* shift and put the result into tmp */ + SLJIT_ASSERT(0 <= off && off < 64); + FAIL_IF(push_inst(compiler, sllg(tmp, index, off, 0))); + index = tmp; + off = 0; /* clear offset */ + } + } + else if (!is_u12(off)) { + FAIL_IF(push_load_imm_inst(compiler, tmp, off)); + index = tmp; + off = 0; /* clear offset */ + } + addr->base = base; + addr->index = index; + addr->offset = off; + return SLJIT_SUCCESS; +} + +#define EVAL(op, r, addr) op(r, addr.offset, addr.index, addr.base) +#define WHEN(cond, r, i1, i2, addr) \ + (cond) ? EVAL(i1, r, addr) : EVAL(i2, r, addr) + +static sljit_s32 load_word(struct sljit_compiler *compiler, sljit_gpr dst, + sljit_s32 src, sljit_sw srcw, + sljit_gpr tmp /* clobbered */, sljit_s32 is_32bit) +{ + struct addr addr; + sljit_ins ins; + + SLJIT_ASSERT(src & SLJIT_MEM); + if (have_ldisp() || !is_32bit) + FAIL_IF(make_addr_bxy(compiler, &addr, src, srcw, tmp)); + else + FAIL_IF(make_addr_bx(compiler, &addr, src, srcw, tmp)); + + if (is_32bit) + ins = WHEN(is_u12(addr.offset), dst, l, ly, addr); + else + ins = lg(dst, addr.offset, addr.index, addr.base); + + return push_inst(compiler, ins); +} + +static sljit_s32 store_word(struct sljit_compiler *compiler, sljit_gpr src, + sljit_s32 dst, sljit_sw dstw, + sljit_gpr tmp /* clobbered */, sljit_s32 is_32bit) +{ + struct addr addr; + sljit_ins ins; + + SLJIT_ASSERT(dst & SLJIT_MEM); + if (have_ldisp() || !is_32bit) + FAIL_IF(make_addr_bxy(compiler, &addr, dst, dstw, tmp)); + else + FAIL_IF(make_addr_bx(compiler, &addr, dst, dstw, tmp)); + + if (is_32bit) + ins = WHEN(is_u12(addr.offset), src, st, sty, addr); + else + ins = stg(src, addr.offset, addr.index, addr.base); + + return push_inst(compiler, ins); +} + +#undef WHEN + +SLJIT_API_FUNC_ATTRIBUTE void* sljit_generate_code(struct sljit_compiler *compiler) +{ + struct sljit_label *label; + struct sljit_jump *jump; + struct sljit_s390x_const *const_; + struct sljit_put_label *put_label; + sljit_sw executable_offset; + sljit_uw ins_size = 0; /* instructions */ + sljit_uw pool_size = 0; /* literal pool */ + sljit_uw pad_size; + sljit_uw i, j = 0; + struct sljit_memory_fragment *buf; + void *code, *code_ptr; + sljit_uw *pool, *pool_ptr; + + sljit_uw source; + sljit_sw offset; /* TODO(carenas): only need 32 bit */ + + CHECK_ERROR_PTR(); + CHECK_PTR(check_sljit_generate_code(compiler)); + reverse_buf(compiler); + + /* branch handling */ + label = compiler->labels; + jump = compiler->jumps; + put_label = compiler->put_labels; + + /* TODO(carenas): compiler->executable_size could be calculated + * before to avoid the following loop (except for + * pool_size) + */ + /* calculate the size of the code */ + for (buf = compiler->buf; buf != NULL; buf = buf->next) { + sljit_uw len = buf->used_size / sizeof(sljit_ins); + sljit_ins *ibuf = (sljit_ins *)buf->memory; + for (i = 0; i < len; ++i, ++j) { + sljit_ins ins = ibuf[i]; + + /* TODO(carenas): instruction tag vs size/addr == j + * using instruction tags for const is creative + * but unlike all other architectures, and is not + * done consistently for all other objects. + * This might need reviewing later. + */ + if (ins & sljit_ins_const) { + pool_size += sizeof(*pool); + ins &= ~sljit_ins_const; + } + if (label && label->size == j) { + label->size = ins_size; + label = label->next; + } + if (jump && jump->addr == j) { + if ((jump->flags & SLJIT_REWRITABLE_JUMP) || (jump->flags & JUMP_ADDR)) { + /* encoded: */ + /* brasl %r14, (or brcl , ) */ + /* replace with: */ + /* lgrl %r1, */ + /* bras %r14, %r1 (or bcr , %r1) */ + pool_size += sizeof(*pool); + ins_size += 2; + } + jump = jump->next; + } + if (put_label && put_label->addr == j) { + pool_size += sizeof(*pool); + put_label = put_label->next; + } + ins_size += sizeof_ins(ins); + } + } + + /* emit trailing label */ + if (label && label->size == j) { + label->size = ins_size; + label = label->next; + } + + SLJIT_ASSERT(!label); + SLJIT_ASSERT(!jump); + SLJIT_ASSERT(!put_label); + + /* pad code size to 8 bytes so is accessible with half word offsets */ + /* the literal pool needs to be doubleword aligned */ + pad_size = ((ins_size + 7UL) & ~7UL) - ins_size; + SLJIT_ASSERT(pad_size < 8UL); + + /* allocate target buffer */ + code = SLJIT_MALLOC_EXEC(ins_size + pad_size + pool_size, + compiler->exec_allocator_data); + PTR_FAIL_WITH_EXEC_IF(code); + code_ptr = code; + executable_offset = SLJIT_EXEC_OFFSET(code); + + /* TODO(carenas): pool is optional, and the ABI recommends it to + * be created before the function code, instead of + * globally; if generated code is too big could + * need offsets bigger than 32bit words and asser() + */ + pool = (sljit_uw *)((sljit_uw)code + ins_size + pad_size); + pool_ptr = pool; + const_ = (struct sljit_s390x_const *)compiler->consts; + + /* update label addresses */ + label = compiler->labels; + while (label) { + label->addr = (sljit_uw)SLJIT_ADD_EXEC_OFFSET( + (sljit_uw)code_ptr + label->size, executable_offset); + label = label->next; + } + + /* reset jumps */ + jump = compiler->jumps; + put_label = compiler->put_labels; + + /* emit the code */ + j = 0; + for (buf = compiler->buf; buf != NULL; buf = buf->next) { + sljit_uw len = buf->used_size / sizeof(sljit_ins); + sljit_ins *ibuf = (sljit_ins *)buf->memory; + for (i = 0; i < len; ++i, ++j) { + sljit_ins ins = ibuf[i]; + if (ins & sljit_ins_const) { + /* clear the const tag */ + ins &= ~sljit_ins_const; + + /* update instruction with relative address of constant */ + source = (sljit_uw)code_ptr; + offset = (sljit_uw)pool_ptr - source; + SLJIT_ASSERT(!(offset & 1)); + offset >>= 1; /* halfword (not byte) offset */ + SLJIT_ASSERT(is_s32(offset)); + ins |= (sljit_ins)offset & 0xffffffff; + + /* update address */ + const_->const_.addr = (sljit_uw)pool_ptr; + + /* store initial value into pool and update pool address */ + *(pool_ptr++) = const_->init_value; + + /* move to next constant */ + const_ = (struct sljit_s390x_const *)const_->const_.next; + } + if (jump && jump->addr == j) { + sljit_sw target = (jump->flags & JUMP_LABEL) ? jump->u.label->addr : jump->u.target; + if ((jump->flags & SLJIT_REWRITABLE_JUMP) || (jump->flags & JUMP_ADDR)) { + jump->addr = (sljit_uw)pool_ptr; + + /* load address into tmp1 */ + source = (sljit_uw)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset); + offset = (sljit_uw)SLJIT_ADD_EXEC_OFFSET(pool_ptr, executable_offset) - source; + SLJIT_ASSERT(!(offset & 1)); + offset >>= 1; + SLJIT_ASSERT(is_s32(offset)); + encode_inst(&code_ptr, + lgrl(tmp1, offset & 0xffffffff)); + + /* store jump target into pool and update pool address */ + *(pool_ptr++) = target; + + /* branch to tmp1 */ + sljit_ins op = (ins >> 32) & 0xf; + sljit_ins arg = (ins >> 36) & 0xf; + switch (op) { + case 4: /* brcl -> bcr */ + ins = bcr(arg, tmp1); + break; + case 5: /* brasl -> basr */ + ins = basr(arg, tmp1); + break; + default: + abort(); + } + } + else { + jump->addr = (sljit_uw)code_ptr + 2; + source = (sljit_uw)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset); + offset = target - source; + + /* offset must be halfword aligned */ + SLJIT_ASSERT(!(offset & 1)); + offset >>= 1; + SLJIT_ASSERT(is_s32(offset)); /* TODO(mundaym): handle arbitrary offsets */ + + /* patch jump target */ + ins |= (sljit_ins)offset & 0xffffffff; + } + jump = jump->next; + } + if (put_label && put_label->addr == j) { + source = (sljit_uw)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset); + + SLJIT_ASSERT(put_label->label); + put_label->addr = (sljit_uw)code_ptr; + + /* store target into pool */ + *pool_ptr = put_label->label->addr; + offset = (sljit_uw)SLJIT_ADD_EXEC_OFFSET(pool_ptr, executable_offset) - source; + pool_ptr++; + + SLJIT_ASSERT(!(offset & 1)); + offset >>= 1; + SLJIT_ASSERT(is_s32(offset)); + ins |= (sljit_ins)offset & 0xffffffff; + + put_label = put_label->next; + } + encode_inst(&code_ptr, ins); + } + } + SLJIT_ASSERT((sljit_u8 *)code + ins_size == code_ptr); + SLJIT_ASSERT((sljit_u8 *)pool + pool_size == (sljit_u8 *)pool_ptr); + + compiler->error = SLJIT_ERR_COMPILED; + compiler->executable_offset = executable_offset; + compiler->executable_size = ins_size; + code = SLJIT_ADD_EXEC_OFFSET(code, executable_offset); + code_ptr = SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset); + SLJIT_CACHE_FLUSH(code, code_ptr); + SLJIT_UPDATE_WX_FLAGS(code, code_ptr, 1); + return code; +} + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_has_cpu_feature(sljit_s32 feature_type) +{ + /* TODO(mundaym): implement all */ + switch (feature_type) { + case SLJIT_HAS_CLZ: + return have_eimm() ? 1 : 0; /* FLOGR instruction */ + case SLJIT_HAS_CMOV: + return have_lscond1() ? 1 : 0; + case SLJIT_HAS_FPU: + return 0; + } + return 0; +} + +/* --------------------------------------------------------------------- */ +/* Entry, exit */ +/* --------------------------------------------------------------------- */ + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_enter(struct sljit_compiler *compiler, + sljit_s32 options, sljit_s32 arg_types, sljit_s32 scratches, sljit_s32 saveds, + sljit_s32 fscratches, sljit_s32 fsaveds, sljit_s32 local_size) +{ + sljit_s32 args = get_arg_count(arg_types); + sljit_sw frame_size; + + CHECK_ERROR(); + CHECK(check_sljit_emit_enter(compiler, options, arg_types, scratches, saveds, fscratches, fsaveds, local_size)); + set_emit_enter(compiler, options, arg_types, scratches, saveds, fscratches, fsaveds, local_size); + + /* saved registers go in callee allocated save area */ + compiler->local_size = (local_size + 0xf) & ~0xf; + frame_size = compiler->local_size + SLJIT_S390X_DEFAULT_STACK_FRAME_SIZE; + + FAIL_IF(push_inst(compiler, stmg(r6, r15, r6 * sizeof(sljit_sw), r15))); /* save registers TODO(MGM): optimize */ + if (frame_size != 0) { + if (is_s16(-frame_size)) + FAIL_IF(push_inst(compiler, aghi(r15, -((sljit_s16)frame_size)))); + else if (is_s32(-frame_size)) + FAIL_IF(push_inst(compiler, agfi(r15, -((sljit_s32)frame_size)))); + else { + FAIL_IF(push_load_imm_inst(compiler, tmp1, -frame_size)); + FAIL_IF(push_inst(compiler, la(r15, 0, tmp1, r15))); + } + } + + if (args >= 1) + FAIL_IF(push_inst(compiler, lgr(gpr(SLJIT_S0), gpr(SLJIT_R0)))); + if (args >= 2) + FAIL_IF(push_inst(compiler, lgr(gpr(SLJIT_S1), gpr(SLJIT_R1)))); + if (args >= 3) + FAIL_IF(push_inst(compiler, lgr(gpr(SLJIT_S2), gpr(SLJIT_R2)))); + SLJIT_ASSERT(args < 4); + + return SLJIT_SUCCESS; +} + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_set_context(struct sljit_compiler *compiler, + sljit_s32 options, sljit_s32 arg_types, sljit_s32 scratches, sljit_s32 saveds, + sljit_s32 fscratches, sljit_s32 fsaveds, sljit_s32 local_size) +{ + CHECK_ERROR(); + CHECK(check_sljit_set_context(compiler, options, arg_types, scratches, saveds, fscratches, fsaveds, local_size)); + set_set_context(compiler, options, arg_types, scratches, saveds, fscratches, fsaveds, local_size); + + /* TODO(mundaym): stack space for saved floating point registers */ + compiler->local_size = (local_size + 0xf) & ~0xf; + return SLJIT_SUCCESS; +} + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_return(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 src, sljit_sw srcw) +{ + sljit_sw size; + sljit_gpr end; + + CHECK_ERROR(); + CHECK(check_sljit_emit_return(compiler, op, src, srcw)); + + FAIL_IF(emit_mov_before_return(compiler, op, src, srcw)); + + size = compiler->local_size + SLJIT_S390X_DEFAULT_STACK_FRAME_SIZE + (r6 * sizeof(sljit_sw)); + if (!is_s20(size)) { + FAIL_IF(push_load_imm_inst(compiler, tmp1, compiler->local_size + SLJIT_S390X_DEFAULT_STACK_FRAME_SIZE)); + FAIL_IF(push_inst(compiler, la(r15, 0, tmp1, r15))); + size = r6 * sizeof(sljit_sw); + end = r14; /* r15 has been restored already */ + } + else + end = r15; + + FAIL_IF(push_inst(compiler, lmg(r6, end, size, r15))); /* restore registers TODO(MGM): optimize */ + FAIL_IF(push_inst(compiler, br(r14))); /* return */ + + return SLJIT_SUCCESS; +} + +/* --------------------------------------------------------------------- */ +/* Operators */ +/* --------------------------------------------------------------------- */ + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op0(struct sljit_compiler *compiler, sljit_s32 op) +{ + sljit_gpr arg0 = gpr(SLJIT_R0); + sljit_gpr arg1 = gpr(SLJIT_R1); + + CHECK_ERROR(); + CHECK(check_sljit_emit_op0(compiler, op)); + + op = GET_OPCODE(op) | (op & SLJIT_I32_OP); + switch (op) { + case SLJIT_BREAKPOINT: + /* TODO(mundaym): insert real breakpoint? */ + case SLJIT_NOP: + return push_inst(compiler, 0x0700 /* 2-byte nop */); + case SLJIT_LMUL_UW: + FAIL_IF(push_inst(compiler, mlgr(arg0, arg0))); + break; + case SLJIT_LMUL_SW: + /* signed multiplication from: */ + /* Hacker's Delight, Second Edition: Chapter 8-3. */ + FAIL_IF(push_inst(compiler, srag(tmp0, arg0, 63, 0))); + FAIL_IF(push_inst(compiler, srag(tmp1, arg1, 63, 0))); + FAIL_IF(push_inst(compiler, ngr(tmp0, arg1))); + FAIL_IF(push_inst(compiler, ngr(tmp1, arg0))); + + /* unsigned multiplication */ + FAIL_IF(push_inst(compiler, mlgr(arg0, arg0))); + + FAIL_IF(push_inst(compiler, sgr(arg0, tmp0))); + FAIL_IF(push_inst(compiler, sgr(arg0, tmp1))); + break; + case SLJIT_DIV_U32: + case SLJIT_DIVMOD_U32: + FAIL_IF(push_inst(compiler, lhi(tmp0, 0))); + FAIL_IF(push_inst(compiler, lr(tmp1, arg0))); + FAIL_IF(push_inst(compiler, dlr(tmp0, arg1))); + FAIL_IF(push_inst(compiler, lr(arg0, tmp1))); /* quotient */ + if (op == SLJIT_DIVMOD_U32) + return push_inst(compiler, lr(arg1, tmp0)); /* remainder */ + + return SLJIT_SUCCESS; + case SLJIT_DIV_S32: + case SLJIT_DIVMOD_S32: + FAIL_IF(push_inst(compiler, lhi(tmp0, 0))); + FAIL_IF(push_inst(compiler, lr(tmp1, arg0))); + FAIL_IF(push_inst(compiler, dr(tmp0, arg1))); + FAIL_IF(push_inst(compiler, lr(arg0, tmp1))); /* quotient */ + if (op == SLJIT_DIVMOD_S32) + return push_inst(compiler, lr(arg1, tmp0)); /* remainder */ + + return SLJIT_SUCCESS; + case SLJIT_DIV_UW: + case SLJIT_DIVMOD_UW: + FAIL_IF(push_inst(compiler, lghi(tmp0, 0))); + FAIL_IF(push_inst(compiler, lgr(tmp1, arg0))); + FAIL_IF(push_inst(compiler, dlgr(tmp0, arg1))); + FAIL_IF(push_inst(compiler, lgr(arg0, tmp1))); /* quotient */ + if (op == SLJIT_DIVMOD_UW) + return push_inst(compiler, lgr(arg1, tmp0)); /* remainder */ + + return SLJIT_SUCCESS; + case SLJIT_DIV_SW: + case SLJIT_DIVMOD_SW: + FAIL_IF(push_inst(compiler, lgr(tmp1, arg0))); + FAIL_IF(push_inst(compiler, dsgr(tmp0, arg1))); + FAIL_IF(push_inst(compiler, lgr(arg0, tmp1))); /* quotient */ + if (op == SLJIT_DIVMOD_SW) + return push_inst(compiler, lgr(arg1, tmp0)); /* remainder */ + + return SLJIT_SUCCESS; + case SLJIT_ENDBR: + return SLJIT_SUCCESS; + case SLJIT_SKIP_FRAMES_BEFORE_RETURN: + return SLJIT_SUCCESS; + default: + SLJIT_UNREACHABLE(); + } + /* swap result registers */ + FAIL_IF(push_inst(compiler, lgr(tmp0, arg0))); + FAIL_IF(push_inst(compiler, lgr(arg0, arg1))); + return push_inst(compiler, lgr(arg1, tmp0)); +} + +/* LEVAL will be defined later with different parameters as needed */ +#define WHEN2(cond, i1, i2) (cond) ? LEVAL(i1) : LEVAL(i2) + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op1(struct sljit_compiler *compiler, sljit_s32 op, + sljit_s32 dst, sljit_sw dstw, + sljit_s32 src, sljit_sw srcw) +{ + sljit_ins ins; + struct addr mem; + sljit_gpr dst_r; + sljit_gpr src_r; + sljit_s32 opcode = GET_OPCODE(op); + + CHECK_ERROR(); + CHECK(check_sljit_emit_op1(compiler, op, dst, dstw, src, srcw)); + ADJUST_LOCAL_OFFSET(dst, dstw); + ADJUST_LOCAL_OFFSET(src, srcw); + + if ((dst == SLJIT_UNUSED) && !HAS_FLAGS(op)) { + /* TODO(carenas): implement prefetch? */ + return SLJIT_SUCCESS; + } + if (opcode >= SLJIT_MOV && opcode <= SLJIT_MOV_P) { + /* LOAD REGISTER */ + if (FAST_IS_REG(dst) && FAST_IS_REG(src)) { + dst_r = gpr(dst); + src_r = gpr(src); + switch (opcode | (op & SLJIT_I32_OP)) { + /* 32-bit */ + case SLJIT_MOV32_U8: + ins = llcr(dst_r, src_r); + break; + case SLJIT_MOV32_S8: + ins = lbr(dst_r, src_r); + break; + case SLJIT_MOV32_U16: + ins = llhr(dst_r, src_r); + break; + case SLJIT_MOV32_S16: + ins = lhr(dst_r, src_r); + break; + case SLJIT_MOV32: + ins = lr(dst_r, src_r); + break; + /* 64-bit */ + case SLJIT_MOV_U8: + ins = llgcr(dst_r, src_r); + break; + case SLJIT_MOV_S8: + ins = lgbr(dst_r, src_r); + break; + case SLJIT_MOV_U16: + ins = llghr(dst_r, src_r); + break; + case SLJIT_MOV_S16: + ins = lghr(dst_r, src_r); + break; + case SLJIT_MOV_U32: + ins = llgfr(dst_r, src_r); + break; + case SLJIT_MOV_S32: + ins = lgfr(dst_r, src_r); + break; + case SLJIT_MOV: + case SLJIT_MOV_P: + ins = lgr(dst_r, src_r); + break; + default: + ins = 0; + SLJIT_UNREACHABLE(); + } + FAIL_IF(push_inst(compiler, ins)); + if (HAS_FLAGS(op)) { + /* only handle zero flag */ + SLJIT_ASSERT(!(op & VARIABLE_FLAG_MASK)); + return push_store_zero_flag(compiler, op, dst_r); + } + return SLJIT_SUCCESS; + } + /* LOAD IMMEDIATE */ + if (FAST_IS_REG(dst) && (src & SLJIT_IMM)) { + switch (opcode) { + case SLJIT_MOV_U8: + srcw = (sljit_sw)((sljit_u8)(srcw)); + break; + case SLJIT_MOV_S8: + srcw = (sljit_sw)((sljit_s8)(srcw)); + break; + case SLJIT_MOV_U16: + srcw = (sljit_sw)((sljit_u16)(srcw)); + break; + case SLJIT_MOV_S16: + srcw = (sljit_sw)((sljit_s16)(srcw)); + break; + case SLJIT_MOV_U32: + srcw = (sljit_sw)((sljit_u32)(srcw)); + break; + case SLJIT_MOV_S32: + srcw = (sljit_sw)((sljit_s32)(srcw)); + break; + } + return push_load_imm_inst(compiler, gpr(dst), srcw); + } + /* LOAD */ + /* TODO(carenas): avoid reg being defined later */ + #define LEVAL(i) EVAL(i, reg, mem) + if (FAST_IS_REG(dst) && (src & SLJIT_MEM)) { + sljit_gpr reg = gpr(dst); + + FAIL_IF(make_addr_bxy(compiler, &mem, src, srcw, tmp1)); + /* TODO(carenas): convert all calls below to LEVAL */ + switch (opcode | (op & SLJIT_I32_OP)) { + case SLJIT_MOV32_U8: + ins = llc(reg, mem.offset, mem.index, mem.base); + break; + case SLJIT_MOV32_S8: + ins = lb(reg, mem.offset, mem.index, mem.base); + break; + case SLJIT_MOV32_U16: + ins = llh(reg, mem.offset, mem.index, mem.base); + break; + case SLJIT_MOV32_S16: + ins = WHEN2(is_u12(mem.offset), lh, lhy); + break; + case SLJIT_MOV32: + ins = WHEN2(is_u12(mem.offset), l, ly); + break; + case SLJIT_MOV_U8: + ins = LEVAL(llgc); + break; + case SLJIT_MOV_S8: + ins = lgb(reg, mem.offset, mem.index, mem.base); + break; + case SLJIT_MOV_U16: + ins = LEVAL(llgh); + break; + case SLJIT_MOV_S16: + ins = lgh(reg, mem.offset, mem.index, mem.base); + break; + case SLJIT_MOV_U32: + ins = LEVAL(llgf); + break; + case SLJIT_MOV_S32: + ins = lgf(reg, mem.offset, mem.index, mem.base); + break; + case SLJIT_MOV_P: + case SLJIT_MOV: + ins = lg(reg, mem.offset, mem.index, mem.base); + break; + default: + SLJIT_UNREACHABLE(); + } + FAIL_IF(push_inst(compiler, ins)); + if (HAS_FLAGS(op)) { + /* only handle zero flag */ + SLJIT_ASSERT(!(op & VARIABLE_FLAG_MASK)); + return push_store_zero_flag(compiler, op, reg); + } + return SLJIT_SUCCESS; + } + /* STORE and STORE IMMEDIATE */ + if ((dst & SLJIT_MEM) + && (FAST_IS_REG(src) || (src & SLJIT_IMM))) { + sljit_gpr reg = FAST_IS_REG(src) ? gpr(src) : tmp0; + if (src & SLJIT_IMM) { + /* TODO(mundaym): MOVE IMMEDIATE? */ + FAIL_IF(push_load_imm_inst(compiler, reg, srcw)); + } + struct addr mem; + FAIL_IF(make_addr_bxy(compiler, &mem, dst, dstw, tmp1)); + switch (opcode) { + case SLJIT_MOV_U8: + case SLJIT_MOV_S8: + return push_inst(compiler, + WHEN2(is_u12(mem.offset), stc, stcy)); + case SLJIT_MOV_U16: + case SLJIT_MOV_S16: + return push_inst(compiler, + WHEN2(is_u12(mem.offset), sth, sthy)); + case SLJIT_MOV_U32: + case SLJIT_MOV_S32: + return push_inst(compiler, + WHEN2(is_u12(mem.offset), st, sty)); + case SLJIT_MOV_P: + case SLJIT_MOV: + FAIL_IF(push_inst(compiler, LEVAL(stg))); + if (HAS_FLAGS(op)) { + /* only handle zero flag */ + SLJIT_ASSERT(!(op & VARIABLE_FLAG_MASK)); + return push_store_zero_flag(compiler, op, reg); + } + return SLJIT_SUCCESS; + default: + SLJIT_UNREACHABLE(); + } + } + #undef LEVAL + /* MOVE CHARACTERS */ + if ((dst & SLJIT_MEM) && (src & SLJIT_MEM)) { + struct addr mem; + FAIL_IF(make_addr_bxy(compiler, &mem, src, srcw, tmp1)); + switch (opcode) { + case SLJIT_MOV_U8: + case SLJIT_MOV_S8: + FAIL_IF(push_inst(compiler, + EVAL(llgc, tmp0, mem))); + FAIL_IF(make_addr_bxy(compiler, &mem, dst, dstw, tmp1)); + return push_inst(compiler, + EVAL(stcy, tmp0, mem)); + case SLJIT_MOV_U16: + case SLJIT_MOV_S16: + FAIL_IF(push_inst(compiler, + EVAL(llgh, tmp0, mem))); + FAIL_IF(make_addr_bxy(compiler, &mem, dst, dstw, tmp1)); + return push_inst(compiler, + EVAL(sthy, tmp0, mem)); + case SLJIT_MOV_U32: + case SLJIT_MOV_S32: + FAIL_IF(push_inst(compiler, + EVAL(ly, tmp0, mem))); + FAIL_IF(make_addr_bxy(compiler, &mem, dst, dstw, tmp1)); + return push_inst(compiler, + EVAL(sty, tmp0, mem)); + case SLJIT_MOV_P: + case SLJIT_MOV: + FAIL_IF(push_inst(compiler, + EVAL(lg, tmp0, mem))); + FAIL_IF(make_addr_bxy(compiler, &mem, dst, dstw, tmp1)); + FAIL_IF(push_inst(compiler, + EVAL(stg, tmp0, mem))); + if (HAS_FLAGS(op)) { + /* only handle zero flag */ + SLJIT_ASSERT(!(op & VARIABLE_FLAG_MASK)); + return push_store_zero_flag(compiler, op, tmp0); + } + return SLJIT_SUCCESS; + default: + SLJIT_UNREACHABLE(); + } + } + SLJIT_UNREACHABLE(); + } + + SLJIT_ASSERT((src & SLJIT_IMM) == 0); /* no immediates */ + + dst_r = SLOW_IS_REG(dst) ? gpr(REG_MASK & dst) : tmp0; + src_r = FAST_IS_REG(src) ? gpr(REG_MASK & src) : tmp0; + if (src & SLJIT_MEM) + FAIL_IF(load_word(compiler, src_r, src, srcw, tmp1, src & SLJIT_I32_OP)); + + /* TODO(mundaym): optimize loads and stores */ + switch (opcode | (op & SLJIT_I32_OP)) { + case SLJIT_NOT: + /* emulate ~x with x^-1 */ + FAIL_IF(push_load_imm_inst(compiler, tmp1, -1)); + if (src_r != dst_r) + FAIL_IF(push_inst(compiler, lgr(dst_r, src_r))); + + FAIL_IF(push_inst(compiler, xgr(dst_r, tmp1))); + break; + case SLJIT_NOT32: + /* emulate ~x with x^-1 */ + if (have_eimm()) + FAIL_IF(push_inst(compiler, xilf(dst_r, -1))); + else { + FAIL_IF(push_load_imm_inst(compiler, tmp1, -1)); + if (src_r != dst_r) + FAIL_IF(push_inst(compiler, lr(dst_r, src_r))); + + FAIL_IF(push_inst(compiler, xr(dst_r, tmp1))); + } + break; + case SLJIT_NEG: + FAIL_IF(push_inst(compiler, lcgr(dst_r, src_r))); + break; + case SLJIT_NEG32: + FAIL_IF(push_inst(compiler, lcr(dst_r, src_r))); + break; + case SLJIT_CLZ: + if (have_eimm()) { + FAIL_IF(push_inst(compiler, flogr(tmp0, src_r))); /* clobbers tmp1 */ + if (dst_r != tmp0) + FAIL_IF(push_inst(compiler, lgr(dst_r, tmp0))); + } else { + abort(); /* TODO(mundaym): no eimm (?) */ + } + break; + case SLJIT_CLZ32: + if (have_eimm()) { + FAIL_IF(push_inst(compiler, sllg(tmp1, src_r, 32, 0))); + FAIL_IF(push_inst(compiler, iilf(tmp1, 0xffffffff))); + FAIL_IF(push_inst(compiler, flogr(tmp0, tmp1))); /* clobbers tmp1 */ + if (dst_r != tmp0) + FAIL_IF(push_inst(compiler, lr(dst_r, tmp0))); + } else { + abort(); /* TODO(mundaym): no eimm (?) */ + } + break; + default: + SLJIT_UNREACHABLE(); + } + + /* write condition code to emulated flag register */ + if (op & VARIABLE_FLAG_MASK) + FAIL_IF(push_inst(compiler, ipm(flag_r))); + + /* write zero flag to emulated flag register */ + if (op & SLJIT_SET_Z) + FAIL_IF(push_store_zero_flag(compiler, op, dst_r)); + + /* TODO(carenas): doesn't need FAIL_IF */ + if ((dst != SLJIT_UNUSED) && (dst & SLJIT_MEM)) + FAIL_IF(store_word(compiler, dst_r, dst, dstw, tmp1, op & SLJIT_I32_OP)); + + return SLJIT_SUCCESS; +} + +static SLJIT_INLINE int is_commutative(sljit_s32 op) +{ + switch (GET_OPCODE(op)) { + case SLJIT_ADD: + case SLJIT_ADDC: + case SLJIT_MUL: + case SLJIT_AND: + case SLJIT_OR: + case SLJIT_XOR: + return 1; + } + return 0; +} + +static SLJIT_INLINE int is_shift(sljit_s32 op) { + sljit_s32 v = GET_OPCODE(op); + return (v == SLJIT_SHL || v == SLJIT_ASHR || v == SLJIT_LSHR) ? 1 : 0; +} + +static SLJIT_INLINE int sets_signed_flag(sljit_s32 op) +{ + switch (GET_FLAG_TYPE(op)) { + case SLJIT_OVERFLOW: + case SLJIT_NOT_OVERFLOW: + case SLJIT_SIG_LESS: + case SLJIT_SIG_LESS_EQUAL: + case SLJIT_SIG_GREATER: + case SLJIT_SIG_GREATER_EQUAL: + return 1; + } + return 0; +} + +/* Report whether we have an instruction for: + op dst src imm + where dst and src are separate registers. */ +static int have_op_3_imm(sljit_s32 op, sljit_sw imm) { + return 0; /* TODO(mundaym): implement */ +} + +/* Report whether we have an instruction for: + op reg imm + where reg is both a source and the destination. */ +static int have_op_2_imm(sljit_s32 op, sljit_sw imm) { + switch (GET_OPCODE(op) | (op & SLJIT_I32_OP)) { + case SLJIT_ADD32: + case SLJIT_ADD: + if (!HAS_FLAGS(op) || sets_signed_flag(op)) + return have_eimm() ? is_s32(imm) : is_s16(imm); + + return have_eimm() && is_u32(imm); + case SLJIT_MUL32: + case SLJIT_MUL: + /* TODO(mundaym): general extension check */ + /* for ms{,g}fi */ + if (op & VARIABLE_FLAG_MASK) + return 0; + + return have_genext() && is_s16(imm); + case SLJIT_OR32: + case SLJIT_XOR32: + case SLJIT_AND32: + /* only use if have extended immediate facility */ + /* this ensures flags are set correctly */ + return have_eimm(); + case SLJIT_AND: + case SLJIT_OR: + case SLJIT_XOR: + /* TODO(mundaym): make this more flexible */ + /* avoid using immediate variations, flags */ + /* won't be set correctly */ + return 0; + case SLJIT_ADDC32: + case SLJIT_ADDC: + /* no ADD LOGICAL WITH CARRY IMMEDIATE */ + return 0; + case SLJIT_SUB: + case SLJIT_SUB32: + case SLJIT_SUBC: + case SLJIT_SUBC32: + /* no SUBTRACT IMMEDIATE */ + /* TODO(mundaym): SUBTRACT LOGICAL IMMEDIATE */ + return 0; + } + return 0; +} + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op2(struct sljit_compiler *compiler, sljit_s32 op, + sljit_s32 dst, sljit_sw dstw, + sljit_s32 src1, sljit_sw src1w, + sljit_s32 src2, sljit_sw src2w) +{ + CHECK_ERROR(); + CHECK(check_sljit_emit_op2(compiler, op, dst, dstw, src1, src1w, src2, src2w)); + ADJUST_LOCAL_OFFSET(dst, dstw); + ADJUST_LOCAL_OFFSET(src1, src1w); + ADJUST_LOCAL_OFFSET(src2, src2w); + + if (dst == SLJIT_UNUSED && !HAS_FLAGS(op)) + return SLJIT_SUCCESS; + + sljit_gpr dst_r = SLOW_IS_REG(dst) ? gpr(dst & REG_MASK) : tmp0; + + if (is_commutative(op)) { + #define SWAP_ARGS \ + do { \ + sljit_s32 t = src1; \ + sljit_sw tw = src1w; \ + src1 = src2; \ + src1w = src2w; \ + src2 = t; \ + src2w = tw; \ + } while(0); + + /* prefer immediate in src2 */ + if (src1 & SLJIT_IMM) { + SWAP_ARGS + } + + /* prefer to have src1 use same register as dst */ + if (FAST_IS_REG(src2) && gpr(src2 & REG_MASK) == dst_r) { + SWAP_ARGS + } + + /* prefer memory argument in src2 */ + if (FAST_IS_REG(src2) && (src1 & SLJIT_MEM)) { + SWAP_ARGS + } + #undef SWAP_ARGS + } + + /* src1 must be in a register */ + sljit_gpr src1_r = FAST_IS_REG(src1) ? gpr(src1 & REG_MASK) : tmp0; + if (src1 & SLJIT_IMM) + FAIL_IF(push_load_imm_inst(compiler, src1_r, src1w)); + + if (src1 & SLJIT_MEM) + FAIL_IF(load_word(compiler, src1_r, src1, src1w, tmp1, op & SLJIT_I32_OP)); + + /* emit comparison before subtract */ + if (GET_OPCODE(op) == SLJIT_SUB && (op & VARIABLE_FLAG_MASK)) { + sljit_sw cmp = 0; + switch (GET_FLAG_TYPE(op)) { + case SLJIT_LESS: + case SLJIT_LESS_EQUAL: + case SLJIT_GREATER: + case SLJIT_GREATER_EQUAL: + cmp = 1; /* unsigned */ + break; + case SLJIT_EQUAL: + case SLJIT_SIG_LESS: + case SLJIT_SIG_LESS_EQUAL: + case SLJIT_SIG_GREATER: + case SLJIT_SIG_GREATER_EQUAL: + cmp = -1; /* signed */ + break; + } + if (cmp) { + /* clear flags - no need to generate now */ + op &= ~VARIABLE_FLAG_MASK; + sljit_gpr src2_r = FAST_IS_REG(src2) ? gpr(src2 & REG_MASK) : tmp1; + if (src2 & SLJIT_IMM) { + #define LEVAL(i) i(src1_r, src2w) + if (cmp > 0 && is_u32(src2w)) { + /* unsigned */ + FAIL_IF(push_inst(compiler, + WHEN2(op & SLJIT_I32_OP, clfi, clgfi))); + } + else if (cmp < 0 && is_s16(src2w)) { + /* signed */ + FAIL_IF(push_inst(compiler, + WHEN2(op & SLJIT_I32_OP, chi, cghi))); + } + else if (cmp < 0 && is_s32(src2w)) { + /* signed */ + FAIL_IF(push_inst(compiler, + WHEN2(op & SLJIT_I32_OP, cfi, cgfi))); + } + #undef LEVAL + #define LEVAL(i) i(src1_r, src2_r) + else { + FAIL_IF(push_load_imm_inst(compiler, src2_r, src2w)); + if (cmp > 0) { + /* unsigned */ + FAIL_IF(push_inst(compiler, + WHEN2(op & SLJIT_I32_OP, clr, clgr))); + } + if (cmp < 0) { + /* signed */ + FAIL_IF(push_inst(compiler, + WHEN2(op & SLJIT_I32_OP, cr, cgr))); + } + } + } + else { + if (src2 & SLJIT_MEM) { + /* TODO(mundaym): comparisons with memory */ + /* load src2 into register */ + FAIL_IF(load_word(compiler, src2_r, src2, src2w, tmp1, op & SLJIT_I32_OP)); + } + if (cmp > 0) { + /* unsigned */ + FAIL_IF(push_inst(compiler, + WHEN2(op & SLJIT_I32_OP, clr, clgr))); + } + if (cmp < 0) { + /* signed */ + FAIL_IF(push_inst(compiler, + WHEN2(op & SLJIT_I32_OP, cr, cgr))); + } + #undef LEVAL + } + FAIL_IF(push_inst(compiler, ipm(flag_r))); + } + } + + if (!HAS_FLAGS(op) && dst == SLJIT_UNUSED) + return SLJIT_SUCCESS; + + /* need to specify signed or logical operation */ + int signed_flags = sets_signed_flag(op); + + if (is_shift(op)) { + /* handle shifts first, they have more constraints than other operations */ + sljit_sw d = 0; + sljit_gpr b = FAST_IS_REG(src2) ? gpr(src2 & REG_MASK) : r0; + if (src2 & SLJIT_IMM) + d = src2w & ((op & SLJIT_I32_OP) ? 31 : 63); + + if (src2 & SLJIT_MEM) { + /* shift amount (b) cannot be in r0 (i.e. tmp0) */ + FAIL_IF(load_word(compiler, tmp1, src2, src2w, tmp1, op & SLJIT_I32_OP)); + b = tmp1; + } + /* src1 and dst share the same register in the base 32-bit ISA */ + /* TODO(mundaym): not needed when distinct-operand facility is available */ + int workaround_alias = op & SLJIT_I32_OP && src1_r != dst_r; + if (workaround_alias) { + /* put src1 into tmp0 so we can overwrite it */ + FAIL_IF(push_inst(compiler, lr(tmp0, src1_r))); + src1_r = tmp0; + } + switch (GET_OPCODE(op) | (op & SLJIT_I32_OP)) { + case SLJIT_SHL: + FAIL_IF(push_inst(compiler, sllg(dst_r, src1_r, d, b))); + break; + case SLJIT_SHL32: + FAIL_IF(push_inst(compiler, sll(src1_r, d, b))); + break; + case SLJIT_LSHR: + FAIL_IF(push_inst(compiler, srlg(dst_r, src1_r, d, b))); + break; + case SLJIT_LSHR32: + FAIL_IF(push_inst(compiler, srl(src1_r, d, b))); + break; + case SLJIT_ASHR: + FAIL_IF(push_inst(compiler, srag(dst_r, src1_r, d, b))); + break; + case SLJIT_ASHR32: + FAIL_IF(push_inst(compiler, sra(src1_r, d, b))); + break; + default: + SLJIT_UNREACHABLE(); + } + if (workaround_alias && dst_r != src1_r) + FAIL_IF(push_inst(compiler, lr(dst_r, src1_r))); + + } + else if ((GET_OPCODE(op) == SLJIT_MUL) && HAS_FLAGS(op)) { + /* multiply instructions do not generally set flags so we need to manually */ + /* detect overflow conditions */ + /* TODO(mundaym): 64-bit overflow */ + SLJIT_ASSERT(GET_FLAG_TYPE(op) == SLJIT_MUL_OVERFLOW || + GET_FLAG_TYPE(op) == SLJIT_MUL_NOT_OVERFLOW); + sljit_gpr src2_r = FAST_IS_REG(src2) ? gpr(src2 & REG_MASK) : tmp1; + if (src2 & SLJIT_IMM) { + /* load src2 into register */ + FAIL_IF(push_load_imm_inst(compiler, src2_r, src2w)); + } + if (src2 & SLJIT_MEM) { + /* load src2 into register */ + FAIL_IF(load_word(compiler, src2_r, src2, src2w, tmp1, op & SLJIT_I32_OP)); + } + if (have_misc2()) { + #define LEVAL(i) i(dst_r, src1_r, src2_r) + FAIL_IF(push_inst(compiler, + WHEN2(op & SLJIT_I32_OP, msrkc, msgrkc))); + #undef LEVAL + } + else if (op & SLJIT_I32_OP) { + op &= ~VARIABLE_FLAG_MASK; + FAIL_IF(push_inst(compiler, lgfr(tmp0, src1_r))); + FAIL_IF(push_inst(compiler, msgfr(tmp0, src2_r))); + if (dst_r != tmp0) { + FAIL_IF(push_inst(compiler, lr(dst_r, tmp0))); + } + FAIL_IF(push_inst(compiler, aih(tmp0, 1))); + FAIL_IF(push_inst(compiler, nihf(tmp0, ~1U))); + FAIL_IF(push_inst(compiler, ipm(flag_r))); + FAIL_IF(push_inst(compiler, oilh(flag_r, 0x2000))); + } + else + return SLJIT_ERR_UNSUPPORTED; + + } + else if ((GET_OPCODE(op) == SLJIT_SUB) && (op & SLJIT_SET_Z) && !signed_flags) { + /* subtract logical instructions do not set the right flags unfortunately */ + /* instead, negate src2 and issue an add logical */ + /* TODO(mundaym): distinct operand facility where needed */ + if (src1_r != dst_r && src1_r != tmp0) { + #define LEVAL(i) i(tmp0, src1_r) + FAIL_IF(push_inst(compiler, + WHEN2(op & SLJIT_I32_OP, lr, lgr))); + src1_r = tmp0; + #undef LEVAL + } + sljit_gpr src2_r = FAST_IS_REG(src2) ? gpr(src2 & REG_MASK) : tmp1; + if (src2 & SLJIT_IMM) { + /* load src2 into register */ + FAIL_IF(push_load_imm_inst(compiler, src2_r, src2w)); + } + if (src2 & SLJIT_MEM) { + /* load src2 into register */ + FAIL_IF(load_word(compiler, src2_r, src2, src2w, tmp1, op & SLJIT_I32_OP)); + } + if (op & SLJIT_I32_OP) { + FAIL_IF(push_inst(compiler, lcr(tmp1, src2_r))); + FAIL_IF(push_inst(compiler, alr(src1_r, tmp1))); + if (src1_r != dst_r) + FAIL_IF(push_inst(compiler, lr(dst_r, src1_r))); + } + else { + FAIL_IF(push_inst(compiler, lcgr(tmp1, src2_r))); + FAIL_IF(push_inst(compiler, algr(src1_r, tmp1))); + if (src1_r != dst_r) + FAIL_IF(push_inst(compiler, lgr(dst_r, src1_r))); + } + } + else if ((src2 & SLJIT_IMM) && (src1_r == dst_r) && have_op_2_imm(op, src2w)) { + switch (GET_OPCODE(op) | (op & SLJIT_I32_OP)) { + #define LEVAL(i) i(dst_r, src2w) + case SLJIT_ADD: + if (!HAS_FLAGS(op) || signed_flags) { + FAIL_IF(push_inst(compiler, + WHEN2(is_s16(src2w), aghi, agfi))); + } + else + FAIL_IF(push_inst(compiler, LEVAL(algfi))); + + break; + case SLJIT_ADD32: + if (!HAS_FLAGS(op) || signed_flags) + FAIL_IF(push_inst(compiler, + WHEN2(is_s16(src2w), ahi, afi))); + else + FAIL_IF(push_inst(compiler, LEVAL(alfi))); + + break; + #undef LEVAL /* TODO(carenas): move down and refactor? */ + case SLJIT_MUL: + FAIL_IF(push_inst(compiler, mhi(dst_r, src2w))); + break; + case SLJIT_MUL32: + FAIL_IF(push_inst(compiler, mghi(dst_r, src2w))); + break; + case SLJIT_OR32: + FAIL_IF(push_inst(compiler, oilf(dst_r, src2w))); + break; + case SLJIT_XOR32: + FAIL_IF(push_inst(compiler, xilf(dst_r, src2w))); + break; + case SLJIT_AND32: + FAIL_IF(push_inst(compiler, nilf(dst_r, src2w))); + break; + default: + SLJIT_UNREACHABLE(); + } + } + else if ((src2 & SLJIT_IMM) && have_op_3_imm(op, src2w)) { + abort(); /* TODO(mundaym): implement */ + } + else if ((src2 & SLJIT_MEM) && (dst_r == src1_r)) { + /* most 32-bit instructions can only handle 12-bit immediate offsets */ + int need_u12 = !have_ldisp() && + (op & SLJIT_I32_OP) && + (GET_OPCODE(op) != SLJIT_ADDC) && + (GET_OPCODE(op) != SLJIT_SUBC); + struct addr mem; + if (need_u12) + FAIL_IF(make_addr_bx(compiler, &mem, src2, src2w, tmp1)); + else + FAIL_IF(make_addr_bxy(compiler, &mem, src2, src2w, tmp1)); + + int can_u12 = is_u12(mem.offset) ? 1 : 0; + sljit_ins ins = 0; + switch (GET_OPCODE(op) | (op & SLJIT_I32_OP)) { + /* 64-bit ops */ + #define LEVAL(i) EVAL(i, dst_r, mem) + case SLJIT_ADD: + ins = WHEN2(signed_flags, ag, alg); + break; + case SLJIT_SUB: + ins = WHEN2(signed_flags, sg, slg); + break; + case SLJIT_ADDC: + ins = LEVAL(alcg); + break; + case SLJIT_SUBC: + ins = LEVAL(slbg); + break; + case SLJIT_MUL: + ins = LEVAL(msg); + break; + case SLJIT_OR: + ins = LEVAL(og); + break; + case SLJIT_XOR: + ins = LEVAL(xg); + break; + case SLJIT_AND: + ins = LEVAL(ng); + break; + /* 32-bit ops */ + case SLJIT_ADD32: + if (signed_flags) + ins = WHEN2(can_u12, a, ay); + else + ins = WHEN2(can_u12, al, aly); + break; + case SLJIT_SUB32: + if (signed_flags) + ins = WHEN2(can_u12, s, sy); + else + ins = WHEN2(can_u12, sl, sly); + break; + case SLJIT_ADDC32: + ins = LEVAL(alc); + break; + case SLJIT_SUBC32: + ins = LEVAL(slb); + break; + case SLJIT_MUL32: + ins = WHEN2(can_u12, ms, msy); + break; + case SLJIT_OR32: + ins = WHEN2(can_u12, o, oy); + break; + case SLJIT_XOR32: + ins = WHEN2(can_u12, x, xy); + break; + case SLJIT_AND32: + ins = WHEN2(can_u12, n, ny); + break; + #undef LEVAL + default: + SLJIT_UNREACHABLE(); + } + FAIL_IF(push_inst(compiler, ins)); + } + else { + sljit_gpr src2_r = FAST_IS_REG(src2) ? gpr(src2 & REG_MASK) : tmp1; + if (src2 & SLJIT_IMM) { + /* load src2 into register */ + FAIL_IF(push_load_imm_inst(compiler, src2_r, src2w)); + } + if (src2 & SLJIT_MEM) { + /* load src2 into register */ + FAIL_IF(load_word(compiler, src2_r, src2, src2w, tmp1, op & SLJIT_I32_OP)); + } + /* TODO(mundaym): distinct operand facility where needed */ + #define LEVAL(i) i(tmp0, src1_r) + if (src1_r != dst_r && src1_r != tmp0) { + FAIL_IF(push_inst(compiler, + WHEN2(op & SLJIT_I32_OP, lr, lgr))); + src1_r = tmp0; + } + #undef LEVAL + sljit_ins ins = 0; + switch (GET_OPCODE(op) | (op & SLJIT_I32_OP)) { + #define LEVAL(i) i(src1_r, src2_r) + /* 64-bit ops */ + case SLJIT_ADD: + ins = WHEN2(signed_flags, agr, algr); + break; + case SLJIT_SUB: + ins = WHEN2(signed_flags, sgr, slgr); + break; + case SLJIT_ADDC: + ins = LEVAL(alcgr); + break; + case SLJIT_SUBC: + ins = LEVAL(slbgr); + break; + case SLJIT_MUL: + ins = LEVAL(msgr); + break; + case SLJIT_AND: + ins = LEVAL(ngr); + break; + case SLJIT_OR: + ins = LEVAL(ogr); + break; + case SLJIT_XOR: + ins = LEVAL(xgr); + break; + /* 32-bit ops */ + case SLJIT_ADD32: + ins = WHEN2(signed_flags, ar, alr); + break; + case SLJIT_SUB32: + ins = WHEN2(signed_flags, sr, slr); + break; + case SLJIT_ADDC32: + ins = LEVAL(alcr); + break; + case SLJIT_SUBC32: + ins = LEVAL(slbr); + break; + case SLJIT_MUL32: + ins = LEVAL(msr); + break; + case SLJIT_AND32: + ins = LEVAL(nr); + break; + case SLJIT_OR32: + ins = LEVAL(or); + break; + case SLJIT_XOR32: + ins = LEVAL(xr); + break; + #undef LEVAL + default: + SLJIT_UNREACHABLE(); + } + FAIL_IF(push_inst(compiler, ins)); + #define LEVAL(i) i(dst_r, src1_r) + if (src1_r != dst_r) + FAIL_IF(push_inst(compiler, + WHEN2(op & SLJIT_I32_OP, lr, lgr))); + #undef LEVAL + } + + /* write condition code to emulated flag register */ + if (op & VARIABLE_FLAG_MASK) + FAIL_IF(push_inst(compiler, ipm(flag_r))); + + /* write zero flag to emulated flag register */ + if (op & SLJIT_SET_Z) + FAIL_IF(push_store_zero_flag(compiler, op, dst_r)); + + /* finally write the result to memory if required */ + if (dst & SLJIT_MEM) { + SLJIT_ASSERT(dst_r != tmp1); + /* TODO(carenas): s/FAIL_IF/ return */ + FAIL_IF(store_word(compiler, dst_r, dst, dstw, tmp1, op & SLJIT_I32_OP)); + } + + return SLJIT_SUCCESS; +} + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_src( + struct sljit_compiler *compiler, + sljit_s32 op, sljit_s32 src, sljit_sw srcw) +{ + sljit_gpr src_r; + + CHECK_ERROR(); + CHECK(check_sljit_emit_op_src(compiler, op, src, srcw)); + ADJUST_LOCAL_OFFSET(src, srcw); + + switch (op) { + case SLJIT_FAST_RETURN: + src_r = FAST_IS_REG(src) ? gpr(src) : tmp1; + if (src & SLJIT_MEM) + FAIL_IF(load_word(compiler, tmp1, src, srcw, tmp1, 0)); + + return push_inst(compiler, br(src_r)); + case SLJIT_SKIP_FRAMES_BEFORE_FAST_RETURN: + /* TODO(carenas): implement? */ + return SLJIT_SUCCESS; + case SLJIT_PREFETCH_L1: + case SLJIT_PREFETCH_L2: + case SLJIT_PREFETCH_L3: + case SLJIT_PREFETCH_ONCE: + /* TODO(carenas): implement */ + return SLJIT_SUCCESS; + default: + /* TODO(carenas): probably should not success by default */ + return SLJIT_SUCCESS; + } + + return SLJIT_SUCCESS; +} + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_get_register_index(sljit_s32 reg) +{ + CHECK_REG_INDEX(check_sljit_get_register_index(reg)); + return gpr(reg); +} + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_get_float_register_index(sljit_s32 reg) +{ + CHECK_REG_INDEX(check_sljit_get_float_register_index(reg)); + abort(); +} + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_custom(struct sljit_compiler *compiler, + void *instruction, sljit_s32 size) +{ + sljit_ins ins = 0; + + CHECK_ERROR(); + CHECK(check_sljit_emit_op_custom(compiler, instruction, size)); + + memcpy((sljit_u8 *)&ins + sizeof(ins) - size, instruction, size); + return push_inst(compiler, ins); +} + +/* --------------------------------------------------------------------- */ +/* Floating point operators */ +/* --------------------------------------------------------------------- */ + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fop1(struct sljit_compiler *compiler, sljit_s32 op, + sljit_s32 dst, sljit_sw dstw, + sljit_s32 src, sljit_sw srcw) +{ + CHECK_ERROR(); + abort(); +} + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fop2(struct sljit_compiler *compiler, sljit_s32 op, + sljit_s32 dst, sljit_sw dstw, + sljit_s32 src1, sljit_sw src1w, + sljit_s32 src2, sljit_sw src2w) +{ + CHECK_ERROR(); + abort(); +} + +/* --------------------------------------------------------------------- */ +/* Other instructions */ +/* --------------------------------------------------------------------- */ + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fast_enter(struct sljit_compiler *compiler, sljit_s32 dst, sljit_sw dstw) +{ + CHECK_ERROR(); + CHECK(check_sljit_emit_fast_enter(compiler, dst, dstw)); + ADJUST_LOCAL_OFFSET(dst, dstw); + + if (FAST_IS_REG(dst)) + return push_inst(compiler, lgr(gpr(dst), fast_link_r)); + + /* memory */ + return store_word(compiler, fast_link_r, dst, dstw, tmp1, 0); +} + +/* --------------------------------------------------------------------- */ +/* Conditional instructions */ +/* --------------------------------------------------------------------- */ + +SLJIT_API_FUNC_ATTRIBUTE struct sljit_label* sljit_emit_label(struct sljit_compiler *compiler) +{ + struct sljit_label *label; + + CHECK_ERROR_PTR(); + CHECK_PTR(check_sljit_emit_label(compiler)); + + if (compiler->last_label && compiler->last_label->size == compiler->size) + return compiler->last_label; + + label = (struct sljit_label*)ensure_abuf(compiler, sizeof(struct sljit_label)); + PTR_FAIL_IF(!label); + set_label(label, compiler); + return label; +} + +SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump* sljit_emit_jump(struct sljit_compiler *compiler, sljit_s32 type) +{ + sljit_u8 mask = ((type & 0xff) < SLJIT_JUMP) ? get_cc(type & 0xff) : 0xf; + + CHECK_ERROR_PTR(); + CHECK_PTR(check_sljit_emit_jump(compiler, type)); + + /* reload condition code */ + if (mask != 0xf) + PTR_FAIL_IF(push_load_cc(compiler, type & 0xff)); + + /* record jump */ + struct sljit_jump *jump = (struct sljit_jump *) + ensure_abuf(compiler, sizeof(struct sljit_jump)); + PTR_FAIL_IF(!jump); + set_jump(jump, compiler, type & SLJIT_REWRITABLE_JUMP); + jump->addr = compiler->size; + + /* emit jump instruction */ + type &= 0xff; + if (type >= SLJIT_FAST_CALL) + PTR_FAIL_IF(push_inst(compiler, brasl(type == SLJIT_FAST_CALL ? fast_link_r : link_r, 0))); + else + PTR_FAIL_IF(push_inst(compiler, brcl(mask, 0))); + + return jump; +} + +SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump* sljit_emit_call(struct sljit_compiler *compiler, sljit_s32 type, + sljit_s32 arg_types) +{ + CHECK_ERROR_PTR(); + CHECK_PTR(check_sljit_emit_call(compiler, type, arg_types)); + +#if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) \ + || (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) + compiler->skip_checks = 1; +#endif + + return sljit_emit_jump(compiler, type); +} + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_ijump(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 src, sljit_sw srcw) +{ + sljit_gpr src_r = FAST_IS_REG(src) ? gpr(src) : tmp1; + + CHECK_ERROR(); + CHECK(check_sljit_emit_ijump(compiler, type, src, srcw)); + ADJUST_LOCAL_OFFSET(src, srcw); + + if (src & SLJIT_IMM) { + SLJIT_ASSERT(!(srcw & 1)); /* target address must be even */ + FAIL_IF(push_load_imm_inst(compiler, src_r, srcw)); + } + else if (src & SLJIT_MEM) + FAIL_IF(load_word(compiler, src_r, src, srcw, tmp1, 0 /* 64-bit */)); + + /* emit jump instruction */ + if (type >= SLJIT_FAST_CALL) + return push_inst(compiler, basr(type == SLJIT_FAST_CALL ? fast_link_r : link_r, src_r)); + + return push_inst(compiler, br(src_r)); +} + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_icall(struct sljit_compiler *compiler, sljit_s32 type, + sljit_s32 arg_types, + sljit_s32 src, sljit_sw srcw) +{ + CHECK_ERROR(); + CHECK(check_sljit_emit_icall(compiler, type, arg_types, src, srcw)); + +#if (defined SLJIT_VERBOSE && SLJIT_VERBOSE) \ + || (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) + compiler->skip_checks = 1; +#endif + + return sljit_emit_ijump(compiler, type, src, srcw); +} + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_flags(struct sljit_compiler *compiler, sljit_s32 op, + sljit_s32 dst, sljit_sw dstw, + sljit_s32 type) +{ + sljit_u8 mask = get_cc(type & 0xff); + + CHECK_ERROR(); + CHECK(check_sljit_emit_op_flags(compiler, op, dst, dstw, type)); + + sljit_gpr dst_r = FAST_IS_REG(dst) ? gpr(dst & REG_MASK) : tmp0; + sljit_gpr loc_r = tmp1; + switch (GET_OPCODE(op)) { + case SLJIT_AND: + case SLJIT_OR: + case SLJIT_XOR: + /* dst is also source operand */ + if (dst & SLJIT_MEM) + FAIL_IF(load_word(compiler, dst_r, dst, dstw, tmp1, op & SLJIT_I32_OP)); + + break; + case SLJIT_MOV: + case (SLJIT_MOV32 & ~SLJIT_I32_OP): + /* can write straight into destination */ + loc_r = dst_r; + break; + default: + SLJIT_UNREACHABLE(); + } + + if (mask != 0xf) + FAIL_IF(push_load_cc(compiler, type & 0xff)); + + /* TODO(mundaym): fold into cmov helper function? */ + #define LEVAL(i) i(loc_r, 1, mask) + if (have_lscond2()) { + FAIL_IF(push_load_imm_inst(compiler, loc_r, 0)); + FAIL_IF(push_inst(compiler, + WHEN2(op & SLJIT_I32_OP, lochi, locghi))); + } else { + /* TODO(mundaym): no load/store-on-condition 2 facility (ipm? branch-and-set?) */ + abort(); + } + #undef LEVAL + + /* apply bitwise op and set condition codes */ + switch (GET_OPCODE(op)) { + #define LEVAL(i) i(dst_r, loc_r) + case SLJIT_AND: + FAIL_IF(push_inst(compiler, + WHEN2(op & SLJIT_I32_OP, nr, ngr))); + break; + case SLJIT_OR: + FAIL_IF(push_inst(compiler, + WHEN2(op & SLJIT_I32_OP, or, ogr))); + break; + case SLJIT_XOR: + FAIL_IF(push_inst(compiler, + WHEN2(op & SLJIT_I32_OP, xr, xgr))); + break; + #undef LEVAL + } + + /* set zero flag if needed */ + if (op & SLJIT_SET_Z) + FAIL_IF(push_store_zero_flag(compiler, op, dst_r)); + + /* store result to memory if required */ + /* TODO(carenas): s/FAIL_IF/ return */ + if (dst & SLJIT_MEM) + FAIL_IF(store_word(compiler, dst_r, dst, dstw, tmp1, op & SLJIT_I32_OP)); + + return SLJIT_SUCCESS; +} + +SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_cmov(struct sljit_compiler *compiler, sljit_s32 type, + sljit_s32 dst_reg, + sljit_s32 src, sljit_sw srcw) +{ + sljit_u8 mask = get_cc(type & 0xff); + sljit_gpr dst_r = gpr(dst_reg & ~SLJIT_I32_OP); + sljit_gpr src_r = FAST_IS_REG(src) ? gpr(src) : tmp0; + + CHECK_ERROR(); + CHECK(check_sljit_emit_cmov(compiler, type, dst_reg, src, srcw)); + + if (mask != 0xf) + FAIL_IF(push_load_cc(compiler, type & 0xff)); + + if (src & SLJIT_IMM) { + /* TODO(mundaym): fast path with lscond2 */ + FAIL_IF(push_load_imm_inst(compiler, src_r, srcw)); + } + + #define LEVAL(i) i(dst_r, src_r, mask) + if (have_lscond1()) + return push_inst(compiler, + WHEN2(dst_reg & SLJIT_I32_OP, locr, locgr)); + + #undef LEVAL + + /* TODO(mundaym): implement */ + return SLJIT_ERR_UNSUPPORTED; +} + +/* --------------------------------------------------------------------- */ +/* Other instructions */ +/* --------------------------------------------------------------------- */ + +/* On s390x we build a literal pool to hold constants. This has two main + advantages: + + 1. we only need one instruction in the instruction stream (LGRL) + 2. we can store 64 bit addresses and use 32 bit offsets + + To retrofit the extra information needed to build the literal pool we + add a new sljit_s390x_const struct that contains the initial value but + can still be cast to a sljit_const. */ + +SLJIT_API_FUNC_ATTRIBUTE struct sljit_const* sljit_emit_const(struct sljit_compiler *compiler, sljit_s32 dst, sljit_sw dstw, sljit_sw init_value) +{ + struct sljit_s390x_const *const_; + sljit_gpr dst_r; + + CHECK_ERROR_PTR(); + CHECK_PTR(check_sljit_emit_const(compiler, dst, dstw, init_value)); + + const_ = (struct sljit_s390x_const*)ensure_abuf(compiler, + sizeof(struct sljit_s390x_const)); + PTR_FAIL_IF(!const_); + set_const((struct sljit_const*)const_, compiler); + const_->init_value = init_value; + + dst_r = FAST_IS_REG(dst) ? gpr(dst & REG_MASK) : tmp0; + if (have_genext()) + PTR_FAIL_IF(push_inst(compiler, sljit_ins_const | lgrl(dst_r, 0))); + else { + PTR_FAIL_IF(push_inst(compiler, sljit_ins_const | larl(tmp1, 0))); + PTR_FAIL_IF(push_inst(compiler, lg(dst_r, 0, r0, tmp1))); + } + + if (dst & SLJIT_MEM) + PTR_FAIL_IF(store_word(compiler, dst_r, dst, dstw, tmp1, 0 /* always 64-bit */)); + + return (struct sljit_const*)const_; +} + +SLJIT_API_FUNC_ATTRIBUTE void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_target, sljit_sw executable_offset) +{ + /* Update the constant pool. */ + sljit_uw *ptr = (sljit_uw *)addr; + SLJIT_UNUSED_ARG(executable_offset); + + SLJIT_UPDATE_WX_FLAGS(ptr, ptr + 1, 0); + *ptr = new_target; + SLJIT_UPDATE_WX_FLAGS(ptr, ptr + 1, 1); + SLJIT_CACHE_FLUSH(ptr, ptr + 1); +} + +SLJIT_API_FUNC_ATTRIBUTE void sljit_set_const(sljit_uw addr, sljit_sw new_constant, sljit_sw executable_offset) +{ + sljit_set_jump_addr(addr, new_constant, executable_offset); +} + +SLJIT_API_FUNC_ATTRIBUTE struct sljit_put_label *sljit_emit_put_label( + struct sljit_compiler *compiler, + sljit_s32 dst, sljit_sw dstw) +{ + struct sljit_put_label *put_label; + sljit_gpr dst_r; + + CHECK_ERROR_PTR(); + CHECK_PTR(check_sljit_emit_put_label(compiler, dst, dstw)); + ADJUST_LOCAL_OFFSET(dst, dstw); + + put_label = (struct sljit_put_label*)ensure_abuf(compiler, sizeof(struct sljit_put_label)); + PTR_FAIL_IF(!put_label); + set_put_label(put_label, compiler, 0); + + dst_r = FAST_IS_REG(dst) ? gpr(dst & REG_MASK) : tmp0; + + if (have_genext()) + PTR_FAIL_IF(push_inst(compiler, lgrl(dst_r, 0))); + else { + PTR_FAIL_IF(push_inst(compiler, larl(tmp1, 0))); + PTR_FAIL_IF(push_inst(compiler, lg(dst_r, 0, r0, tmp1))); + } + + if (dst & SLJIT_MEM) + PTR_FAIL_IF(store_word(compiler, dst_r, dst, dstw, tmp1, 0)); + + return put_label; +} + +/* TODO(carenas): EVAL probably should move up or be refactored */ +#undef WHEN2 +#undef EVAL + +#undef tmp1 +#undef tmp0 + +/* TODO(carenas): undef other macros that spill like is_u12? */ diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_32.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_32.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_32.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_32.c 2022-01-25 17:23:44.132496334 +0000 @@ -266,21 +266,18 @@ SLJIT_API_FUNC_ATTRIBUTE void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_target, sljit_sw executable_offset) { sljit_ins *inst = (sljit_ins *)addr; + SLJIT_UNUSED_ARG(executable_offset); + SLJIT_UPDATE_WX_FLAGS(inst, inst + 2, 0); SLJIT_ASSERT(((inst[0] & 0xc1c00000) == 0x01000000) && ((inst[1] & 0xc1f82000) == 0x80102000)); inst[0] = (inst[0] & 0xffc00000) | ((new_target >> 10) & 0x3fffff); inst[1] = (inst[1] & 0xfffffc00) | (new_target & 0x3ff); + SLJIT_UPDATE_WX_FLAGS(inst, inst + 2, 1); inst = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); SLJIT_CACHE_FLUSH(inst, inst + 2); } SLJIT_API_FUNC_ATTRIBUTE void sljit_set_const(sljit_uw addr, sljit_sw new_constant, sljit_sw executable_offset) { - sljit_ins *inst = (sljit_ins *)addr; - - SLJIT_ASSERT(((inst[0] & 0xc1c00000) == 0x01000000) && ((inst[1] & 0xc1f82000) == 0x80102000)); - inst[0] = (inst[0] & 0xffc00000) | ((new_constant >> 10) & 0x3fffff); - inst[1] = (inst[1] & 0xfffffc00) | (new_constant & 0x3ff); - inst = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(inst, executable_offset); - SLJIT_CACHE_FLUSH(inst, inst + 2); + sljit_set_jump_addr(addr, new_constant, executable_offset); } diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_common.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_common.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_common.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeSPARC_common.c 2022-01-25 17:23:44.132496334 +0000 @@ -311,7 +311,7 @@ CHECK_PTR(check_sljit_generate_code(compiler)); reverse_buf(compiler); - code = (sljit_ins*)SLJIT_MALLOC_EXEC(compiler->size * sizeof(sljit_ins)); + code = (sljit_ins*)SLJIT_MALLOC_EXEC(compiler->size * sizeof(sljit_ins), compiler->exec_allocator_data); PTR_FAIL_WITH_EXEC_IF(code); buf = compiler->buf; @@ -437,6 +437,7 @@ code_ptr = (sljit_ins *)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset); SLJIT_CACHE_FLUSH(code, code_ptr); + SLJIT_UPDATE_WX_FLAGS(code, code_ptr, 1); return code; } diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeTILEGX_64.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeTILEGX_64.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeTILEGX_64.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeTILEGX_64.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,2563 +0,0 @@ -/* - * Stack-less Just-In-Time compiler - * - * Copyright 2013-2013 Tilera Corporation(jiwang@tilera.com). All rights reserved. - * Copyright Zoltan Herczeg (hzmester@freemail.hu). All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE COPYRIGHT HOLDER(S) OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* TileGX architecture. */ -/* Contributed by Tilera Corporation. */ -#include "sljitNativeTILEGX-encoder.c" - -#define SIMM_8BIT_MAX (0x7f) -#define SIMM_8BIT_MIN (-0x80) -#define SIMM_16BIT_MAX (0x7fff) -#define SIMM_16BIT_MIN (-0x8000) -#define SIMM_17BIT_MAX (0xffff) -#define SIMM_17BIT_MIN (-0x10000) -#define SIMM_32BIT_MAX (0x7fffffff) -#define SIMM_32BIT_MIN (-0x7fffffff - 1) -#define SIMM_48BIT_MAX (0x7fffffff0000L) -#define SIMM_48BIT_MIN (-0x800000000000L) -#define IMM16(imm) ((imm) & 0xffff) - -#define UIMM_16BIT_MAX (0xffff) - -#define TMP_REG1 (SLJIT_NUMBER_OF_REGISTERS + 2) -#define TMP_REG2 (SLJIT_NUMBER_OF_REGISTERS + 3) -#define TMP_REG3 (SLJIT_NUMBER_OF_REGISTERS + 4) -#define ADDR_TMP (SLJIT_NUMBER_OF_REGISTERS + 5) -#define PIC_ADDR_REG TMP_REG2 - -static const sljit_u8 reg_map[SLJIT_NUMBER_OF_REGISTERS + 6] = { - 63, 0, 1, 2, 3, 4, 30, 31, 32, 33, 34, 54, 5, 16, 6, 7 -}; - -#define SLJIT_LOCALS_REG_mapped 54 -#define TMP_REG1_mapped 5 -#define TMP_REG2_mapped 16 -#define TMP_REG3_mapped 6 -#define ADDR_TMP_mapped 7 - -/* Flags are keept in volatile registers. */ -#define EQUAL_FLAG 8 -/* And carry flag as well. */ -#define ULESS_FLAG 9 -#define UGREATER_FLAG 10 -#define LESS_FLAG 11 -#define GREATER_FLAG 12 -#define OVERFLOW_FLAG 13 - -#define ZERO 63 -#define RA 55 -#define TMP_EREG1 14 -#define TMP_EREG2 15 - -#define LOAD_DATA 0x01 -#define WORD_DATA 0x00 -#define BYTE_DATA 0x02 -#define HALF_DATA 0x04 -#define INT_DATA 0x06 -#define SIGNED_DATA 0x08 -#define DOUBLE_DATA 0x10 - -/* Separates integer and floating point registers */ -#define GPR_REG 0xf - -#define MEM_MASK 0x1f - -#define WRITE_BACK 0x00020 -#define ARG_TEST 0x00040 -#define ALT_KEEP_CACHE 0x00080 -#define CUMULATIVE_OP 0x00100 -#define LOGICAL_OP 0x00200 -#define IMM_OP 0x00400 -#define SRC2_IMM 0x00800 - -#define UNUSED_DEST 0x01000 -#define REG_DEST 0x02000 -#define REG1_SOURCE 0x04000 -#define REG2_SOURCE 0x08000 -#define SLOW_SRC1 0x10000 -#define SLOW_SRC2 0x20000 -#define SLOW_DEST 0x40000 - -/* Only these flags are set. UNUSED_DEST is not set when no flags should be set. - */ -#define CHECK_FLAGS(list) (!(flags & UNUSED_DEST) || (op & GET_FLAGS(~(list)))) - -SLJIT_API_FUNC_ATTRIBUTE const char *sljit_get_platform_name(void) -{ - return "TileGX" SLJIT_CPUINFO; -} - -/* Length of an instruction word */ -typedef sljit_uw sljit_ins; - -struct jit_instr { - const struct tilegx_opcode* opcode; - tilegx_pipeline pipe; - unsigned long input_registers; - unsigned long output_registers; - int operand_value[4]; - int line; -}; - -/* Opcode Helper Macros */ -#define TILEGX_X_MODE 0 - -#define X_MODE create_Mode(TILEGX_X_MODE) - -#define FNOP_X0 \ - create_Opcode_X0(RRR_0_OPCODE_X0) | \ - create_RRROpcodeExtension_X0(UNARY_RRR_0_OPCODE_X0) | \ - create_UnaryOpcodeExtension_X0(FNOP_UNARY_OPCODE_X0) - -#define FNOP_X1 \ - create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(UNARY_RRR_0_OPCODE_X1) | \ - create_UnaryOpcodeExtension_X1(FNOP_UNARY_OPCODE_X1) - -#define NOP \ - create_Mode(TILEGX_X_MODE) | FNOP_X0 | FNOP_X1 - -#define ANOP_X0 \ - create_Opcode_X0(RRR_0_OPCODE_X0) | \ - create_RRROpcodeExtension_X0(UNARY_RRR_0_OPCODE_X0) | \ - create_UnaryOpcodeExtension_X0(NOP_UNARY_OPCODE_X0) - -#define BPT create_Mode(TILEGX_X_MODE) | create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(UNARY_RRR_0_OPCODE_X1) | \ - create_UnaryOpcodeExtension_X1(ILL_UNARY_OPCODE_X1) | \ - create_Dest_X1(0x1C) | create_SrcA_X1(0x25) | ANOP_X0 - -#define ADD_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(ADD_RRR_0_OPCODE_X1) | FNOP_X0 - -#define ADDI_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(IMM8_OPCODE_X1) | \ - create_Imm8OpcodeExtension_X1(ADDI_IMM8_OPCODE_X1) | FNOP_X0 - -#define SUB_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(SUB_RRR_0_OPCODE_X1) | FNOP_X0 - -#define NOR_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(NOR_RRR_0_OPCODE_X1) | FNOP_X0 - -#define OR_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(OR_RRR_0_OPCODE_X1) | FNOP_X0 - -#define AND_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(AND_RRR_0_OPCODE_X1) | FNOP_X0 - -#define XOR_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(XOR_RRR_0_OPCODE_X1) | FNOP_X0 - -#define CMOVNEZ_X0 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X0(RRR_0_OPCODE_X0) | \ - create_RRROpcodeExtension_X0(CMOVNEZ_RRR_0_OPCODE_X0) | FNOP_X1 - -#define CMOVEQZ_X0 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X0(RRR_0_OPCODE_X0) | \ - create_RRROpcodeExtension_X0(CMOVEQZ_RRR_0_OPCODE_X0) | FNOP_X1 - -#define ADDLI_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(ADDLI_OPCODE_X1) | FNOP_X0 - -#define V4INT_L_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(V4INT_L_RRR_0_OPCODE_X1) | FNOP_X0 - -#define BFEXTU_X0 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X0(BF_OPCODE_X0) | \ - create_BFOpcodeExtension_X0(BFEXTU_BF_OPCODE_X0) | FNOP_X1 - -#define BFEXTS_X0 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X0(BF_OPCODE_X0) | \ - create_BFOpcodeExtension_X0(BFEXTS_BF_OPCODE_X0) | FNOP_X1 - -#define SHL16INSLI_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(SHL16INSLI_OPCODE_X1) | FNOP_X0 - -#define ST_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(ST_RRR_0_OPCODE_X1) | create_Dest_X1(0x0) | FNOP_X0 - -#define LD_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(UNARY_RRR_0_OPCODE_X1) | \ - create_UnaryOpcodeExtension_X1(LD_UNARY_OPCODE_X1) | FNOP_X0 - -#define JR_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(UNARY_RRR_0_OPCODE_X1) | \ - create_UnaryOpcodeExtension_X1(JR_UNARY_OPCODE_X1) | FNOP_X0 - -#define JALR_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(UNARY_RRR_0_OPCODE_X1) | \ - create_UnaryOpcodeExtension_X1(JALR_UNARY_OPCODE_X1) | FNOP_X0 - -#define CLZ_X0 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X0(RRR_0_OPCODE_X0) | \ - create_RRROpcodeExtension_X0(UNARY_RRR_0_OPCODE_X0) | \ - create_UnaryOpcodeExtension_X0(CNTLZ_UNARY_OPCODE_X0) | FNOP_X1 - -#define CMPLTUI_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(IMM8_OPCODE_X1) | \ - create_Imm8OpcodeExtension_X1(CMPLTUI_IMM8_OPCODE_X1) | FNOP_X0 - -#define CMPLTU_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(CMPLTU_RRR_0_OPCODE_X1) | FNOP_X0 - -#define CMPLTS_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(CMPLTS_RRR_0_OPCODE_X1) | FNOP_X0 - -#define XORI_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(IMM8_OPCODE_X1) | \ - create_Imm8OpcodeExtension_X1(XORI_IMM8_OPCODE_X1) | FNOP_X0 - -#define ORI_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(IMM8_OPCODE_X1) | \ - create_Imm8OpcodeExtension_X1(ORI_IMM8_OPCODE_X1) | FNOP_X0 - -#define ANDI_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(IMM8_OPCODE_X1) | \ - create_Imm8OpcodeExtension_X1(ANDI_IMM8_OPCODE_X1) | FNOP_X0 - -#define SHLI_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(SHIFT_OPCODE_X1) | \ - create_ShiftOpcodeExtension_X1(SHLI_SHIFT_OPCODE_X1) | FNOP_X0 - -#define SHL_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(SHL_RRR_0_OPCODE_X1) | FNOP_X0 - -#define SHRSI_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(SHIFT_OPCODE_X1) | \ - create_ShiftOpcodeExtension_X1(SHRSI_SHIFT_OPCODE_X1) | FNOP_X0 - -#define SHRS_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(SHRS_RRR_0_OPCODE_X1) | FNOP_X0 - -#define SHRUI_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(SHIFT_OPCODE_X1) | \ - create_ShiftOpcodeExtension_X1(SHRUI_SHIFT_OPCODE_X1) | FNOP_X0 - -#define SHRU_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(RRR_0_OPCODE_X1) | \ - create_RRROpcodeExtension_X1(SHRU_RRR_0_OPCODE_X1) | FNOP_X0 - -#define BEQZ_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(BRANCH_OPCODE_X1) | \ - create_BrType_X1(BEQZ_BRANCH_OPCODE_X1) | FNOP_X0 - -#define BNEZ_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(BRANCH_OPCODE_X1) | \ - create_BrType_X1(BNEZ_BRANCH_OPCODE_X1) | FNOP_X0 - -#define J_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(JUMP_OPCODE_X1) | \ - create_JumpOpcodeExtension_X1(J_JUMP_OPCODE_X1) | FNOP_X0 - -#define JAL_X1 \ - create_Mode(TILEGX_X_MODE) | create_Opcode_X1(JUMP_OPCODE_X1) | \ - create_JumpOpcodeExtension_X1(JAL_JUMP_OPCODE_X1) | FNOP_X0 - -#define DEST_X0(x) create_Dest_X0(x) -#define SRCA_X0(x) create_SrcA_X0(x) -#define SRCB_X0(x) create_SrcB_X0(x) -#define DEST_X1(x) create_Dest_X1(x) -#define SRCA_X1(x) create_SrcA_X1(x) -#define SRCB_X1(x) create_SrcB_X1(x) -#define IMM16_X1(x) create_Imm16_X1(x) -#define IMM8_X1(x) create_Imm8_X1(x) -#define BFSTART_X0(x) create_BFStart_X0(x) -#define BFEND_X0(x) create_BFEnd_X0(x) -#define SHIFTIMM_X1(x) create_ShAmt_X1(x) -#define JOFF_X1(x) create_JumpOff_X1(x) -#define BOFF_X1(x) create_BrOff_X1(x) - -static const tilegx_mnemonic data_transfer_insts[16] = { - /* u w s */ TILEGX_OPC_ST /* st */, - /* u w l */ TILEGX_OPC_LD /* ld */, - /* u b s */ TILEGX_OPC_ST1 /* st1 */, - /* u b l */ TILEGX_OPC_LD1U /* ld1u */, - /* u h s */ TILEGX_OPC_ST2 /* st2 */, - /* u h l */ TILEGX_OPC_LD2U /* ld2u */, - /* u i s */ TILEGX_OPC_ST4 /* st4 */, - /* u i l */ TILEGX_OPC_LD4U /* ld4u */, - /* s w s */ TILEGX_OPC_ST /* st */, - /* s w l */ TILEGX_OPC_LD /* ld */, - /* s b s */ TILEGX_OPC_ST1 /* st1 */, - /* s b l */ TILEGX_OPC_LD1S /* ld1s */, - /* s h s */ TILEGX_OPC_ST2 /* st2 */, - /* s h l */ TILEGX_OPC_LD2S /* ld2s */, - /* s i s */ TILEGX_OPC_ST4 /* st4 */, - /* s i l */ TILEGX_OPC_LD4S /* ld4s */, -}; - -#ifdef TILEGX_JIT_DEBUG -static sljit_s32 push_inst_debug(struct sljit_compiler *compiler, sljit_ins ins, int line) -{ - sljit_ins *ptr = (sljit_ins *)ensure_buf(compiler, sizeof(sljit_ins)); - FAIL_IF(!ptr); - *ptr = ins; - compiler->size++; - printf("|%04d|S0|:\t\t", line); - print_insn_tilegx(ptr); - return SLJIT_SUCCESS; -} - -static sljit_s32 push_inst_nodebug(struct sljit_compiler *compiler, sljit_ins ins) -{ - sljit_ins *ptr = (sljit_ins *)ensure_buf(compiler, sizeof(sljit_ins)); - FAIL_IF(!ptr); - *ptr = ins; - compiler->size++; - return SLJIT_SUCCESS; -} - -#define push_inst(a, b) push_inst_debug(a, b, __LINE__) -#else -static sljit_s32 push_inst(struct sljit_compiler *compiler, sljit_ins ins) -{ - sljit_ins *ptr = (sljit_ins *)ensure_buf(compiler, sizeof(sljit_ins)); - FAIL_IF(!ptr); - *ptr = ins; - compiler->size++; - return SLJIT_SUCCESS; -} -#endif - -#define BUNDLE_FORMAT_MASK(p0, p1, p2) \ - ((p0) | ((p1) << 8) | ((p2) << 16)) - -#define BUNDLE_FORMAT(p0, p1, p2) \ - { \ - { \ - (tilegx_pipeline)(p0), \ - (tilegx_pipeline)(p1), \ - (tilegx_pipeline)(p2) \ - }, \ - BUNDLE_FORMAT_MASK(1 << (p0), 1 << (p1), (1 << (p2))) \ - } - -#define NO_PIPELINE TILEGX_NUM_PIPELINE_ENCODINGS - -#define tilegx_is_x_pipeline(p) ((int)(p) <= (int)TILEGX_PIPELINE_X1) - -#define PI(encoding) \ - push_inst(compiler, encoding) - -#define PB3(opcode, dst, srca, srcb) \ - push_3_buffer(compiler, opcode, dst, srca, srcb, __LINE__) - -#define PB2(opcode, dst, src) \ - push_2_buffer(compiler, opcode, dst, src, __LINE__) - -#define JR(reg) \ - push_jr_buffer(compiler, TILEGX_OPC_JR, reg, __LINE__) - -#define ADD(dst, srca, srcb) \ - push_3_buffer(compiler, TILEGX_OPC_ADD, dst, srca, srcb, __LINE__) - -#define SUB(dst, srca, srcb) \ - push_3_buffer(compiler, TILEGX_OPC_SUB, dst, srca, srcb, __LINE__) - -#define MUL(dst, srca, srcb) \ - push_3_buffer(compiler, TILEGX_OPC_MULX, dst, srca, srcb, __LINE__) - -#define NOR(dst, srca, srcb) \ - push_3_buffer(compiler, TILEGX_OPC_NOR, dst, srca, srcb, __LINE__) - -#define OR(dst, srca, srcb) \ - push_3_buffer(compiler, TILEGX_OPC_OR, dst, srca, srcb, __LINE__) - -#define XOR(dst, srca, srcb) \ - push_3_buffer(compiler, TILEGX_OPC_XOR, dst, srca, srcb, __LINE__) - -#define AND(dst, srca, srcb) \ - push_3_buffer(compiler, TILEGX_OPC_AND, dst, srca, srcb, __LINE__) - -#define CLZ(dst, src) \ - push_2_buffer(compiler, TILEGX_OPC_CLZ, dst, src, __LINE__) - -#define SHLI(dst, srca, srcb) \ - push_3_buffer(compiler, TILEGX_OPC_SHLI, dst, srca, srcb, __LINE__) - -#define SHRUI(dst, srca, imm) \ - push_3_buffer(compiler, TILEGX_OPC_SHRUI, dst, srca, imm, __LINE__) - -#define XORI(dst, srca, imm) \ - push_3_buffer(compiler, TILEGX_OPC_XORI, dst, srca, imm, __LINE__) - -#define ORI(dst, srca, imm) \ - push_3_buffer(compiler, TILEGX_OPC_ORI, dst, srca, imm, __LINE__) - -#define CMPLTU(dst, srca, srcb) \ - push_3_buffer(compiler, TILEGX_OPC_CMPLTU, dst, srca, srcb, __LINE__) - -#define CMPLTS(dst, srca, srcb) \ - push_3_buffer(compiler, TILEGX_OPC_CMPLTS, dst, srca, srcb, __LINE__) - -#define CMPLTUI(dst, srca, imm) \ - push_3_buffer(compiler, TILEGX_OPC_CMPLTUI, dst, srca, imm, __LINE__) - -#define CMOVNEZ(dst, srca, srcb) \ - push_3_buffer(compiler, TILEGX_OPC_CMOVNEZ, dst, srca, srcb, __LINE__) - -#define CMOVEQZ(dst, srca, srcb) \ - push_3_buffer(compiler, TILEGX_OPC_CMOVEQZ, dst, srca, srcb, __LINE__) - -#define ADDLI(dst, srca, srcb) \ - push_3_buffer(compiler, TILEGX_OPC_ADDLI, dst, srca, srcb, __LINE__) - -#define SHL16INSLI(dst, srca, srcb) \ - push_3_buffer(compiler, TILEGX_OPC_SHL16INSLI, dst, srca, srcb, __LINE__) - -#define LD_ADD(dst, addr, adjust) \ - push_3_buffer(compiler, TILEGX_OPC_LD_ADD, dst, addr, adjust, __LINE__) - -#define ST_ADD(src, addr, adjust) \ - push_3_buffer(compiler, TILEGX_OPC_ST_ADD, src, addr, adjust, __LINE__) - -#define LD(dst, addr) \ - push_2_buffer(compiler, TILEGX_OPC_LD, dst, addr, __LINE__) - -#define BFEXTU(dst, src, start, end) \ - push_4_buffer(compiler, TILEGX_OPC_BFEXTU, dst, src, start, end, __LINE__) - -#define BFEXTS(dst, src, start, end) \ - push_4_buffer(compiler, TILEGX_OPC_BFEXTS, dst, src, start, end, __LINE__) - -#define ADD_SOLO(dest, srca, srcb) \ - push_inst(compiler, ADD_X1 | DEST_X1(dest) | SRCA_X1(srca) | SRCB_X1(srcb)) - -#define ADDI_SOLO(dest, srca, imm) \ - push_inst(compiler, ADDI_X1 | DEST_X1(dest) | SRCA_X1(srca) | IMM8_X1(imm)) - -#define ADDLI_SOLO(dest, srca, imm) \ - push_inst(compiler, ADDLI_X1 | DEST_X1(dest) | SRCA_X1(srca) | IMM16_X1(imm)) - -#define SHL16INSLI_SOLO(dest, srca, imm) \ - push_inst(compiler, SHL16INSLI_X1 | DEST_X1(dest) | SRCA_X1(srca) | IMM16_X1(imm)) - -#define JALR_SOLO(reg) \ - push_inst(compiler, JALR_X1 | SRCA_X1(reg)) - -#define JR_SOLO(reg) \ - push_inst(compiler, JR_X1 | SRCA_X1(reg)) - -struct Format { - /* Mapping of bundle issue slot to assigned pipe. */ - tilegx_pipeline pipe[TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE]; - - /* Mask of pipes used by this bundle. */ - unsigned int pipe_mask; -}; - -const struct Format formats[] = -{ - /* In Y format we must always have something in Y2, since it has - * no fnop, so this conveys that Y2 must always be used. */ - BUNDLE_FORMAT(TILEGX_PIPELINE_Y0, TILEGX_PIPELINE_Y2, NO_PIPELINE), - BUNDLE_FORMAT(TILEGX_PIPELINE_Y1, TILEGX_PIPELINE_Y2, NO_PIPELINE), - BUNDLE_FORMAT(TILEGX_PIPELINE_Y2, TILEGX_PIPELINE_Y0, NO_PIPELINE), - BUNDLE_FORMAT(TILEGX_PIPELINE_Y2, TILEGX_PIPELINE_Y1, NO_PIPELINE), - - /* Y format has three instructions. */ - BUNDLE_FORMAT(TILEGX_PIPELINE_Y0, TILEGX_PIPELINE_Y1, TILEGX_PIPELINE_Y2), - BUNDLE_FORMAT(TILEGX_PIPELINE_Y0, TILEGX_PIPELINE_Y2, TILEGX_PIPELINE_Y1), - BUNDLE_FORMAT(TILEGX_PIPELINE_Y1, TILEGX_PIPELINE_Y0, TILEGX_PIPELINE_Y2), - BUNDLE_FORMAT(TILEGX_PIPELINE_Y1, TILEGX_PIPELINE_Y2, TILEGX_PIPELINE_Y0), - BUNDLE_FORMAT(TILEGX_PIPELINE_Y2, TILEGX_PIPELINE_Y0, TILEGX_PIPELINE_Y1), - BUNDLE_FORMAT(TILEGX_PIPELINE_Y2, TILEGX_PIPELINE_Y1, TILEGX_PIPELINE_Y0), - - /* X format has only two instructions. */ - BUNDLE_FORMAT(TILEGX_PIPELINE_X0, TILEGX_PIPELINE_X1, NO_PIPELINE), - BUNDLE_FORMAT(TILEGX_PIPELINE_X1, TILEGX_PIPELINE_X0, NO_PIPELINE) -}; - - -struct jit_instr inst_buf[TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE]; -unsigned long inst_buf_index; - -tilegx_pipeline get_any_valid_pipe(const struct tilegx_opcode* opcode) -{ - /* FIXME: tile: we could pregenerate this. */ - int pipe; - for (pipe = 0; ((opcode->pipes & (1 << pipe)) == 0 && pipe < TILEGX_NUM_PIPELINE_ENCODINGS); pipe++) - ; - return (tilegx_pipeline)(pipe); -} - -void insert_nop(tilegx_mnemonic opc, int line) -{ - const struct tilegx_opcode* opcode = NULL; - - memmove(&inst_buf[1], &inst_buf[0], inst_buf_index * sizeof inst_buf[0]); - - opcode = &tilegx_opcodes[opc]; - inst_buf[0].opcode = opcode; - inst_buf[0].pipe = get_any_valid_pipe(opcode); - inst_buf[0].input_registers = 0; - inst_buf[0].output_registers = 0; - inst_buf[0].line = line; - ++inst_buf_index; -} - -const struct Format* compute_format() -{ - unsigned int compatible_pipes = BUNDLE_FORMAT_MASK( - inst_buf[0].opcode->pipes, - inst_buf[1].opcode->pipes, - (inst_buf_index == 3 ? inst_buf[2].opcode->pipes : (1 << NO_PIPELINE))); - - const struct Format* match = NULL; - const struct Format *b = NULL; - unsigned int i; - for (i = 0; i < sizeof formats / sizeof formats[0]; i++) { - b = &formats[i]; - if ((b->pipe_mask & compatible_pipes) == b->pipe_mask) { - match = b; - break; - } - } - - return match; -} - -sljit_s32 assign_pipes() -{ - unsigned long output_registers = 0; - unsigned int i = 0; - - if (inst_buf_index == 1) { - tilegx_mnemonic opc = inst_buf[0].opcode->can_bundle - ? TILEGX_OPC_FNOP : TILEGX_OPC_NOP; - insert_nop(opc, __LINE__); - } - - const struct Format* match = compute_format(); - - if (match == NULL) - return -1; - - for (i = 0; i < inst_buf_index; i++) { - - if ((i > 0) && ((inst_buf[i].input_registers & output_registers) != 0)) - return -1; - - if ((i > 0) && ((inst_buf[i].output_registers & output_registers) != 0)) - return -1; - - /* Don't include Rzero in the match set, to avoid triggering - needlessly on 'prefetch' instrs. */ - - output_registers |= inst_buf[i].output_registers & 0xFFFFFFFFFFFFFFL; - - inst_buf[i].pipe = match->pipe[i]; - } - - /* If only 2 instrs, and in Y-mode, insert a nop. */ - if (inst_buf_index == 2 && !tilegx_is_x_pipeline(match->pipe[0])) { - insert_nop(TILEGX_OPC_FNOP, __LINE__); - - /* Select the yet unassigned pipe. */ - tilegx_pipeline pipe = (tilegx_pipeline)(((TILEGX_PIPELINE_Y0 - + TILEGX_PIPELINE_Y1 + TILEGX_PIPELINE_Y2) - - (inst_buf[1].pipe + inst_buf[2].pipe))); - - inst_buf[0].pipe = pipe; - } - - return 0; -} - -tilegx_bundle_bits get_bundle_bit(struct jit_instr *inst) -{ - int i, val; - const struct tilegx_opcode* opcode = inst->opcode; - tilegx_bundle_bits bits = opcode->fixed_bit_values[inst->pipe]; - - const struct tilegx_operand* operand = NULL; - for (i = 0; i < opcode->num_operands; i++) { - operand = &tilegx_operands[opcode->operands[inst->pipe][i]]; - val = inst->operand_value[i]; - - bits |= operand->insert(val); - } - - return bits; -} - -static sljit_s32 update_buffer(struct sljit_compiler *compiler) -{ - int i; - int orig_index = inst_buf_index; - struct jit_instr inst0 = inst_buf[0]; - struct jit_instr inst1 = inst_buf[1]; - struct jit_instr inst2 = inst_buf[2]; - tilegx_bundle_bits bits = 0; - - /* If the bundle is valid as is, perform the encoding and return 1. */ - if (assign_pipes() == 0) { - for (i = 0; i < inst_buf_index; i++) { - bits |= get_bundle_bit(inst_buf + i); -#ifdef TILEGX_JIT_DEBUG - printf("|%04d", inst_buf[i].line); -#endif - } -#ifdef TILEGX_JIT_DEBUG - if (inst_buf_index == 3) - printf("|M0|:\t"); - else - printf("|M0|:\t\t"); - print_insn_tilegx(&bits); -#endif - - inst_buf_index = 0; - -#ifdef TILEGX_JIT_DEBUG - return push_inst_nodebug(compiler, bits); -#else - return push_inst(compiler, bits); -#endif - } - - /* If the bundle is invalid, split it in two. First encode the first two - (or possibly 1) instructions, and then the last, separately. Note that - assign_pipes may have re-ordered the instrs (by inserting no-ops in - lower slots) so we need to reset them. */ - - inst_buf_index = orig_index - 1; - inst_buf[0] = inst0; - inst_buf[1] = inst1; - inst_buf[2] = inst2; - if (assign_pipes() == 0) { - for (i = 0; i < inst_buf_index; i++) { - bits |= get_bundle_bit(inst_buf + i); -#ifdef TILEGX_JIT_DEBUG - printf("|%04d", inst_buf[i].line); -#endif - } - -#ifdef TILEGX_JIT_DEBUG - if (inst_buf_index == 3) - printf("|M1|:\t"); - else - printf("|M1|:\t\t"); - print_insn_tilegx(&bits); -#endif - - if ((orig_index - 1) == 2) { - inst_buf[0] = inst2; - inst_buf_index = 1; - } else if ((orig_index - 1) == 1) { - inst_buf[0] = inst1; - inst_buf_index = 1; - } else - SLJIT_UNREACHABLE(); - -#ifdef TILEGX_JIT_DEBUG - return push_inst_nodebug(compiler, bits); -#else - return push_inst(compiler, bits); -#endif - } else { - /* We had 3 instrs of which the first 2 can't live in the same bundle. - Split those two. Note that we don't try to then combine the second - and third instr into a single bundle. First instruction: */ - inst_buf_index = 1; - inst_buf[0] = inst0; - inst_buf[1] = inst1; - inst_buf[2] = inst2; - if (assign_pipes() == 0) { - for (i = 0; i < inst_buf_index; i++) { - bits |= get_bundle_bit(inst_buf + i); -#ifdef TILEGX_JIT_DEBUG - printf("|%04d", inst_buf[i].line); -#endif - } - -#ifdef TILEGX_JIT_DEBUG - if (inst_buf_index == 3) - printf("|M2|:\t"); - else - printf("|M2|:\t\t"); - print_insn_tilegx(&bits); -#endif - - inst_buf[0] = inst1; - inst_buf[1] = inst2; - inst_buf_index = orig_index - 1; -#ifdef TILEGX_JIT_DEBUG - return push_inst_nodebug(compiler, bits); -#else - return push_inst(compiler, bits); -#endif - } else - SLJIT_UNREACHABLE(); - } - - SLJIT_UNREACHABLE(); -} - -static sljit_s32 flush_buffer(struct sljit_compiler *compiler) -{ - while (inst_buf_index != 0) { - FAIL_IF(update_buffer(compiler)); - } - return SLJIT_SUCCESS; -} - -static sljit_s32 push_4_buffer(struct sljit_compiler *compiler, tilegx_mnemonic opc, int op0, int op1, int op2, int op3, int line) -{ - if (inst_buf_index == TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE) - FAIL_IF(update_buffer(compiler)); - - const struct tilegx_opcode* opcode = &tilegx_opcodes[opc]; - inst_buf[inst_buf_index].opcode = opcode; - inst_buf[inst_buf_index].pipe = get_any_valid_pipe(opcode); - inst_buf[inst_buf_index].operand_value[0] = op0; - inst_buf[inst_buf_index].operand_value[1] = op1; - inst_buf[inst_buf_index].operand_value[2] = op2; - inst_buf[inst_buf_index].operand_value[3] = op3; - inst_buf[inst_buf_index].input_registers = 1L << op1; - inst_buf[inst_buf_index].output_registers = 1L << op0; - inst_buf[inst_buf_index].line = line; - inst_buf_index++; - - return SLJIT_SUCCESS; -} - -static sljit_s32 push_3_buffer(struct sljit_compiler *compiler, tilegx_mnemonic opc, int op0, int op1, int op2, int line) -{ - if (inst_buf_index == TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE) - FAIL_IF(update_buffer(compiler)); - - const struct tilegx_opcode* opcode = &tilegx_opcodes[opc]; - inst_buf[inst_buf_index].opcode = opcode; - inst_buf[inst_buf_index].pipe = get_any_valid_pipe(opcode); - inst_buf[inst_buf_index].operand_value[0] = op0; - inst_buf[inst_buf_index].operand_value[1] = op1; - inst_buf[inst_buf_index].operand_value[2] = op2; - inst_buf[inst_buf_index].line = line; - - switch (opc) { - case TILEGX_OPC_ST_ADD: - inst_buf[inst_buf_index].input_registers = (1L << op0) | (1L << op1); - inst_buf[inst_buf_index].output_registers = 1L << op0; - break; - case TILEGX_OPC_LD_ADD: - inst_buf[inst_buf_index].input_registers = 1L << op1; - inst_buf[inst_buf_index].output_registers = (1L << op0) | (1L << op1); - break; - case TILEGX_OPC_ADD: - case TILEGX_OPC_AND: - case TILEGX_OPC_SUB: - case TILEGX_OPC_MULX: - case TILEGX_OPC_OR: - case TILEGX_OPC_XOR: - case TILEGX_OPC_NOR: - case TILEGX_OPC_SHL: - case TILEGX_OPC_SHRU: - case TILEGX_OPC_SHRS: - case TILEGX_OPC_CMPLTU: - case TILEGX_OPC_CMPLTS: - case TILEGX_OPC_CMOVEQZ: - case TILEGX_OPC_CMOVNEZ: - inst_buf[inst_buf_index].input_registers = (1L << op1) | (1L << op2); - inst_buf[inst_buf_index].output_registers = 1L << op0; - break; - case TILEGX_OPC_ADDLI: - case TILEGX_OPC_XORI: - case TILEGX_OPC_ORI: - case TILEGX_OPC_SHLI: - case TILEGX_OPC_SHRUI: - case TILEGX_OPC_SHRSI: - case TILEGX_OPC_SHL16INSLI: - case TILEGX_OPC_CMPLTUI: - case TILEGX_OPC_CMPLTSI: - inst_buf[inst_buf_index].input_registers = 1L << op1; - inst_buf[inst_buf_index].output_registers = 1L << op0; - break; - default: - printf("unrecoginzed opc: %s\n", opcode->name); - SLJIT_UNREACHABLE(); - } - - inst_buf_index++; - - return SLJIT_SUCCESS; -} - -static sljit_s32 push_2_buffer(struct sljit_compiler *compiler, tilegx_mnemonic opc, int op0, int op1, int line) -{ - if (inst_buf_index == TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE) - FAIL_IF(update_buffer(compiler)); - - const struct tilegx_opcode* opcode = &tilegx_opcodes[opc]; - inst_buf[inst_buf_index].opcode = opcode; - inst_buf[inst_buf_index].pipe = get_any_valid_pipe(opcode); - inst_buf[inst_buf_index].operand_value[0] = op0; - inst_buf[inst_buf_index].operand_value[1] = op1; - inst_buf[inst_buf_index].line = line; - - switch (opc) { - case TILEGX_OPC_BEQZ: - case TILEGX_OPC_BNEZ: - inst_buf[inst_buf_index].input_registers = 1L << op0; - break; - case TILEGX_OPC_ST: - case TILEGX_OPC_ST1: - case TILEGX_OPC_ST2: - case TILEGX_OPC_ST4: - inst_buf[inst_buf_index].input_registers = (1L << op0) | (1L << op1); - inst_buf[inst_buf_index].output_registers = 0; - break; - case TILEGX_OPC_CLZ: - case TILEGX_OPC_LD: - case TILEGX_OPC_LD1U: - case TILEGX_OPC_LD1S: - case TILEGX_OPC_LD2U: - case TILEGX_OPC_LD2S: - case TILEGX_OPC_LD4U: - case TILEGX_OPC_LD4S: - inst_buf[inst_buf_index].input_registers = 1L << op1; - inst_buf[inst_buf_index].output_registers = 1L << op0; - break; - default: - printf("unrecoginzed opc: %s\n", opcode->name); - SLJIT_UNREACHABLE(); - } - - inst_buf_index++; - - return SLJIT_SUCCESS; -} - -static sljit_s32 push_0_buffer(struct sljit_compiler *compiler, tilegx_mnemonic opc, int line) -{ - if (inst_buf_index == TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE) - FAIL_IF(update_buffer(compiler)); - - const struct tilegx_opcode* opcode = &tilegx_opcodes[opc]; - inst_buf[inst_buf_index].opcode = opcode; - inst_buf[inst_buf_index].pipe = get_any_valid_pipe(opcode); - inst_buf[inst_buf_index].input_registers = 0; - inst_buf[inst_buf_index].output_registers = 0; - inst_buf[inst_buf_index].line = line; - inst_buf_index++; - - return SLJIT_SUCCESS; -} - -static sljit_s32 push_jr_buffer(struct sljit_compiler *compiler, tilegx_mnemonic opc, int op0, int line) -{ - if (inst_buf_index == TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE) - FAIL_IF(update_buffer(compiler)); - - const struct tilegx_opcode* opcode = &tilegx_opcodes[opc]; - inst_buf[inst_buf_index].opcode = opcode; - inst_buf[inst_buf_index].pipe = get_any_valid_pipe(opcode); - inst_buf[inst_buf_index].operand_value[0] = op0; - inst_buf[inst_buf_index].input_registers = 1L << op0; - inst_buf[inst_buf_index].output_registers = 0; - inst_buf[inst_buf_index].line = line; - inst_buf_index++; - - return flush_buffer(compiler); -} - -static SLJIT_INLINE sljit_ins * detect_jump_type(struct sljit_jump *jump, sljit_ins *code_ptr, sljit_ins *code) -{ - sljit_sw diff; - sljit_uw target_addr; - sljit_ins *inst; - - if (jump->flags & SLJIT_REWRITABLE_JUMP) - return code_ptr; - - if (jump->flags & JUMP_ADDR) - target_addr = jump->u.target; - else { - SLJIT_ASSERT(jump->flags & JUMP_LABEL); - target_addr = (sljit_uw)(code + jump->u.label->size); - } - - inst = (sljit_ins *)jump->addr; - if (jump->flags & IS_COND) - inst--; - - diff = ((sljit_sw) target_addr - (sljit_sw) inst) >> 3; - if (diff <= SIMM_17BIT_MAX && diff >= SIMM_17BIT_MIN) { - jump->flags |= PATCH_B; - - if (!(jump->flags & IS_COND)) { - if (jump->flags & IS_JAL) { - jump->flags &= ~(PATCH_B); - jump->flags |= PATCH_J; - inst[0] = JAL_X1; - -#ifdef TILEGX_JIT_DEBUG - printf("[runtime relocate]%04d:\t", __LINE__); - print_insn_tilegx(inst); -#endif - } else { - inst[0] = BEQZ_X1 | SRCA_X1(ZERO); - -#ifdef TILEGX_JIT_DEBUG - printf("[runtime relocate]%04d:\t", __LINE__); - print_insn_tilegx(inst); -#endif - } - - return inst; - } - - inst[0] = inst[0] ^ (0x7L << 55); - -#ifdef TILEGX_JIT_DEBUG - printf("[runtime relocate]%04d:\t", __LINE__); - print_insn_tilegx(inst); -#endif - jump->addr -= sizeof(sljit_ins); - return inst; - } - - if (jump->flags & IS_COND) { - if ((target_addr & ~0x3FFFFFFFL) == ((jump->addr + sizeof(sljit_ins)) & ~0x3FFFFFFFL)) { - jump->flags |= PATCH_J; - inst[0] = (inst[0] & ~(BOFF_X1(-1))) | BOFF_X1(2); - inst[1] = J_X1; - return inst + 1; - } - - return code_ptr; - } - - if ((target_addr & ~0x3FFFFFFFL) == ((jump->addr + sizeof(sljit_ins)) & ~0x3FFFFFFFL)) { - jump->flags |= PATCH_J; - - if (jump->flags & IS_JAL) { - inst[0] = JAL_X1; - -#ifdef TILEGX_JIT_DEBUG - printf("[runtime relocate]%04d:\t", __LINE__); - print_insn_tilegx(inst); -#endif - - } else { - inst[0] = J_X1; - -#ifdef TILEGX_JIT_DEBUG - printf("[runtime relocate]%04d:\t", __LINE__); - print_insn_tilegx(inst); -#endif - } - - return inst; - } - - return code_ptr; -} - -SLJIT_API_FUNC_ATTRIBUTE void * sljit_generate_code(struct sljit_compiler *compiler) -{ - struct sljit_memory_fragment *buf; - sljit_ins *code; - sljit_ins *code_ptr; - sljit_ins *buf_ptr; - sljit_ins *buf_end; - sljit_uw word_count; - sljit_uw addr; - - struct sljit_label *label; - struct sljit_jump *jump; - struct sljit_const *const_; - - CHECK_ERROR_PTR(); - CHECK_PTR(check_sljit_generate_code(compiler)); - reverse_buf(compiler); - - code = (sljit_ins *)SLJIT_MALLOC_EXEC(compiler->size * sizeof(sljit_ins)); - PTR_FAIL_WITH_EXEC_IF(code); - buf = compiler->buf; - - code_ptr = code; - word_count = 0; - label = compiler->labels; - jump = compiler->jumps; - const_ = compiler->consts; - do { - buf_ptr = (sljit_ins *)buf->memory; - buf_end = buf_ptr + (buf->used_size >> 3); - do { - *code_ptr = *buf_ptr++; - SLJIT_ASSERT(!label || label->size >= word_count); - SLJIT_ASSERT(!jump || jump->addr >= word_count); - SLJIT_ASSERT(!const_ || const_->addr >= word_count); - /* These structures are ordered by their address. */ - if (label && label->size == word_count) { - /* Just recording the address. */ - label->addr = (sljit_uw) code_ptr; - label->size = code_ptr - code; - label = label->next; - } - - if (jump && jump->addr == word_count) { - if (jump->flags & IS_JAL) - jump->addr = (sljit_uw)(code_ptr - 4); - else - jump->addr = (sljit_uw)(code_ptr - 3); - - code_ptr = detect_jump_type(jump, code_ptr, code); - jump = jump->next; - } - - if (const_ && const_->addr == word_count) { - /* Just recording the address. */ - const_->addr = (sljit_uw) code_ptr; - const_ = const_->next; - } - - code_ptr++; - word_count++; - } while (buf_ptr < buf_end); - - buf = buf->next; - } while (buf); - - if (label && label->size == word_count) { - label->addr = (sljit_uw) code_ptr; - label->size = code_ptr - code; - label = label->next; - } - - SLJIT_ASSERT(!label); - SLJIT_ASSERT(!jump); - SLJIT_ASSERT(!const_); - SLJIT_ASSERT(code_ptr - code <= (sljit_sw)compiler->size); - - jump = compiler->jumps; - while (jump) { - do { - addr = (jump->flags & JUMP_LABEL) ? jump->u.label->addr : jump->u.target; - buf_ptr = (sljit_ins *)jump->addr; - - if (jump->flags & PATCH_B) { - addr = (sljit_sw)(addr - (jump->addr)) >> 3; - SLJIT_ASSERT((sljit_sw) addr <= SIMM_17BIT_MAX && (sljit_sw) addr >= SIMM_17BIT_MIN); - buf_ptr[0] = (buf_ptr[0] & ~(BOFF_X1(-1))) | BOFF_X1(addr); - -#ifdef TILEGX_JIT_DEBUG - printf("[runtime relocate]%04d:\t", __LINE__); - print_insn_tilegx(buf_ptr); -#endif - break; - } - - if (jump->flags & PATCH_J) { - SLJIT_ASSERT((addr & ~0x3FFFFFFFL) == ((jump->addr + sizeof(sljit_ins)) & ~0x3FFFFFFFL)); - addr = (sljit_sw)(addr - (jump->addr)) >> 3; - buf_ptr[0] = (buf_ptr[0] & ~(JOFF_X1(-1))) | JOFF_X1(addr); - -#ifdef TILEGX_JIT_DEBUG - printf("[runtime relocate]%04d:\t", __LINE__); - print_insn_tilegx(buf_ptr); -#endif - break; - } - - SLJIT_ASSERT(!(jump->flags & IS_JAL)); - - /* Set the fields of immediate loads. */ - buf_ptr[0] = (buf_ptr[0] & ~(0xFFFFL << 43)) | (((addr >> 32) & 0xFFFFL) << 43); - buf_ptr[1] = (buf_ptr[1] & ~(0xFFFFL << 43)) | (((addr >> 16) & 0xFFFFL) << 43); - buf_ptr[2] = (buf_ptr[2] & ~(0xFFFFL << 43)) | ((addr & 0xFFFFL) << 43); - } while (0); - - jump = jump->next; - } - - compiler->error = SLJIT_ERR_COMPILED; - compiler->executable_size = (code_ptr - code) * sizeof(sljit_ins); - SLJIT_CACHE_FLUSH(code, code_ptr); - return code; -} - -static sljit_s32 load_immediate(struct sljit_compiler *compiler, sljit_s32 dst_ar, sljit_sw imm) -{ - - if (imm <= SIMM_16BIT_MAX && imm >= SIMM_16BIT_MIN) - return ADDLI(dst_ar, ZERO, imm); - - if (imm <= SIMM_32BIT_MAX && imm >= SIMM_32BIT_MIN) { - FAIL_IF(ADDLI(dst_ar, ZERO, imm >> 16)); - return SHL16INSLI(dst_ar, dst_ar, imm); - } - - if (imm <= SIMM_48BIT_MAX && imm >= SIMM_48BIT_MIN) { - FAIL_IF(ADDLI(dst_ar, ZERO, imm >> 32)); - FAIL_IF(SHL16INSLI(dst_ar, dst_ar, imm >> 16)); - return SHL16INSLI(dst_ar, dst_ar, imm); - } - - FAIL_IF(ADDLI(dst_ar, ZERO, imm >> 48)); - FAIL_IF(SHL16INSLI(dst_ar, dst_ar, imm >> 32)); - FAIL_IF(SHL16INSLI(dst_ar, dst_ar, imm >> 16)); - return SHL16INSLI(dst_ar, dst_ar, imm); -} - -static sljit_s32 emit_const(struct sljit_compiler *compiler, sljit_s32 dst_ar, sljit_sw imm, int flush) -{ - /* Should *not* be optimized as load_immediate, as pcre relocation - mechanism will match this fixed 4-instruction pattern. */ - if (flush) { - FAIL_IF(ADDLI_SOLO(dst_ar, ZERO, imm >> 32)); - FAIL_IF(SHL16INSLI_SOLO(dst_ar, dst_ar, imm >> 16)); - return SHL16INSLI_SOLO(dst_ar, dst_ar, imm); - } - - FAIL_IF(ADDLI(dst_ar, ZERO, imm >> 32)); - FAIL_IF(SHL16INSLI(dst_ar, dst_ar, imm >> 16)); - return SHL16INSLI(dst_ar, dst_ar, imm); -} - -static sljit_s32 emit_const_64(struct sljit_compiler *compiler, sljit_s32 dst_ar, sljit_sw imm, int flush) -{ - /* Should *not* be optimized as load_immediate, as pcre relocation - mechanism will match this fixed 4-instruction pattern. */ - if (flush) { - FAIL_IF(ADDLI_SOLO(reg_map[dst_ar], ZERO, imm >> 48)); - FAIL_IF(SHL16INSLI_SOLO(reg_map[dst_ar], reg_map[dst_ar], imm >> 32)); - FAIL_IF(SHL16INSLI_SOLO(reg_map[dst_ar], reg_map[dst_ar], imm >> 16)); - return SHL16INSLI_SOLO(reg_map[dst_ar], reg_map[dst_ar], imm); - } - - FAIL_IF(ADDLI(reg_map[dst_ar], ZERO, imm >> 48)); - FAIL_IF(SHL16INSLI(reg_map[dst_ar], reg_map[dst_ar], imm >> 32)); - FAIL_IF(SHL16INSLI(reg_map[dst_ar], reg_map[dst_ar], imm >> 16)); - return SHL16INSLI(reg_map[dst_ar], reg_map[dst_ar], imm); -} - -SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_enter(struct sljit_compiler *compiler, - sljit_s32 options, sljit_s32 args, sljit_s32 scratches, sljit_s32 saveds, - sljit_s32 fscratches, sljit_s32 fsaveds, sljit_s32 local_size) -{ - sljit_ins base; - sljit_s32 i, tmp; - - CHECK_ERROR(); - CHECK(check_sljit_emit_enter(compiler, options, args, scratches, saveds, fscratches, fsaveds, local_size)); - set_emit_enter(compiler, options, args, scratches, saveds, fscratches, fsaveds, local_size); - - local_size += GET_SAVED_REGISTERS_SIZE(scratches, saveds, 1); - local_size = (local_size + 7) & ~7; - compiler->local_size = local_size; - - if (local_size <= SIMM_16BIT_MAX) { - /* Frequent case. */ - FAIL_IF(ADDLI(SLJIT_LOCALS_REG_mapped, SLJIT_LOCALS_REG_mapped, -local_size)); - base = SLJIT_LOCALS_REG_mapped; - } else { - FAIL_IF(load_immediate(compiler, TMP_REG1_mapped, local_size)); - FAIL_IF(ADD(TMP_REG2_mapped, SLJIT_LOCALS_REG_mapped, ZERO)); - FAIL_IF(SUB(SLJIT_LOCALS_REG_mapped, SLJIT_LOCALS_REG_mapped, TMP_REG1_mapped)); - base = TMP_REG2_mapped; - local_size = 0; - } - - /* Save the return address. */ - FAIL_IF(ADDLI(ADDR_TMP_mapped, base, local_size - 8)); - FAIL_IF(ST_ADD(ADDR_TMP_mapped, RA, -8)); - - /* Save the S registers. */ - tmp = saveds < SLJIT_NUMBER_OF_SAVED_REGISTERS ? (SLJIT_S0 + 1 - saveds) : SLJIT_FIRST_SAVED_REG; - for (i = SLJIT_S0; i >= tmp; i--) { - FAIL_IF(ST_ADD(ADDR_TMP_mapped, reg_map[i], -8)); - } - - /* Save the R registers that need to be reserved. */ - for (i = scratches; i >= SLJIT_FIRST_SAVED_REG; i--) { - FAIL_IF(ST_ADD(ADDR_TMP_mapped, reg_map[i], -8)); - } - - /* Move the arguments to S registers. */ - for (i = 0; i < args; i++) { - FAIL_IF(ADD(reg_map[SLJIT_S0 - i], i, ZERO)); - } - - return SLJIT_SUCCESS; -} - -SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_set_context(struct sljit_compiler *compiler, - sljit_s32 options, sljit_s32 args, sljit_s32 scratches, sljit_s32 saveds, - sljit_s32 fscratches, sljit_s32 fsaveds, sljit_s32 local_size) -{ - CHECK_ERROR(); - CHECK(check_sljit_set_context(compiler, options, args, scratches, saveds, fscratches, fsaveds, local_size)); - set_set_context(compiler, options, args, scratches, saveds, fscratches, fsaveds, local_size); - - local_size += GET_SAVED_REGISTERS_SIZE(scratches, saveds, 1); - compiler->local_size = (local_size + 7) & ~7; - - return SLJIT_SUCCESS; -} - -SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_return(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 src, sljit_sw srcw) -{ - sljit_s32 local_size; - sljit_ins base; - sljit_s32 i, tmp; - sljit_s32 saveds; - - CHECK_ERROR(); - CHECK(check_sljit_emit_return(compiler, op, src, srcw)); - - FAIL_IF(emit_mov_before_return(compiler, op, src, srcw)); - - local_size = compiler->local_size; - if (local_size <= SIMM_16BIT_MAX) - base = SLJIT_LOCALS_REG_mapped; - else { - FAIL_IF(load_immediate(compiler, TMP_REG1_mapped, local_size)); - FAIL_IF(ADD(TMP_REG1_mapped, SLJIT_LOCALS_REG_mapped, TMP_REG1_mapped)); - base = TMP_REG1_mapped; - local_size = 0; - } - - /* Restore the return address. */ - FAIL_IF(ADDLI(ADDR_TMP_mapped, base, local_size - 8)); - FAIL_IF(LD_ADD(RA, ADDR_TMP_mapped, -8)); - - /* Restore the S registers. */ - saveds = compiler->saveds; - tmp = saveds < SLJIT_NUMBER_OF_SAVED_REGISTERS ? (SLJIT_S0 + 1 - saveds) : SLJIT_FIRST_SAVED_REG; - for (i = SLJIT_S0; i >= tmp; i--) { - FAIL_IF(LD_ADD(reg_map[i], ADDR_TMP_mapped, -8)); - } - - /* Restore the R registers that need to be reserved. */ - for (i = compiler->scratches; i >= SLJIT_FIRST_SAVED_REG; i--) { - FAIL_IF(LD_ADD(reg_map[i], ADDR_TMP_mapped, -8)); - } - - if (compiler->local_size <= SIMM_16BIT_MAX) - FAIL_IF(ADDLI(SLJIT_LOCALS_REG_mapped, SLJIT_LOCALS_REG_mapped, compiler->local_size)); - else - FAIL_IF(ADD(SLJIT_LOCALS_REG_mapped, TMP_REG1_mapped, ZERO)); - - return JR(RA); -} - -/* reg_ar is an absoulute register! */ - -/* Can perform an operation using at most 1 instruction. */ -static sljit_s32 getput_arg_fast(struct sljit_compiler *compiler, sljit_s32 flags, sljit_s32 reg_ar, sljit_s32 arg, sljit_sw argw) -{ - SLJIT_ASSERT(arg & SLJIT_MEM); - - if ((!(flags & WRITE_BACK) || !(arg & REG_MASK)) - && !(arg & OFFS_REG_MASK) && argw <= SIMM_16BIT_MAX && argw >= SIMM_16BIT_MIN) { - /* Works for both absoulte and relative addresses. */ - if (SLJIT_UNLIKELY(flags & ARG_TEST)) - return 1; - - FAIL_IF(ADDLI(ADDR_TMP_mapped, reg_map[arg & REG_MASK], argw)); - - if (flags & LOAD_DATA) - FAIL_IF(PB2(data_transfer_insts[flags & MEM_MASK], reg_ar, ADDR_TMP_mapped)); - else - FAIL_IF(PB2(data_transfer_insts[flags & MEM_MASK], ADDR_TMP_mapped, reg_ar)); - - return -1; - } - - return 0; -} - -/* See getput_arg below. - Note: can_cache is called only for binary operators. Those - operators always uses word arguments without write back. */ -static sljit_s32 can_cache(sljit_s32 arg, sljit_sw argw, sljit_s32 next_arg, sljit_sw next_argw) -{ - SLJIT_ASSERT((arg & SLJIT_MEM) && (next_arg & SLJIT_MEM)); - - /* Simple operation except for updates. */ - if (arg & OFFS_REG_MASK) { - argw &= 0x3; - next_argw &= 0x3; - if (argw && argw == next_argw - && (arg == next_arg || (arg & OFFS_REG_MASK) == (next_arg & OFFS_REG_MASK))) - return 1; - return 0; - } - - if (arg == next_arg) { - if (((next_argw - argw) <= SIMM_16BIT_MAX - && (next_argw - argw) >= SIMM_16BIT_MIN)) - return 1; - - return 0; - } - - return 0; -} - -/* Emit the necessary instructions. See can_cache above. */ -static sljit_s32 getput_arg(struct sljit_compiler *compiler, sljit_s32 flags, sljit_s32 reg_ar, sljit_s32 arg, sljit_sw argw, sljit_s32 next_arg, sljit_sw next_argw) -{ - sljit_s32 tmp_ar, base; - - SLJIT_ASSERT(arg & SLJIT_MEM); - if (!(next_arg & SLJIT_MEM)) { - next_arg = 0; - next_argw = 0; - } - - if ((flags & MEM_MASK) <= GPR_REG && (flags & LOAD_DATA)) - tmp_ar = reg_ar; - else - tmp_ar = TMP_REG1_mapped; - - base = arg & REG_MASK; - - if (SLJIT_UNLIKELY(arg & OFFS_REG_MASK)) { - argw &= 0x3; - - if ((flags & WRITE_BACK) && reg_ar == reg_map[base]) { - SLJIT_ASSERT(!(flags & LOAD_DATA) && reg_map[TMP_REG1] != reg_ar); - FAIL_IF(ADD(TMP_REG1_mapped, reg_ar, ZERO)); - reg_ar = TMP_REG1_mapped; - } - - /* Using the cache. */ - if (argw == compiler->cache_argw) { - if (!(flags & WRITE_BACK)) { - if (arg == compiler->cache_arg) { - if (flags & LOAD_DATA) - return PB2(data_transfer_insts[flags & MEM_MASK], reg_ar, TMP_REG3_mapped); - else - return PB2(data_transfer_insts[flags & MEM_MASK], TMP_REG3_mapped, reg_ar); - } - - if ((SLJIT_MEM | (arg & OFFS_REG_MASK)) == compiler->cache_arg) { - if (arg == next_arg && argw == (next_argw & 0x3)) { - compiler->cache_arg = arg; - compiler->cache_argw = argw; - FAIL_IF(ADD(TMP_REG3_mapped, reg_map[base], TMP_REG3_mapped)); - if (flags & LOAD_DATA) - return PB2(data_transfer_insts[flags & MEM_MASK], reg_ar, TMP_REG3_mapped); - else - return PB2(data_transfer_insts[flags & MEM_MASK], TMP_REG3_mapped, reg_ar); - } - - FAIL_IF(ADD(tmp_ar, reg_map[base], TMP_REG3_mapped)); - if (flags & LOAD_DATA) - return PB2(data_transfer_insts[flags & MEM_MASK], reg_ar, tmp_ar); - else - return PB2(data_transfer_insts[flags & MEM_MASK], tmp_ar, reg_ar); - } - } else { - if ((SLJIT_MEM | (arg & OFFS_REG_MASK)) == compiler->cache_arg) { - FAIL_IF(ADD(reg_map[base], reg_map[base], TMP_REG3_mapped)); - if (flags & LOAD_DATA) - return PB2(data_transfer_insts[flags & MEM_MASK], reg_ar, reg_map[base]); - else - return PB2(data_transfer_insts[flags & MEM_MASK], reg_map[base], reg_ar); - } - } - } - - if (SLJIT_UNLIKELY(argw)) { - compiler->cache_arg = SLJIT_MEM | (arg & OFFS_REG_MASK); - compiler->cache_argw = argw; - FAIL_IF(SHLI(TMP_REG3_mapped, reg_map[OFFS_REG(arg)], argw)); - } - - if (!(flags & WRITE_BACK)) { - if (arg == next_arg && argw == (next_argw & 0x3)) { - compiler->cache_arg = arg; - compiler->cache_argw = argw; - FAIL_IF(ADD(TMP_REG3_mapped, reg_map[base], reg_map[!argw ? OFFS_REG(arg) : TMP_REG3])); - tmp_ar = TMP_REG3_mapped; - } else - FAIL_IF(ADD(tmp_ar, reg_map[base], reg_map[!argw ? OFFS_REG(arg) : TMP_REG3])); - - if (flags & LOAD_DATA) - return PB2(data_transfer_insts[flags & MEM_MASK], reg_ar, tmp_ar); - else - return PB2(data_transfer_insts[flags & MEM_MASK], tmp_ar, reg_ar); - } - - FAIL_IF(ADD(reg_map[base], reg_map[base], reg_map[!argw ? OFFS_REG(arg) : TMP_REG3])); - - if (flags & LOAD_DATA) - return PB2(data_transfer_insts[flags & MEM_MASK], reg_ar, reg_map[base]); - else - return PB2(data_transfer_insts[flags & MEM_MASK], reg_map[base], reg_ar); - } - - if (SLJIT_UNLIKELY(flags & WRITE_BACK) && base) { - /* Update only applies if a base register exists. */ - if (reg_ar == reg_map[base]) { - SLJIT_ASSERT(!(flags & LOAD_DATA) && TMP_REG1_mapped != reg_ar); - if (argw <= SIMM_16BIT_MAX && argw >= SIMM_16BIT_MIN) { - FAIL_IF(ADDLI(ADDR_TMP_mapped, reg_map[base], argw)); - if (flags & LOAD_DATA) - FAIL_IF(PB2(data_transfer_insts[flags & MEM_MASK], reg_ar, ADDR_TMP_mapped)); - else - FAIL_IF(PB2(data_transfer_insts[flags & MEM_MASK], ADDR_TMP_mapped, reg_ar)); - - if (argw) - return ADDLI(reg_map[base], reg_map[base], argw); - - return SLJIT_SUCCESS; - } - - FAIL_IF(ADD(TMP_REG1_mapped, reg_ar, ZERO)); - reg_ar = TMP_REG1_mapped; - } - - if (argw <= SIMM_16BIT_MAX && argw >= SIMM_16BIT_MIN) { - if (argw) - FAIL_IF(ADDLI(reg_map[base], reg_map[base], argw)); - } else { - if (compiler->cache_arg == SLJIT_MEM - && argw - compiler->cache_argw <= SIMM_16BIT_MAX - && argw - compiler->cache_argw >= SIMM_16BIT_MIN) { - if (argw != compiler->cache_argw) { - FAIL_IF(ADD(TMP_REG3_mapped, TMP_REG3_mapped, argw - compiler->cache_argw)); - compiler->cache_argw = argw; - } - - FAIL_IF(ADD(reg_map[base], reg_map[base], TMP_REG3_mapped)); - } else { - compiler->cache_arg = SLJIT_MEM; - compiler->cache_argw = argw; - FAIL_IF(load_immediate(compiler, TMP_REG3_mapped, argw)); - FAIL_IF(ADD(reg_map[base], reg_map[base], TMP_REG3_mapped)); - } - } - - if (flags & LOAD_DATA) - return PB2(data_transfer_insts[flags & MEM_MASK], reg_ar, reg_map[base]); - else - return PB2(data_transfer_insts[flags & MEM_MASK], reg_map[base], reg_ar); - } - - if (compiler->cache_arg == arg - && argw - compiler->cache_argw <= SIMM_16BIT_MAX - && argw - compiler->cache_argw >= SIMM_16BIT_MIN) { - if (argw != compiler->cache_argw) { - FAIL_IF(ADDLI(TMP_REG3_mapped, TMP_REG3_mapped, argw - compiler->cache_argw)); - compiler->cache_argw = argw; - } - - if (flags & LOAD_DATA) - return PB2(data_transfer_insts[flags & MEM_MASK], reg_ar, TMP_REG3_mapped); - else - return PB2(data_transfer_insts[flags & MEM_MASK], TMP_REG3_mapped, reg_ar); - } - - if (compiler->cache_arg == SLJIT_MEM - && argw - compiler->cache_argw <= SIMM_16BIT_MAX - && argw - compiler->cache_argw >= SIMM_16BIT_MIN) { - if (argw != compiler->cache_argw) - FAIL_IF(ADDLI(TMP_REG3_mapped, TMP_REG3_mapped, argw - compiler->cache_argw)); - } else { - compiler->cache_arg = SLJIT_MEM; - FAIL_IF(load_immediate(compiler, TMP_REG3_mapped, argw)); - } - - compiler->cache_argw = argw; - - if (!base) { - if (flags & LOAD_DATA) - return PB2(data_transfer_insts[flags & MEM_MASK], reg_ar, TMP_REG3_mapped); - else - return PB2(data_transfer_insts[flags & MEM_MASK], TMP_REG3_mapped, reg_ar); - } - - if (arg == next_arg - && next_argw - argw <= SIMM_16BIT_MAX - && next_argw - argw >= SIMM_16BIT_MIN) { - compiler->cache_arg = arg; - FAIL_IF(ADD(TMP_REG3_mapped, TMP_REG3_mapped, reg_map[base])); - if (flags & LOAD_DATA) - return PB2(data_transfer_insts[flags & MEM_MASK], reg_ar, TMP_REG3_mapped); - else - return PB2(data_transfer_insts[flags & MEM_MASK], TMP_REG3_mapped, reg_ar); - } - - FAIL_IF(ADD(tmp_ar, TMP_REG3_mapped, reg_map[base])); - - if (flags & LOAD_DATA) - return PB2(data_transfer_insts[flags & MEM_MASK], reg_ar, tmp_ar); - else - return PB2(data_transfer_insts[flags & MEM_MASK], tmp_ar, reg_ar); -} - -static SLJIT_INLINE sljit_s32 emit_op_mem(struct sljit_compiler *compiler, sljit_s32 flags, sljit_s32 reg_ar, sljit_s32 arg, sljit_sw argw) -{ - if (getput_arg_fast(compiler, flags, reg_ar, arg, argw)) - return compiler->error; - - compiler->cache_arg = 0; - compiler->cache_argw = 0; - return getput_arg(compiler, flags, reg_ar, arg, argw, 0, 0); -} - -static SLJIT_INLINE sljit_s32 emit_op_mem2(struct sljit_compiler *compiler, sljit_s32 flags, sljit_s32 reg, sljit_s32 arg1, sljit_sw arg1w, sljit_s32 arg2, sljit_sw arg2w) -{ - if (getput_arg_fast(compiler, flags, reg, arg1, arg1w)) - return compiler->error; - return getput_arg(compiler, flags, reg, arg1, arg1w, arg2, arg2w); -} - -SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fast_enter(struct sljit_compiler *compiler, sljit_s32 dst, sljit_sw dstw) -{ - CHECK_ERROR(); - CHECK(check_sljit_emit_fast_enter(compiler, dst, dstw)); - ADJUST_LOCAL_OFFSET(dst, dstw); - - /* For UNUSED dst. Uncommon, but possible. */ - if (dst == SLJIT_UNUSED) - return SLJIT_SUCCESS; - - if (FAST_IS_REG(dst)) - return ADD(reg_map[dst], RA, ZERO); - - /* Memory. */ - return emit_op_mem(compiler, WORD_DATA, RA, dst, dstw); -} - -static SLJIT_INLINE sljit_s32 emit_single_op(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 flags, sljit_s32 dst, sljit_s32 src1, sljit_sw src2) -{ - sljit_s32 overflow_ra = 0; - - switch (GET_OPCODE(op)) { - case SLJIT_MOV: - case SLJIT_MOV_P: - SLJIT_ASSERT(src1 == TMP_REG1 && !(flags & SRC2_IMM)); - if (dst != src2) - return ADD(reg_map[dst], reg_map[src2], ZERO); - return SLJIT_SUCCESS; - - case SLJIT_MOV_U32: - case SLJIT_MOV_S32: - SLJIT_ASSERT(src1 == TMP_REG1 && !(flags & SRC2_IMM)); - if ((flags & (REG_DEST | REG2_SOURCE)) == (REG_DEST | REG2_SOURCE)) { - if (op == SLJIT_MOV_S32) - return BFEXTS(reg_map[dst], reg_map[src2], 0, 31); - - return BFEXTU(reg_map[dst], reg_map[src2], 0, 31); - } else if (dst != src2) { - SLJIT_ASSERT(src2 == 0); - return ADD(reg_map[dst], reg_map[src2], ZERO); - } - - return SLJIT_SUCCESS; - - case SLJIT_MOV_U8: - case SLJIT_MOV_S8: - SLJIT_ASSERT(src1 == TMP_REG1 && !(flags & SRC2_IMM)); - if ((flags & (REG_DEST | REG2_SOURCE)) == (REG_DEST | REG2_SOURCE)) { - if (op == SLJIT_MOV_S8) - return BFEXTS(reg_map[dst], reg_map[src2], 0, 7); - - return BFEXTU(reg_map[dst], reg_map[src2], 0, 7); - } else if (dst != src2) { - SLJIT_ASSERT(src2 == 0); - return ADD(reg_map[dst], reg_map[src2], ZERO); - } - - return SLJIT_SUCCESS; - - case SLJIT_MOV_U16: - case SLJIT_MOV_S16: - SLJIT_ASSERT(src1 == TMP_REG1 && !(flags & SRC2_IMM)); - if ((flags & (REG_DEST | REG2_SOURCE)) == (REG_DEST | REG2_SOURCE)) { - if (op == SLJIT_MOV_S16) - return BFEXTS(reg_map[dst], reg_map[src2], 0, 15); - - return BFEXTU(reg_map[dst], reg_map[src2], 0, 15); - } else if (dst != src2) { - SLJIT_ASSERT(src2 == 0); - return ADD(reg_map[dst], reg_map[src2], ZERO); - } - - return SLJIT_SUCCESS; - - case SLJIT_NOT: - SLJIT_ASSERT(src1 == TMP_REG1 && !(flags & SRC2_IMM)); - if (op & SLJIT_SET_E) - FAIL_IF(NOR(EQUAL_FLAG, reg_map[src2], reg_map[src2])); - if (CHECK_FLAGS(SLJIT_SET_E)) - FAIL_IF(NOR(reg_map[dst], reg_map[src2], reg_map[src2])); - - return SLJIT_SUCCESS; - - case SLJIT_CLZ: - SLJIT_ASSERT(src1 == TMP_REG1 && !(flags & SRC2_IMM)); - if (op & SLJIT_SET_E) - FAIL_IF(CLZ(EQUAL_FLAG, reg_map[src2])); - if (CHECK_FLAGS(SLJIT_SET_E)) - FAIL_IF(CLZ(reg_map[dst], reg_map[src2])); - - return SLJIT_SUCCESS; - - case SLJIT_ADD: - if (flags & SRC2_IMM) { - if (op & SLJIT_SET_O) { - FAIL_IF(SHRUI(TMP_EREG1, reg_map[src1], 63)); - if (src2 < 0) - FAIL_IF(XORI(TMP_EREG1, TMP_EREG1, 1)); - } - - if (op & SLJIT_SET_E) - FAIL_IF(ADDLI(EQUAL_FLAG, reg_map[src1], src2)); - - if (op & SLJIT_SET_C) { - if (src2 >= 0) - FAIL_IF(ORI(ULESS_FLAG ,reg_map[src1], src2)); - else { - FAIL_IF(ADDLI(ULESS_FLAG ,ZERO, src2)); - FAIL_IF(OR(ULESS_FLAG,reg_map[src1],ULESS_FLAG)); - } - } - - /* dst may be the same as src1 or src2. */ - if (CHECK_FLAGS(SLJIT_SET_E)) - FAIL_IF(ADDLI(reg_map[dst], reg_map[src1], src2)); - - if (op & SLJIT_SET_O) { - FAIL_IF(SHRUI(OVERFLOW_FLAG, reg_map[dst], 63)); - - if (src2 < 0) - FAIL_IF(XORI(OVERFLOW_FLAG, OVERFLOW_FLAG, 1)); - } - } else { - if (op & SLJIT_SET_O) { - FAIL_IF(XOR(TMP_EREG1, reg_map[src1], reg_map[src2])); - FAIL_IF(SHRUI(TMP_EREG1, TMP_EREG1, 63)); - - if (src1 != dst) - overflow_ra = reg_map[src1]; - else if (src2 != dst) - overflow_ra = reg_map[src2]; - else { - /* Rare ocasion. */ - FAIL_IF(ADD(TMP_EREG2, reg_map[src1], ZERO)); - overflow_ra = TMP_EREG2; - } - } - - if (op & SLJIT_SET_E) - FAIL_IF(ADD(EQUAL_FLAG ,reg_map[src1], reg_map[src2])); - - if (op & SLJIT_SET_C) - FAIL_IF(OR(ULESS_FLAG,reg_map[src1], reg_map[src2])); - - /* dst may be the same as src1 or src2. */ - if (CHECK_FLAGS(SLJIT_SET_E)) - FAIL_IF(ADD(reg_map[dst],reg_map[src1], reg_map[src2])); - - if (op & SLJIT_SET_O) { - FAIL_IF(XOR(OVERFLOW_FLAG,reg_map[dst], overflow_ra)); - FAIL_IF(SHRUI(OVERFLOW_FLAG, OVERFLOW_FLAG, 63)); - } - } - - /* a + b >= a | b (otherwise, the carry should be set to 1). */ - if (op & SLJIT_SET_C) - FAIL_IF(CMPLTU(ULESS_FLAG ,reg_map[dst] ,ULESS_FLAG)); - - if (op & SLJIT_SET_O) - return CMOVNEZ(OVERFLOW_FLAG, TMP_EREG1, ZERO); - - return SLJIT_SUCCESS; - - case SLJIT_ADDC: - if (flags & SRC2_IMM) { - if (op & SLJIT_SET_C) { - if (src2 >= 0) - FAIL_IF(ORI(TMP_EREG1, reg_map[src1], src2)); - else { - FAIL_IF(ADDLI(TMP_EREG1, ZERO, src2)); - FAIL_IF(OR(TMP_EREG1, reg_map[src1], TMP_EREG1)); - } - } - - FAIL_IF(ADDLI(reg_map[dst], reg_map[src1], src2)); - - } else { - if (op & SLJIT_SET_C) - FAIL_IF(OR(TMP_EREG1, reg_map[src1], reg_map[src2])); - - /* dst may be the same as src1 or src2. */ - FAIL_IF(ADD(reg_map[dst], reg_map[src1], reg_map[src2])); - } - - if (op & SLJIT_SET_C) - FAIL_IF(CMPLTU(TMP_EREG1, reg_map[dst], TMP_EREG1)); - - FAIL_IF(ADD(reg_map[dst], reg_map[dst], ULESS_FLAG)); - - if (!(op & SLJIT_SET_C)) - return SLJIT_SUCCESS; - - /* Set TMP_EREG2 (dst == 0) && (ULESS_FLAG == 1). */ - FAIL_IF(CMPLTUI(TMP_EREG2, reg_map[dst], 1)); - FAIL_IF(AND(TMP_EREG2, TMP_EREG2, ULESS_FLAG)); - /* Set carry flag. */ - return OR(ULESS_FLAG, TMP_EREG2, TMP_EREG1); - - case SLJIT_SUB: - if ((flags & SRC2_IMM) && ((op & (SLJIT_SET_U | SLJIT_SET_S)) || src2 == SIMM_16BIT_MIN)) { - FAIL_IF(ADDLI(TMP_REG2_mapped, ZERO, src2)); - src2 = TMP_REG2; - flags &= ~SRC2_IMM; - } - - if (flags & SRC2_IMM) { - if (op & SLJIT_SET_O) { - FAIL_IF(SHRUI(TMP_EREG1,reg_map[src1], 63)); - - if (src2 < 0) - FAIL_IF(XORI(TMP_EREG1, TMP_EREG1, 1)); - - if (src1 != dst) - overflow_ra = reg_map[src1]; - else { - /* Rare ocasion. */ - FAIL_IF(ADD(TMP_EREG2, reg_map[src1], ZERO)); - overflow_ra = TMP_EREG2; - } - } - - if (op & SLJIT_SET_E) - FAIL_IF(ADDLI(EQUAL_FLAG, reg_map[src1], -src2)); - - if (op & SLJIT_SET_C) { - FAIL_IF(load_immediate(compiler, ADDR_TMP_mapped, src2)); - FAIL_IF(CMPLTU(ULESS_FLAG, reg_map[src1], ADDR_TMP_mapped)); - } - - /* dst may be the same as src1 or src2. */ - if (CHECK_FLAGS(SLJIT_SET_E)) - FAIL_IF(ADDLI(reg_map[dst], reg_map[src1], -src2)); - - } else { - - if (op & SLJIT_SET_O) { - FAIL_IF(XOR(TMP_EREG1, reg_map[src1], reg_map[src2])); - FAIL_IF(SHRUI(TMP_EREG1, TMP_EREG1, 63)); - - if (src1 != dst) - overflow_ra = reg_map[src1]; - else { - /* Rare ocasion. */ - FAIL_IF(ADD(TMP_EREG2, reg_map[src1], ZERO)); - overflow_ra = TMP_EREG2; - } - } - - if (op & SLJIT_SET_E) - FAIL_IF(SUB(EQUAL_FLAG, reg_map[src1], reg_map[src2])); - - if (op & (SLJIT_SET_U | SLJIT_SET_C)) - FAIL_IF(CMPLTU(ULESS_FLAG, reg_map[src1], reg_map[src2])); - - if (op & SLJIT_SET_U) - FAIL_IF(CMPLTU(UGREATER_FLAG, reg_map[src2], reg_map[src1])); - - if (op & SLJIT_SET_S) { - FAIL_IF(CMPLTS(LESS_FLAG ,reg_map[src1] ,reg_map[src2])); - FAIL_IF(CMPLTS(GREATER_FLAG ,reg_map[src2] ,reg_map[src1])); - } - - /* dst may be the same as src1 or src2. */ - if (CHECK_FLAGS(SLJIT_SET_E | SLJIT_SET_U | SLJIT_SET_S | SLJIT_SET_C)) - FAIL_IF(SUB(reg_map[dst], reg_map[src1], reg_map[src2])); - } - - if (op & SLJIT_SET_O) { - FAIL_IF(XOR(OVERFLOW_FLAG, reg_map[dst], overflow_ra)); - FAIL_IF(SHRUI(OVERFLOW_FLAG, OVERFLOW_FLAG, 63)); - return CMOVEQZ(OVERFLOW_FLAG, TMP_EREG1, ZERO); - } - - return SLJIT_SUCCESS; - - case SLJIT_SUBC: - if ((flags & SRC2_IMM) && src2 == SIMM_16BIT_MIN) { - FAIL_IF(ADDLI(TMP_REG2_mapped, ZERO, src2)); - src2 = TMP_REG2; - flags &= ~SRC2_IMM; - } - - if (flags & SRC2_IMM) { - if (op & SLJIT_SET_C) { - FAIL_IF(load_immediate(compiler, ADDR_TMP_mapped, -src2)); - FAIL_IF(CMPLTU(TMP_EREG1, reg_map[src1], ADDR_TMP_mapped)); - } - - /* dst may be the same as src1 or src2. */ - FAIL_IF(ADDLI(reg_map[dst], reg_map[src1], -src2)); - - } else { - if (op & SLJIT_SET_C) - FAIL_IF(CMPLTU(TMP_EREG1, reg_map[src1], reg_map[src2])); - /* dst may be the same as src1 or src2. */ - FAIL_IF(SUB(reg_map[dst], reg_map[src1], reg_map[src2])); - } - - if (op & SLJIT_SET_C) - FAIL_IF(CMOVEQZ(TMP_EREG1, reg_map[dst], ULESS_FLAG)); - - FAIL_IF(SUB(reg_map[dst], reg_map[dst], ULESS_FLAG)); - - if (op & SLJIT_SET_C) - FAIL_IF(ADD(ULESS_FLAG, TMP_EREG1, ZERO)); - - return SLJIT_SUCCESS; - - case SLJIT_MUL: - if (flags & SRC2_IMM) { - FAIL_IF(load_immediate(compiler, TMP_REG2_mapped, src2)); - src2 = TMP_REG2; - flags &= ~SRC2_IMM; - } - - FAIL_IF(MUL(reg_map[dst], reg_map[src1], reg_map[src2])); - - return SLJIT_SUCCESS; - -#define EMIT_LOGICAL(op_imm, op_norm) \ - if (flags & SRC2_IMM) { \ - FAIL_IF(load_immediate(compiler, ADDR_TMP_mapped, src2)); \ - if (op & SLJIT_SET_E) \ - FAIL_IF(push_3_buffer( \ - compiler, op_norm, EQUAL_FLAG, reg_map[src1], \ - ADDR_TMP_mapped, __LINE__)); \ - if (CHECK_FLAGS(SLJIT_SET_E)) \ - FAIL_IF(push_3_buffer( \ - compiler, op_norm, reg_map[dst], reg_map[src1], \ - ADDR_TMP_mapped, __LINE__)); \ - } else { \ - if (op & SLJIT_SET_E) \ - FAIL_IF(push_3_buffer( \ - compiler, op_norm, EQUAL_FLAG, reg_map[src1], \ - reg_map[src2], __LINE__)); \ - if (CHECK_FLAGS(SLJIT_SET_E)) \ - FAIL_IF(push_3_buffer( \ - compiler, op_norm, reg_map[dst], reg_map[src1], \ - reg_map[src2], __LINE__)); \ - } - - case SLJIT_AND: - EMIT_LOGICAL(TILEGX_OPC_ANDI, TILEGX_OPC_AND); - return SLJIT_SUCCESS; - - case SLJIT_OR: - EMIT_LOGICAL(TILEGX_OPC_ORI, TILEGX_OPC_OR); - return SLJIT_SUCCESS; - - case SLJIT_XOR: - EMIT_LOGICAL(TILEGX_OPC_XORI, TILEGX_OPC_XOR); - return SLJIT_SUCCESS; - -#define EMIT_SHIFT(op_imm, op_norm) \ - if (flags & SRC2_IMM) { \ - if (op & SLJIT_SET_E) \ - FAIL_IF(push_3_buffer( \ - compiler, op_imm, EQUAL_FLAG, reg_map[src1], \ - src2 & 0x3F, __LINE__)); \ - if (CHECK_FLAGS(SLJIT_SET_E)) \ - FAIL_IF(push_3_buffer( \ - compiler, op_imm, reg_map[dst], reg_map[src1], \ - src2 & 0x3F, __LINE__)); \ - } else { \ - if (op & SLJIT_SET_E) \ - FAIL_IF(push_3_buffer( \ - compiler, op_norm, EQUAL_FLAG, reg_map[src1], \ - reg_map[src2], __LINE__)); \ - if (CHECK_FLAGS(SLJIT_SET_E)) \ - FAIL_IF(push_3_buffer( \ - compiler, op_norm, reg_map[dst], reg_map[src1], \ - reg_map[src2], __LINE__)); \ - } - - case SLJIT_SHL: - EMIT_SHIFT(TILEGX_OPC_SHLI, TILEGX_OPC_SHL); - return SLJIT_SUCCESS; - - case SLJIT_LSHR: - EMIT_SHIFT(TILEGX_OPC_SHRUI, TILEGX_OPC_SHRU); - return SLJIT_SUCCESS; - - case SLJIT_ASHR: - EMIT_SHIFT(TILEGX_OPC_SHRSI, TILEGX_OPC_SHRS); - return SLJIT_SUCCESS; - } - - SLJIT_UNREACHABLE(); - return SLJIT_SUCCESS; -} - -static sljit_s32 emit_op(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 flags, sljit_s32 dst, sljit_sw dstw, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w) -{ - /* arg1 goes to TMP_REG1 or src reg. - arg2 goes to TMP_REG2, imm or src reg. - TMP_REG3 can be used for caching. - result goes to TMP_REG2, so put result can use TMP_REG1 and TMP_REG3. */ - sljit_s32 dst_r = TMP_REG2; - sljit_s32 src1_r; - sljit_sw src2_r = 0; - sljit_s32 sugg_src2_r = TMP_REG2; - - if (!(flags & ALT_KEEP_CACHE)) { - compiler->cache_arg = 0; - compiler->cache_argw = 0; - } - - if (SLJIT_UNLIKELY(dst == SLJIT_UNUSED)) { - if (op >= SLJIT_MOV && op <= SLJIT_MOVU_S32 && !(src2 & SLJIT_MEM)) - return SLJIT_SUCCESS; - if (GET_FLAGS(op)) - flags |= UNUSED_DEST; - } else if (FAST_IS_REG(dst)) { - dst_r = dst; - flags |= REG_DEST; - if (op >= SLJIT_MOV && op <= SLJIT_MOVU_S32) - sugg_src2_r = dst_r; - } else if ((dst & SLJIT_MEM) && !getput_arg_fast(compiler, flags | ARG_TEST, TMP_REG1_mapped, dst, dstw)) - flags |= SLOW_DEST; - - if (flags & IMM_OP) { - if ((src2 & SLJIT_IMM) && src2w) { - if ((!(flags & LOGICAL_OP) - && (src2w <= SIMM_16BIT_MAX && src2w >= SIMM_16BIT_MIN)) - || ((flags & LOGICAL_OP) && !(src2w & ~UIMM_16BIT_MAX))) { - flags |= SRC2_IMM; - src2_r = src2w; - } - } - - if (!(flags & SRC2_IMM) && (flags & CUMULATIVE_OP) && (src1 & SLJIT_IMM) && src1w) { - if ((!(flags & LOGICAL_OP) - && (src1w <= SIMM_16BIT_MAX && src1w >= SIMM_16BIT_MIN)) - || ((flags & LOGICAL_OP) && !(src1w & ~UIMM_16BIT_MAX))) { - flags |= SRC2_IMM; - src2_r = src1w; - - /* And swap arguments. */ - src1 = src2; - src1w = src2w; - src2 = SLJIT_IMM; - /* src2w = src2_r unneeded. */ - } - } - } - - /* Source 1. */ - if (FAST_IS_REG(src1)) { - src1_r = src1; - flags |= REG1_SOURCE; - } else if (src1 & SLJIT_IMM) { - if (src1w) { - FAIL_IF(load_immediate(compiler, TMP_REG1_mapped, src1w)); - src1_r = TMP_REG1; - } else - src1_r = 0; - } else { - if (getput_arg_fast(compiler, flags | LOAD_DATA, TMP_REG1_mapped, src1, src1w)) - FAIL_IF(compiler->error); - else - flags |= SLOW_SRC1; - src1_r = TMP_REG1; - } - - /* Source 2. */ - if (FAST_IS_REG(src2)) { - src2_r = src2; - flags |= REG2_SOURCE; - if (!(flags & REG_DEST) && op >= SLJIT_MOV && op <= SLJIT_MOVU_S32) - dst_r = src2_r; - } else if (src2 & SLJIT_IMM) { - if (!(flags & SRC2_IMM)) { - if (src2w) { - FAIL_IF(load_immediate(compiler, reg_map[sugg_src2_r], src2w)); - src2_r = sugg_src2_r; - } else { - src2_r = 0; - if ((op >= SLJIT_MOV && op <= SLJIT_MOVU_S32) && (dst & SLJIT_MEM)) - dst_r = 0; - } - } - } else { - if (getput_arg_fast(compiler, flags | LOAD_DATA, reg_map[sugg_src2_r], src2, src2w)) - FAIL_IF(compiler->error); - else - flags |= SLOW_SRC2; - src2_r = sugg_src2_r; - } - - if ((flags & (SLOW_SRC1 | SLOW_SRC2)) == (SLOW_SRC1 | SLOW_SRC2)) { - SLJIT_ASSERT(src2_r == TMP_REG2); - if (!can_cache(src1, src1w, src2, src2w) && can_cache(src1, src1w, dst, dstw)) { - FAIL_IF(getput_arg(compiler, flags | LOAD_DATA, TMP_REG2_mapped, src2, src2w, src1, src1w)); - FAIL_IF(getput_arg(compiler, flags | LOAD_DATA, TMP_REG1_mapped, src1, src1w, dst, dstw)); - } else { - FAIL_IF(getput_arg(compiler, flags | LOAD_DATA, TMP_REG1_mapped, src1, src1w, src2, src2w)); - FAIL_IF(getput_arg(compiler, flags | LOAD_DATA, TMP_REG2_mapped, src2, src2w, dst, dstw)); - } - } else if (flags & SLOW_SRC1) - FAIL_IF(getput_arg(compiler, flags | LOAD_DATA, TMP_REG1_mapped, src1, src1w, dst, dstw)); - else if (flags & SLOW_SRC2) - FAIL_IF(getput_arg(compiler, flags | LOAD_DATA, reg_map[sugg_src2_r], src2, src2w, dst, dstw)); - - FAIL_IF(emit_single_op(compiler, op, flags, dst_r, src1_r, src2_r)); - - if (dst & SLJIT_MEM) { - if (!(flags & SLOW_DEST)) { - getput_arg_fast(compiler, flags, reg_map[dst_r], dst, dstw); - return compiler->error; - } - - return getput_arg(compiler, flags, reg_map[dst_r], dst, dstw, 0, 0); - } - - return SLJIT_SUCCESS; -} - -SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_flags(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw, sljit_s32 src, sljit_sw srcw, sljit_s32 type) -{ - sljit_s32 sugg_dst_ar, dst_ar; - sljit_s32 flags = GET_ALL_FLAGS(op); - sljit_s32 mem_type = (op & SLJIT_I32_OP) ? (INT_DATA | SIGNED_DATA) : WORD_DATA; - - CHECK_ERROR(); - CHECK(check_sljit_emit_op_flags(compiler, op, dst, dstw, src, srcw, type)); - ADJUST_LOCAL_OFFSET(dst, dstw); - - op = GET_OPCODE(op); - if (op == SLJIT_MOV_S32 || op == SLJIT_MOV_U32) - mem_type = INT_DATA | SIGNED_DATA; - sugg_dst_ar = reg_map[(op < SLJIT_ADD && FAST_IS_REG(dst)) ? dst : TMP_REG2]; - - compiler->cache_arg = 0; - compiler->cache_argw = 0; - if (op >= SLJIT_ADD && (src & SLJIT_MEM)) { - ADJUST_LOCAL_OFFSET(src, srcw); - FAIL_IF(emit_op_mem2(compiler, mem_type | LOAD_DATA, TMP_REG1_mapped, src, srcw, dst, dstw)); - src = TMP_REG1; - srcw = 0; - } - - switch (type & 0xff) { - case SLJIT_EQUAL: - case SLJIT_NOT_EQUAL: - FAIL_IF(CMPLTUI(sugg_dst_ar, EQUAL_FLAG, 1)); - dst_ar = sugg_dst_ar; - break; - case SLJIT_LESS: - case SLJIT_GREATER_EQUAL: - dst_ar = ULESS_FLAG; - break; - case SLJIT_GREATER: - case SLJIT_LESS_EQUAL: - dst_ar = UGREATER_FLAG; - break; - case SLJIT_SIG_LESS: - case SLJIT_SIG_GREATER_EQUAL: - dst_ar = LESS_FLAG; - break; - case SLJIT_SIG_GREATER: - case SLJIT_SIG_LESS_EQUAL: - dst_ar = GREATER_FLAG; - break; - case SLJIT_OVERFLOW: - case SLJIT_NOT_OVERFLOW: - dst_ar = OVERFLOW_FLAG; - break; - case SLJIT_MUL_OVERFLOW: - case SLJIT_MUL_NOT_OVERFLOW: - FAIL_IF(CMPLTUI(sugg_dst_ar, OVERFLOW_FLAG, 1)); - dst_ar = sugg_dst_ar; - type ^= 0x1; /* Flip type bit for the XORI below. */ - break; - - default: - SLJIT_UNREACHABLE(); - dst_ar = sugg_dst_ar; - break; - } - - if (type & 0x1) { - FAIL_IF(XORI(sugg_dst_ar, dst_ar, 1)); - dst_ar = sugg_dst_ar; - } - - if (op >= SLJIT_ADD) { - if (TMP_REG2_mapped != dst_ar) - FAIL_IF(ADD(TMP_REG2_mapped, dst_ar, ZERO)); - return emit_op(compiler, op | flags, mem_type | CUMULATIVE_OP | LOGICAL_OP | IMM_OP | ALT_KEEP_CACHE, dst, dstw, src, srcw, TMP_REG2, 0); - } - - if (dst & SLJIT_MEM) - return emit_op_mem(compiler, mem_type, dst_ar, dst, dstw); - - if (sugg_dst_ar != dst_ar) - return ADD(sugg_dst_ar, dst_ar, ZERO); - - return SLJIT_SUCCESS; -} - -SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op0(struct sljit_compiler *compiler, sljit_s32 op) { - CHECK_ERROR(); - CHECK(check_sljit_emit_op0(compiler, op)); - - op = GET_OPCODE(op); - switch (op) { - case SLJIT_NOP: - return push_0_buffer(compiler, TILEGX_OPC_FNOP, __LINE__); - - case SLJIT_BREAKPOINT: - return PI(BPT); - - case SLJIT_LMUL_UW: - case SLJIT_LMUL_SW: - case SLJIT_DIVMOD_UW: - case SLJIT_DIVMOD_SW: - case SLJIT_DIV_UW: - case SLJIT_DIV_SW: - SLJIT_UNREACHABLE(); - case SLJIT_ENDBR: - case SLJIT_SKIP_FRAMES_BEFORE_RETURN: - return SLJIT_SUCCESS; - } - - return SLJIT_SUCCESS; -} - -SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op1(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw, sljit_s32 src, sljit_sw srcw) -{ - CHECK_ERROR(); - CHECK(check_sljit_emit_op1(compiler, op, dst, dstw, src, srcw)); - ADJUST_LOCAL_OFFSET(dst, dstw); - ADJUST_LOCAL_OFFSET(src, srcw); - - switch (GET_OPCODE(op)) { - case SLJIT_MOV: - case SLJIT_MOV_P: - return emit_op(compiler, SLJIT_MOV, WORD_DATA, dst, dstw, TMP_REG1, 0, src, srcw); - - case SLJIT_MOV_U32: - return emit_op(compiler, SLJIT_MOV_U32, INT_DATA, dst, dstw, TMP_REG1, 0, src, srcw); - - case SLJIT_MOV_S32: - return emit_op(compiler, SLJIT_MOV_S32, INT_DATA | SIGNED_DATA, dst, dstw, TMP_REG1, 0, src, srcw); - - case SLJIT_MOV_U8: - return emit_op(compiler, SLJIT_MOV_U8, BYTE_DATA, dst, dstw, TMP_REG1, 0, src, (src & SLJIT_IMM) ? (sljit_u8) srcw : srcw); - - case SLJIT_MOV_S8: - return emit_op(compiler, SLJIT_MOV_S8, BYTE_DATA | SIGNED_DATA, dst, dstw, TMP_REG1, 0, src, (src & SLJIT_IMM) ? (sljit_s8) srcw : srcw); - - case SLJIT_MOV_U16: - return emit_op(compiler, SLJIT_MOV_U16, HALF_DATA, dst, dstw, TMP_REG1, 0, src, (src & SLJIT_IMM) ? (sljit_u16) srcw : srcw); - - case SLJIT_MOV_S16: - return emit_op(compiler, SLJIT_MOV_S16, HALF_DATA | SIGNED_DATA, dst, dstw, TMP_REG1, 0, src, (src & SLJIT_IMM) ? (sljit_s16) srcw : srcw); - - case SLJIT_MOVU: - case SLJIT_MOVU_P: - return emit_op(compiler, SLJIT_MOV, WORD_DATA | WRITE_BACK, dst, dstw, TMP_REG1, 0, src, srcw); - - case SLJIT_MOVU_U32: - return emit_op(compiler, SLJIT_MOV_U32, INT_DATA | WRITE_BACK, dst, dstw, TMP_REG1, 0, src, srcw); - - case SLJIT_MOVU_S32: - return emit_op(compiler, SLJIT_MOV_S32, INT_DATA | SIGNED_DATA | WRITE_BACK, dst, dstw, TMP_REG1, 0, src, srcw); - - case SLJIT_MOVU_U8: - return emit_op(compiler, SLJIT_MOV_U8, BYTE_DATA | WRITE_BACK, dst, dstw, TMP_REG1, 0, src, (src & SLJIT_IMM) ? (sljit_u8) srcw : srcw); - - case SLJIT_MOVU_S8: - return emit_op(compiler, SLJIT_MOV_S8, BYTE_DATA | SIGNED_DATA | WRITE_BACK, dst, dstw, TMP_REG1, 0, src, (src & SLJIT_IMM) ? (sljit_s8) srcw : srcw); - - case SLJIT_MOVU_U16: - return emit_op(compiler, SLJIT_MOV_U16, HALF_DATA | WRITE_BACK, dst, dstw, TMP_REG1, 0, src, (src & SLJIT_IMM) ? (sljit_u16) srcw : srcw); - - case SLJIT_MOVU_S16: - return emit_op(compiler, SLJIT_MOV_S16, HALF_DATA | SIGNED_DATA | WRITE_BACK, dst, dstw, TMP_REG1, 0, src, (src & SLJIT_IMM) ? (sljit_s16) srcw : srcw); - - case SLJIT_NOT: - return emit_op(compiler, op, 0, dst, dstw, TMP_REG1, 0, src, srcw); - - case SLJIT_NEG: - return emit_op(compiler, SLJIT_SUB | GET_ALL_FLAGS(op), IMM_OP, dst, dstw, SLJIT_IMM, 0, src, srcw); - - case SLJIT_CLZ: - return emit_op(compiler, op, (op & SLJIT_I32_OP) ? INT_DATA : WORD_DATA, dst, dstw, TMP_REG1, 0, src, srcw); - } - - return SLJIT_SUCCESS; -} - -SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op2(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w) -{ - CHECK_ERROR(); - CHECK(check_sljit_emit_op2(compiler, op, dst, dstw, src1, src1w, src2, src2w)); - ADJUST_LOCAL_OFFSET(dst, dstw); - ADJUST_LOCAL_OFFSET(src1, src1w); - ADJUST_LOCAL_OFFSET(src2, src2w); - - switch (GET_OPCODE(op)) { - case SLJIT_ADD: - case SLJIT_ADDC: - return emit_op(compiler, op, CUMULATIVE_OP | IMM_OP, dst, dstw, src1, src1w, src2, src2w); - - case SLJIT_SUB: - case SLJIT_SUBC: - return emit_op(compiler, op, IMM_OP, dst, dstw, src1, src1w, src2, src2w); - - case SLJIT_MUL: - return emit_op(compiler, op, CUMULATIVE_OP, dst, dstw, src1, src1w, src2, src2w); - - case SLJIT_AND: - case SLJIT_OR: - case SLJIT_XOR: - return emit_op(compiler, op, CUMULATIVE_OP | LOGICAL_OP | IMM_OP, dst, dstw, src1, src1w, src2, src2w); - - case SLJIT_SHL: - case SLJIT_LSHR: - case SLJIT_ASHR: - if (src2 & SLJIT_IMM) - src2w &= 0x3f; - if (op & SLJIT_I32_OP) - src2w &= 0x1f; - - return emit_op(compiler, op, IMM_OP, dst, dstw, src1, src1w, src2, src2w); - } - - return SLJIT_SUCCESS; -} - -SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_src(struct sljit_compiler *compiler, sljit_s32 op, - sljit_s32 src, sljit_sw srcw) -{ - CHECK_ERROR(); - CHECK(check_sljit_emit_op_src(compiler, op, src, srcw)); - ADJUST_LOCAL_OFFSET(src, srcw); - - switch (op) { - case SLJIT_FAST_RETURN: - if (FAST_IS_REG(src)) - FAIL_IF(ADD(RA, reg_map[src], ZERO)); - - else - FAIL_IF(emit_op_mem(compiler, WORD_DATA | LOAD_DATA, RA, src, srcw)); - - return JR(RA); - case SLJIT_SKIP_FRAMES_BEFORE_FAST_RETURN: - return SLJIT_SUCCESS; - } - - return SLJIT_SUCCESS; -} - -SLJIT_API_FUNC_ATTRIBUTE struct sljit_label * sljit_emit_label(struct sljit_compiler *compiler) -{ - struct sljit_label *label; - - flush_buffer(compiler); - - CHECK_ERROR_PTR(); - CHECK_PTR(check_sljit_emit_label(compiler)); - - if (compiler->last_label && compiler->last_label->size == compiler->size) - return compiler->last_label; - - label = (struct sljit_label *)ensure_abuf(compiler, sizeof(struct sljit_label)); - PTR_FAIL_IF(!label); - set_label(label, compiler); - return label; -} - -SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_ijump(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 src, sljit_sw srcw) -{ - sljit_s32 src_r = TMP_REG2; - struct sljit_jump *jump = NULL; - - flush_buffer(compiler); - - CHECK_ERROR(); - CHECK(check_sljit_emit_ijump(compiler, type, src, srcw)); - ADJUST_LOCAL_OFFSET(src, srcw); - - if (FAST_IS_REG(src)) { - if (reg_map[src] != 0) - src_r = src; - else - FAIL_IF(ADD_SOLO(TMP_REG2_mapped, reg_map[src], ZERO)); - } - - if (type >= SLJIT_CALL0) { - SLJIT_ASSERT(reg_map[PIC_ADDR_REG] == 16 && PIC_ADDR_REG == TMP_REG2); - if (src & (SLJIT_IMM | SLJIT_MEM)) { - if (src & SLJIT_IMM) - FAIL_IF(emit_const(compiler, reg_map[PIC_ADDR_REG], srcw, 1)); - else { - SLJIT_ASSERT(src_r == TMP_REG2 && (src & SLJIT_MEM)); - FAIL_IF(emit_op(compiler, SLJIT_MOV, WORD_DATA, TMP_REG2, 0, TMP_REG1, 0, src, srcw)); - } - - FAIL_IF(ADD_SOLO(0, reg_map[SLJIT_R0], ZERO)); - - FAIL_IF(ADDI_SOLO(54, 54, -16)); - - FAIL_IF(JALR_SOLO(reg_map[PIC_ADDR_REG])); - - return ADDI_SOLO(54, 54, 16); - } - - /* Register input. */ - if (type >= SLJIT_CALL1) - FAIL_IF(ADD_SOLO(0, reg_map[SLJIT_R0], ZERO)); - - FAIL_IF(ADD_SOLO(reg_map[PIC_ADDR_REG], reg_map[src_r], ZERO)); - - FAIL_IF(ADDI_SOLO(54, 54, -16)); - - FAIL_IF(JALR_SOLO(reg_map[src_r])); - - return ADDI_SOLO(54, 54, 16); - } - - if (src & SLJIT_IMM) { - jump = (struct sljit_jump *)ensure_abuf(compiler, sizeof(struct sljit_jump)); - FAIL_IF(!jump); - set_jump(jump, compiler, JUMP_ADDR | ((type >= SLJIT_FAST_CALL) ? IS_JAL : 0)); - jump->u.target = srcw; - FAIL_IF(emit_const(compiler, TMP_REG2_mapped, 0, 1)); - - if (type >= SLJIT_FAST_CALL) { - FAIL_IF(ADD_SOLO(ZERO, ZERO, ZERO)); - jump->addr = compiler->size; - FAIL_IF(JR_SOLO(reg_map[src_r])); - } else { - jump->addr = compiler->size; - FAIL_IF(JR_SOLO(reg_map[src_r])); - } - - return SLJIT_SUCCESS; - - } else if (src & SLJIT_MEM) { - FAIL_IF(emit_op(compiler, SLJIT_MOV, WORD_DATA, TMP_REG2, 0, TMP_REG1, 0, src, srcw)); - flush_buffer(compiler); - } - - FAIL_IF(JR_SOLO(reg_map[src_r])); - - if (jump) - jump->addr = compiler->size; - - return SLJIT_SUCCESS; -} - -#define BR_Z(src) \ - inst = BEQZ_X1 | SRCA_X1(src); \ - flags = IS_COND; - -#define BR_NZ(src) \ - inst = BNEZ_X1 | SRCA_X1(src); \ - flags = IS_COND; - -SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump * sljit_emit_jump(struct sljit_compiler *compiler, sljit_s32 type) -{ - struct sljit_jump *jump; - sljit_ins inst; - sljit_s32 flags = 0; - - flush_buffer(compiler); - - CHECK_ERROR_PTR(); - CHECK_PTR(check_sljit_emit_jump(compiler, type)); - - jump = (struct sljit_jump *)ensure_abuf(compiler, sizeof(struct sljit_jump)); - PTR_FAIL_IF(!jump); - set_jump(jump, compiler, type & SLJIT_REWRITABLE_JUMP); - type &= 0xff; - - switch (type) { - case SLJIT_EQUAL: - BR_NZ(EQUAL_FLAG); - break; - case SLJIT_NOT_EQUAL: - BR_Z(EQUAL_FLAG); - break; - case SLJIT_LESS: - BR_Z(ULESS_FLAG); - break; - case SLJIT_GREATER_EQUAL: - BR_NZ(ULESS_FLAG); - break; - case SLJIT_GREATER: - BR_Z(UGREATER_FLAG); - break; - case SLJIT_LESS_EQUAL: - BR_NZ(UGREATER_FLAG); - break; - case SLJIT_SIG_LESS: - BR_Z(LESS_FLAG); - break; - case SLJIT_SIG_GREATER_EQUAL: - BR_NZ(LESS_FLAG); - break; - case SLJIT_SIG_GREATER: - BR_Z(GREATER_FLAG); - break; - case SLJIT_SIG_LESS_EQUAL: - BR_NZ(GREATER_FLAG); - break; - case SLJIT_OVERFLOW: - case SLJIT_MUL_OVERFLOW: - BR_Z(OVERFLOW_FLAG); - break; - case SLJIT_NOT_OVERFLOW: - case SLJIT_MUL_NOT_OVERFLOW: - BR_NZ(OVERFLOW_FLAG); - break; - default: - /* Not conditional branch. */ - inst = 0; - break; - } - - jump->flags |= flags; - - if (inst) { - inst = inst | ((type <= SLJIT_JUMP) ? BOFF_X1(5) : BOFF_X1(6)); - PTR_FAIL_IF(PI(inst)); - } - - PTR_FAIL_IF(emit_const(compiler, TMP_REG2_mapped, 0, 1)); - if (type <= SLJIT_JUMP) { - jump->addr = compiler->size; - PTR_FAIL_IF(JR_SOLO(TMP_REG2_mapped)); - } else { - SLJIT_ASSERT(reg_map[PIC_ADDR_REG] == 16 && PIC_ADDR_REG == TMP_REG2); - /* Cannot be optimized out if type is >= CALL0. */ - jump->flags |= IS_JAL | (type >= SLJIT_CALL0 ? SLJIT_REWRITABLE_JUMP : 0); - PTR_FAIL_IF(ADD_SOLO(0, reg_map[SLJIT_R0], ZERO)); - jump->addr = compiler->size; - PTR_FAIL_IF(JALR_SOLO(TMP_REG2_mapped)); - } - - return jump; -} - -SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fop1(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw, sljit_s32 src, sljit_sw srcw) -{ - SLJIT_UNREACHABLE(); -} - -SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fop2(struct sljit_compiler *compiler, sljit_s32 op, sljit_s32 dst, sljit_sw dstw, sljit_s32 src1, sljit_sw src1w, sljit_s32 src2, sljit_sw src2w) -{ - SLJIT_UNREACHABLE(); -} - -SLJIT_API_FUNC_ATTRIBUTE struct sljit_const * sljit_emit_const(struct sljit_compiler *compiler, sljit_s32 dst, sljit_sw dstw, sljit_sw init_value) -{ - struct sljit_const *const_; - sljit_s32 reg; - - flush_buffer(compiler); - - CHECK_ERROR_PTR(); - CHECK_PTR(check_sljit_emit_const(compiler, dst, dstw, init_value)); - ADJUST_LOCAL_OFFSET(dst, dstw); - - const_ = (struct sljit_const *)ensure_abuf(compiler, sizeof(struct sljit_const)); - PTR_FAIL_IF(!const_); - set_const(const_, compiler); - - reg = FAST_IS_REG(dst) ? dst : TMP_REG2; - - PTR_FAIL_IF(emit_const_64(compiler, reg, init_value, 1)); - - if (dst & SLJIT_MEM) - PTR_FAIL_IF(emit_op(compiler, SLJIT_MOV, WORD_DATA, dst, dstw, TMP_REG1, 0, TMP_REG2, 0)); - return const_; -} - -SLJIT_API_FUNC_ATTRIBUTE void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_target) -{ - sljit_ins *inst = (sljit_ins *)addr; - - inst[0] = (inst[0] & ~(0xFFFFL << 43)) | (((new_target >> 32) & 0xffff) << 43); - inst[1] = (inst[1] & ~(0xFFFFL << 43)) | (((new_target >> 16) & 0xffff) << 43); - inst[2] = (inst[2] & ~(0xFFFFL << 43)) | ((new_target & 0xffff) << 43); - SLJIT_CACHE_FLUSH(inst, inst + 3); -} - -SLJIT_API_FUNC_ATTRIBUTE void sljit_set_const(sljit_uw addr, sljit_sw new_constant) -{ - sljit_ins *inst = (sljit_ins *)addr; - - inst[0] = (inst[0] & ~(0xFFFFL << 43)) | (((new_constant >> 48) & 0xFFFFL) << 43); - inst[1] = (inst[1] & ~(0xFFFFL << 43)) | (((new_constant >> 32) & 0xFFFFL) << 43); - inst[2] = (inst[2] & ~(0xFFFFL << 43)) | (((new_constant >> 16) & 0xFFFFL) << 43); - inst[3] = (inst[3] & ~(0xFFFFL << 43)) | ((new_constant & 0xFFFFL) << 43); - SLJIT_CACHE_FLUSH(inst, inst + 4); -} - -SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_get_register_index(sljit_s32 reg) -{ - CHECK_REG_INDEX(check_sljit_get_register_index(reg)); - return reg_map[reg]; -} - -SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_custom(struct sljit_compiler *compiler, - void *instruction, sljit_s32 size) -{ - CHECK_ERROR(); - CHECK(check_sljit_emit_op_custom(compiler, instruction, size)); - return SLJIT_ERR_UNSUPPORTED; -} - diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeTILEGX-encoder.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeTILEGX-encoder.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeTILEGX-encoder.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeTILEGX-encoder.c 1970-01-01 01:00:00.000000000 +0100 @@ -1,10159 +0,0 @@ -/* - * Stack-less Just-In-Time compiler - * - * Copyright 2013-2013 Tilera Corporation(jiwang@tilera.com). All rights reserved. - * Copyright Zoltan Herczeg (hzmester@freemail.hu). All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, are - * permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this list of - * conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, this list - * of conditions and the following disclaimer in the documentation and/or other materials - * provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND CONTRIBUTORS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT - * SHALL THE COPYRIGHT HOLDER(S) OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED - * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR - * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN - * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* This code is owned by Tilera Corporation, and distributed as part - of multiple projects. In sljit, the code is under BSD licence. */ - -#include -#include -#include -#define BFD_RELOC(x) R_##x - -/* Special registers. */ -#define TREG_LR 55 -#define TREG_SN 56 -#define TREG_ZERO 63 - -/* Canonical name of each register. */ -const char *const tilegx_register_names[] = -{ - "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", - "r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15", - "r16", "r17", "r18", "r19", "r20", "r21", "r22", "r23", - "r24", "r25", "r26", "r27", "r28", "r29", "r30", "r31", - "r32", "r33", "r34", "r35", "r36", "r37", "r38", "r39", - "r40", "r41", "r42", "r43", "r44", "r45", "r46", "r47", - "r48", "r49", "r50", "r51", "r52", "tp", "sp", "lr", - "sn", "idn0", "idn1", "udn0", "udn1", "udn2", "udn3", "zero" -}; - -enum -{ - R_NONE = 0, - R_TILEGX_NONE = 0, - R_TILEGX_64 = 1, - R_TILEGX_32 = 2, - R_TILEGX_16 = 3, - R_TILEGX_8 = 4, - R_TILEGX_64_PCREL = 5, - R_TILEGX_32_PCREL = 6, - R_TILEGX_16_PCREL = 7, - R_TILEGX_8_PCREL = 8, - R_TILEGX_HW0 = 9, - R_TILEGX_HW1 = 10, - R_TILEGX_HW2 = 11, - R_TILEGX_HW3 = 12, - R_TILEGX_HW0_LAST = 13, - R_TILEGX_HW1_LAST = 14, - R_TILEGX_HW2_LAST = 15, - R_TILEGX_COPY = 16, - R_TILEGX_GLOB_DAT = 17, - R_TILEGX_JMP_SLOT = 18, - R_TILEGX_RELATIVE = 19, - R_TILEGX_BROFF_X1 = 20, - R_TILEGX_JUMPOFF_X1 = 21, - R_TILEGX_JUMPOFF_X1_PLT = 22, - R_TILEGX_IMM8_X0 = 23, - R_TILEGX_IMM8_Y0 = 24, - R_TILEGX_IMM8_X1 = 25, - R_TILEGX_IMM8_Y1 = 26, - R_TILEGX_DEST_IMM8_X1 = 27, - R_TILEGX_MT_IMM14_X1 = 28, - R_TILEGX_MF_IMM14_X1 = 29, - R_TILEGX_MMSTART_X0 = 30, - R_TILEGX_MMEND_X0 = 31, - R_TILEGX_SHAMT_X0 = 32, - R_TILEGX_SHAMT_X1 = 33, - R_TILEGX_SHAMT_Y0 = 34, - R_TILEGX_SHAMT_Y1 = 35, - R_TILEGX_IMM16_X0_HW0 = 36, - R_TILEGX_IMM16_X1_HW0 = 37, - R_TILEGX_IMM16_X0_HW1 = 38, - R_TILEGX_IMM16_X1_HW1 = 39, - R_TILEGX_IMM16_X0_HW2 = 40, - R_TILEGX_IMM16_X1_HW2 = 41, - R_TILEGX_IMM16_X0_HW3 = 42, - R_TILEGX_IMM16_X1_HW3 = 43, - R_TILEGX_IMM16_X0_HW0_LAST = 44, - R_TILEGX_IMM16_X1_HW0_LAST = 45, - R_TILEGX_IMM16_X0_HW1_LAST = 46, - R_TILEGX_IMM16_X1_HW1_LAST = 47, - R_TILEGX_IMM16_X0_HW2_LAST = 48, - R_TILEGX_IMM16_X1_HW2_LAST = 49, - R_TILEGX_IMM16_X0_HW0_PCREL = 50, - R_TILEGX_IMM16_X1_HW0_PCREL = 51, - R_TILEGX_IMM16_X0_HW1_PCREL = 52, - R_TILEGX_IMM16_X1_HW1_PCREL = 53, - R_TILEGX_IMM16_X0_HW2_PCREL = 54, - R_TILEGX_IMM16_X1_HW2_PCREL = 55, - R_TILEGX_IMM16_X0_HW3_PCREL = 56, - R_TILEGX_IMM16_X1_HW3_PCREL = 57, - R_TILEGX_IMM16_X0_HW0_LAST_PCREL = 58, - R_TILEGX_IMM16_X1_HW0_LAST_PCREL = 59, - R_TILEGX_IMM16_X0_HW1_LAST_PCREL = 60, - R_TILEGX_IMM16_X1_HW1_LAST_PCREL = 61, - R_TILEGX_IMM16_X0_HW2_LAST_PCREL = 62, - R_TILEGX_IMM16_X1_HW2_LAST_PCREL = 63, - R_TILEGX_IMM16_X0_HW0_GOT = 64, - R_TILEGX_IMM16_X1_HW0_GOT = 65, - - R_TILEGX_IMM16_X0_HW0_PLT_PCREL = 66, - R_TILEGX_IMM16_X1_HW0_PLT_PCREL = 67, - R_TILEGX_IMM16_X0_HW1_PLT_PCREL = 68, - R_TILEGX_IMM16_X1_HW1_PLT_PCREL = 69, - R_TILEGX_IMM16_X0_HW2_PLT_PCREL = 70, - R_TILEGX_IMM16_X1_HW2_PLT_PCREL = 71, - - R_TILEGX_IMM16_X0_HW0_LAST_GOT = 72, - R_TILEGX_IMM16_X1_HW0_LAST_GOT = 73, - R_TILEGX_IMM16_X0_HW1_LAST_GOT = 74, - R_TILEGX_IMM16_X1_HW1_LAST_GOT = 75, - R_TILEGX_IMM16_X0_HW0_TLS_GD = 78, - R_TILEGX_IMM16_X1_HW0_TLS_GD = 79, - R_TILEGX_IMM16_X0_HW0_TLS_LE = 80, - R_TILEGX_IMM16_X1_HW0_TLS_LE = 81, - R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE = 82, - R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE = 83, - R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE = 84, - R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE = 85, - R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD = 86, - R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD = 87, - R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD = 88, - R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD = 89, - R_TILEGX_IMM16_X0_HW0_TLS_IE = 92, - R_TILEGX_IMM16_X1_HW0_TLS_IE = 93, - - R_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL = 94, - R_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL = 95, - R_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL = 96, - R_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL = 97, - R_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL = 98, - R_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL = 99, - - R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE = 100, - R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE = 101, - R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE = 102, - R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE = 103, - R_TILEGX_TLS_DTPMOD64 = 106, - R_TILEGX_TLS_DTPOFF64 = 107, - R_TILEGX_TLS_TPOFF64 = 108, - R_TILEGX_TLS_DTPMOD32 = 109, - R_TILEGX_TLS_DTPOFF32 = 110, - R_TILEGX_TLS_TPOFF32 = 111, - R_TILEGX_TLS_GD_CALL = 112, - R_TILEGX_IMM8_X0_TLS_GD_ADD = 113, - R_TILEGX_IMM8_X1_TLS_GD_ADD = 114, - R_TILEGX_IMM8_Y0_TLS_GD_ADD = 115, - R_TILEGX_IMM8_Y1_TLS_GD_ADD = 116, - R_TILEGX_TLS_IE_LOAD = 117, - R_TILEGX_IMM8_X0_TLS_ADD = 118, - R_TILEGX_IMM8_X1_TLS_ADD = 119, - R_TILEGX_IMM8_Y0_TLS_ADD = 120, - R_TILEGX_IMM8_Y1_TLS_ADD = 121, - R_TILEGX_GNU_VTINHERIT = 128, - R_TILEGX_GNU_VTENTRY = 129, - R_TILEGX_IRELATIVE = 130, - R_TILEGX_NUM = 131 -}; - -typedef enum -{ - TILEGX_PIPELINE_X0, - TILEGX_PIPELINE_X1, - TILEGX_PIPELINE_Y0, - TILEGX_PIPELINE_Y1, - TILEGX_PIPELINE_Y2, -} tilegx_pipeline; - -typedef unsigned long long tilegx_bundle_bits; - -/* These are the bits that determine if a bundle is in the X encoding. */ -#define TILEGX_BUNDLE_MODE_MASK ((tilegx_bundle_bits)3 << 62) - -enum -{ - /* Maximum number of instructions in a bundle (2 for X, 3 for Y). */ - TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE = 3, - - /* How many different pipeline encodings are there? X0, X1, Y0, Y1, Y2. */ - TILEGX_NUM_PIPELINE_ENCODINGS = 5, - - /* Log base 2 of TILEGX_BUNDLE_SIZE_IN_BYTES. */ - TILEGX_LOG2_BUNDLE_SIZE_IN_BYTES = 3, - - /* Instructions take this many bytes. */ - TILEGX_BUNDLE_SIZE_IN_BYTES = 1 << TILEGX_LOG2_BUNDLE_SIZE_IN_BYTES, - - /* Log base 2 of TILEGX_BUNDLE_ALIGNMENT_IN_BYTES. */ - TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES = 3, - - /* Bundles should be aligned modulo this number of bytes. */ - TILEGX_BUNDLE_ALIGNMENT_IN_BYTES = - (1 << TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES), - - /* Number of registers (some are magic, such as network I/O). */ - TILEGX_NUM_REGISTERS = 64, -}; - -/* Make a few "tile_" variables to simplify common code between - architectures. */ - -typedef tilegx_bundle_bits tile_bundle_bits; -#define TILE_BUNDLE_SIZE_IN_BYTES TILEGX_BUNDLE_SIZE_IN_BYTES -#define TILE_BUNDLE_ALIGNMENT_IN_BYTES TILEGX_BUNDLE_ALIGNMENT_IN_BYTES -#define TILE_LOG2_BUNDLE_ALIGNMENT_IN_BYTES \ - TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES - -/* 64-bit pattern for a { bpt ; nop } bundle. */ -#define TILEGX_BPT_BUNDLE 0x286a44ae51485000ULL - -typedef enum -{ - TILEGX_OP_TYPE_REGISTER, - TILEGX_OP_TYPE_IMMEDIATE, - TILEGX_OP_TYPE_ADDRESS, - TILEGX_OP_TYPE_SPR -} tilegx_operand_type; - -struct tilegx_operand -{ - /* Is this operand a register, immediate or address? */ - tilegx_operand_type type; - - /* The default relocation type for this operand. */ - signed int default_reloc : 16; - - /* How many bits is this value? (used for range checking) */ - unsigned int num_bits : 5; - - /* Is the value signed? (used for range checking) */ - unsigned int is_signed : 1; - - /* Is this operand a source register? */ - unsigned int is_src_reg : 1; - - /* Is this operand written? (i.e. is it a destination register) */ - unsigned int is_dest_reg : 1; - - /* Is this operand PC-relative? */ - unsigned int is_pc_relative : 1; - - /* By how many bits do we right shift the value before inserting? */ - unsigned int rightshift : 2; - - /* Return the bits for this operand to be ORed into an existing bundle. */ - tilegx_bundle_bits (*insert) (int op); - - /* Extract this operand and return it. */ - unsigned int (*extract) (tilegx_bundle_bits bundle); -}; - -typedef enum -{ - TILEGX_OPC_BPT, - TILEGX_OPC_INFO, - TILEGX_OPC_INFOL, - TILEGX_OPC_LD4S_TLS, - TILEGX_OPC_LD_TLS, - TILEGX_OPC_MOVE, - TILEGX_OPC_MOVEI, - TILEGX_OPC_MOVELI, - TILEGX_OPC_PREFETCH, - TILEGX_OPC_PREFETCH_ADD_L1, - TILEGX_OPC_PREFETCH_ADD_L1_FAULT, - TILEGX_OPC_PREFETCH_ADD_L2, - TILEGX_OPC_PREFETCH_ADD_L2_FAULT, - TILEGX_OPC_PREFETCH_ADD_L3, - TILEGX_OPC_PREFETCH_ADD_L3_FAULT, - TILEGX_OPC_PREFETCH_L1, - TILEGX_OPC_PREFETCH_L1_FAULT, - TILEGX_OPC_PREFETCH_L2, - TILEGX_OPC_PREFETCH_L2_FAULT, - TILEGX_OPC_PREFETCH_L3, - TILEGX_OPC_PREFETCH_L3_FAULT, - TILEGX_OPC_RAISE, - TILEGX_OPC_ADD, - TILEGX_OPC_ADDI, - TILEGX_OPC_ADDLI, - TILEGX_OPC_ADDX, - TILEGX_OPC_ADDXI, - TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXSC, - TILEGX_OPC_AND, - TILEGX_OPC_ANDI, - TILEGX_OPC_BEQZ, - TILEGX_OPC_BEQZT, - TILEGX_OPC_BFEXTS, - TILEGX_OPC_BFEXTU, - TILEGX_OPC_BFINS, - TILEGX_OPC_BGEZ, - TILEGX_OPC_BGEZT, - TILEGX_OPC_BGTZ, - TILEGX_OPC_BGTZT, - TILEGX_OPC_BLBC, - TILEGX_OPC_BLBCT, - TILEGX_OPC_BLBS, - TILEGX_OPC_BLBST, - TILEGX_OPC_BLEZ, - TILEGX_OPC_BLEZT, - TILEGX_OPC_BLTZ, - TILEGX_OPC_BLTZT, - TILEGX_OPC_BNEZ, - TILEGX_OPC_BNEZT, - TILEGX_OPC_CLZ, - TILEGX_OPC_CMOVEQZ, - TILEGX_OPC_CMOVNEZ, - TILEGX_OPC_CMPEQ, - TILEGX_OPC_CMPEQI, - TILEGX_OPC_CMPEXCH, - TILEGX_OPC_CMPEXCH4, - TILEGX_OPC_CMPLES, - TILEGX_OPC_CMPLEU, - TILEGX_OPC_CMPLTS, - TILEGX_OPC_CMPLTSI, - TILEGX_OPC_CMPLTU, - TILEGX_OPC_CMPLTUI, - TILEGX_OPC_CMPNE, - TILEGX_OPC_CMUL, - TILEGX_OPC_CMULA, - TILEGX_OPC_CMULAF, - TILEGX_OPC_CMULF, - TILEGX_OPC_CMULFR, - TILEGX_OPC_CMULH, - TILEGX_OPC_CMULHR, - TILEGX_OPC_CRC32_32, - TILEGX_OPC_CRC32_8, - TILEGX_OPC_CTZ, - TILEGX_OPC_DBLALIGN, - TILEGX_OPC_DBLALIGN2, - TILEGX_OPC_DBLALIGN4, - TILEGX_OPC_DBLALIGN6, - TILEGX_OPC_DRAIN, - TILEGX_OPC_DTLBPR, - TILEGX_OPC_EXCH, - TILEGX_OPC_EXCH4, - TILEGX_OPC_FDOUBLE_ADD_FLAGS, - TILEGX_OPC_FDOUBLE_ADDSUB, - TILEGX_OPC_FDOUBLE_MUL_FLAGS, - TILEGX_OPC_FDOUBLE_PACK1, - TILEGX_OPC_FDOUBLE_PACK2, - TILEGX_OPC_FDOUBLE_SUB_FLAGS, - TILEGX_OPC_FDOUBLE_UNPACK_MAX, - TILEGX_OPC_FDOUBLE_UNPACK_MIN, - TILEGX_OPC_FETCHADD, - TILEGX_OPC_FETCHADD4, - TILEGX_OPC_FETCHADDGEZ, - TILEGX_OPC_FETCHADDGEZ4, - TILEGX_OPC_FETCHAND, - TILEGX_OPC_FETCHAND4, - TILEGX_OPC_FETCHOR, - TILEGX_OPC_FETCHOR4, - TILEGX_OPC_FINV, - TILEGX_OPC_FLUSH, - TILEGX_OPC_FLUSHWB, - TILEGX_OPC_FNOP, - TILEGX_OPC_FSINGLE_ADD1, - TILEGX_OPC_FSINGLE_ADDSUB2, - TILEGX_OPC_FSINGLE_MUL1, - TILEGX_OPC_FSINGLE_MUL2, - TILEGX_OPC_FSINGLE_PACK1, - TILEGX_OPC_FSINGLE_PACK2, - TILEGX_OPC_FSINGLE_SUB1, - TILEGX_OPC_ICOH, - TILEGX_OPC_ILL, - TILEGX_OPC_INV, - TILEGX_OPC_IRET, - TILEGX_OPC_J, - TILEGX_OPC_JAL, - TILEGX_OPC_JALR, - TILEGX_OPC_JALRP, - TILEGX_OPC_JR, - TILEGX_OPC_JRP, - TILEGX_OPC_LD, - TILEGX_OPC_LD1S, - TILEGX_OPC_LD1S_ADD, - TILEGX_OPC_LD1U, - TILEGX_OPC_LD1U_ADD, - TILEGX_OPC_LD2S, - TILEGX_OPC_LD2S_ADD, - TILEGX_OPC_LD2U, - TILEGX_OPC_LD2U_ADD, - TILEGX_OPC_LD4S, - TILEGX_OPC_LD4S_ADD, - TILEGX_OPC_LD4U, - TILEGX_OPC_LD4U_ADD, - TILEGX_OPC_LD_ADD, - TILEGX_OPC_LDNA, - TILEGX_OPC_LDNA_ADD, - TILEGX_OPC_LDNT, - TILEGX_OPC_LDNT1S, - TILEGX_OPC_LDNT1S_ADD, - TILEGX_OPC_LDNT1U, - TILEGX_OPC_LDNT1U_ADD, - TILEGX_OPC_LDNT2S, - TILEGX_OPC_LDNT2S_ADD, - TILEGX_OPC_LDNT2U, - TILEGX_OPC_LDNT2U_ADD, - TILEGX_OPC_LDNT4S, - TILEGX_OPC_LDNT4S_ADD, - TILEGX_OPC_LDNT4U, - TILEGX_OPC_LDNT4U_ADD, - TILEGX_OPC_LDNT_ADD, - TILEGX_OPC_LNK, - TILEGX_OPC_MF, - TILEGX_OPC_MFSPR, - TILEGX_OPC_MM, - TILEGX_OPC_MNZ, - TILEGX_OPC_MTSPR, - TILEGX_OPC_MUL_HS_HS, - TILEGX_OPC_MUL_HS_HU, - TILEGX_OPC_MUL_HS_LS, - TILEGX_OPC_MUL_HS_LU, - TILEGX_OPC_MUL_HU_HU, - TILEGX_OPC_MUL_HU_LS, - TILEGX_OPC_MUL_HU_LU, - TILEGX_OPC_MUL_LS_LS, - TILEGX_OPC_MUL_LS_LU, - TILEGX_OPC_MUL_LU_LU, - TILEGX_OPC_MULA_HS_HS, - TILEGX_OPC_MULA_HS_HU, - TILEGX_OPC_MULA_HS_LS, - TILEGX_OPC_MULA_HS_LU, - TILEGX_OPC_MULA_HU_HU, - TILEGX_OPC_MULA_HU_LS, - TILEGX_OPC_MULA_HU_LU, - TILEGX_OPC_MULA_LS_LS, - TILEGX_OPC_MULA_LS_LU, - TILEGX_OPC_MULA_LU_LU, - TILEGX_OPC_MULAX, - TILEGX_OPC_MULX, - TILEGX_OPC_MZ, - TILEGX_OPC_NAP, - TILEGX_OPC_NOP, - TILEGX_OPC_NOR, - TILEGX_OPC_OR, - TILEGX_OPC_ORI, - TILEGX_OPC_PCNT, - TILEGX_OPC_REVBITS, - TILEGX_OPC_REVBYTES, - TILEGX_OPC_ROTL, - TILEGX_OPC_ROTLI, - TILEGX_OPC_SHL, - TILEGX_OPC_SHL16INSLI, - TILEGX_OPC_SHL1ADD, - TILEGX_OPC_SHL1ADDX, - TILEGX_OPC_SHL2ADD, - TILEGX_OPC_SHL2ADDX, - TILEGX_OPC_SHL3ADD, - TILEGX_OPC_SHL3ADDX, - TILEGX_OPC_SHLI, - TILEGX_OPC_SHLX, - TILEGX_OPC_SHLXI, - TILEGX_OPC_SHRS, - TILEGX_OPC_SHRSI, - TILEGX_OPC_SHRU, - TILEGX_OPC_SHRUI, - TILEGX_OPC_SHRUX, - TILEGX_OPC_SHRUXI, - TILEGX_OPC_SHUFFLEBYTES, - TILEGX_OPC_ST, - TILEGX_OPC_ST1, - TILEGX_OPC_ST1_ADD, - TILEGX_OPC_ST2, - TILEGX_OPC_ST2_ADD, - TILEGX_OPC_ST4, - TILEGX_OPC_ST4_ADD, - TILEGX_OPC_ST_ADD, - TILEGX_OPC_STNT, - TILEGX_OPC_STNT1, - TILEGX_OPC_STNT1_ADD, - TILEGX_OPC_STNT2, - TILEGX_OPC_STNT2_ADD, - TILEGX_OPC_STNT4, - TILEGX_OPC_STNT4_ADD, - TILEGX_OPC_STNT_ADD, - TILEGX_OPC_SUB, - TILEGX_OPC_SUBX, - TILEGX_OPC_SUBXSC, - TILEGX_OPC_SWINT0, - TILEGX_OPC_SWINT1, - TILEGX_OPC_SWINT2, - TILEGX_OPC_SWINT3, - TILEGX_OPC_TBLIDXB0, - TILEGX_OPC_TBLIDXB1, - TILEGX_OPC_TBLIDXB2, - TILEGX_OPC_TBLIDXB3, - TILEGX_OPC_V1ADD, - TILEGX_OPC_V1ADDI, - TILEGX_OPC_V1ADDUC, - TILEGX_OPC_V1ADIFFU, - TILEGX_OPC_V1AVGU, - TILEGX_OPC_V1CMPEQ, - TILEGX_OPC_V1CMPEQI, - TILEGX_OPC_V1CMPLES, - TILEGX_OPC_V1CMPLEU, - TILEGX_OPC_V1CMPLTS, - TILEGX_OPC_V1CMPLTSI, - TILEGX_OPC_V1CMPLTU, - TILEGX_OPC_V1CMPLTUI, - TILEGX_OPC_V1CMPNE, - TILEGX_OPC_V1DDOTPU, - TILEGX_OPC_V1DDOTPUA, - TILEGX_OPC_V1DDOTPUS, - TILEGX_OPC_V1DDOTPUSA, - TILEGX_OPC_V1DOTP, - TILEGX_OPC_V1DOTPA, - TILEGX_OPC_V1DOTPU, - TILEGX_OPC_V1DOTPUA, - TILEGX_OPC_V1DOTPUS, - TILEGX_OPC_V1DOTPUSA, - TILEGX_OPC_V1INT_H, - TILEGX_OPC_V1INT_L, - TILEGX_OPC_V1MAXU, - TILEGX_OPC_V1MAXUI, - TILEGX_OPC_V1MINU, - TILEGX_OPC_V1MINUI, - TILEGX_OPC_V1MNZ, - TILEGX_OPC_V1MULTU, - TILEGX_OPC_V1MULU, - TILEGX_OPC_V1MULUS, - TILEGX_OPC_V1MZ, - TILEGX_OPC_V1SADAU, - TILEGX_OPC_V1SADU, - TILEGX_OPC_V1SHL, - TILEGX_OPC_V1SHLI, - TILEGX_OPC_V1SHRS, - TILEGX_OPC_V1SHRSI, - TILEGX_OPC_V1SHRU, - TILEGX_OPC_V1SHRUI, - TILEGX_OPC_V1SUB, - TILEGX_OPC_V1SUBUC, - TILEGX_OPC_V2ADD, - TILEGX_OPC_V2ADDI, - TILEGX_OPC_V2ADDSC, - TILEGX_OPC_V2ADIFFS, - TILEGX_OPC_V2AVGS, - TILEGX_OPC_V2CMPEQ, - TILEGX_OPC_V2CMPEQI, - TILEGX_OPC_V2CMPLES, - TILEGX_OPC_V2CMPLEU, - TILEGX_OPC_V2CMPLTS, - TILEGX_OPC_V2CMPLTSI, - TILEGX_OPC_V2CMPLTU, - TILEGX_OPC_V2CMPLTUI, - TILEGX_OPC_V2CMPNE, - TILEGX_OPC_V2DOTP, - TILEGX_OPC_V2DOTPA, - TILEGX_OPC_V2INT_H, - TILEGX_OPC_V2INT_L, - TILEGX_OPC_V2MAXS, - TILEGX_OPC_V2MAXSI, - TILEGX_OPC_V2MINS, - TILEGX_OPC_V2MINSI, - TILEGX_OPC_V2MNZ, - TILEGX_OPC_V2MULFSC, - TILEGX_OPC_V2MULS, - TILEGX_OPC_V2MULTS, - TILEGX_OPC_V2MZ, - TILEGX_OPC_V2PACKH, - TILEGX_OPC_V2PACKL, - TILEGX_OPC_V2PACKUC, - TILEGX_OPC_V2SADAS, - TILEGX_OPC_V2SADAU, - TILEGX_OPC_V2SADS, - TILEGX_OPC_V2SADU, - TILEGX_OPC_V2SHL, - TILEGX_OPC_V2SHLI, - TILEGX_OPC_V2SHLSC, - TILEGX_OPC_V2SHRS, - TILEGX_OPC_V2SHRSI, - TILEGX_OPC_V2SHRU, - TILEGX_OPC_V2SHRUI, - TILEGX_OPC_V2SUB, - TILEGX_OPC_V2SUBSC, - TILEGX_OPC_V4ADD, - TILEGX_OPC_V4ADDSC, - TILEGX_OPC_V4INT_H, - TILEGX_OPC_V4INT_L, - TILEGX_OPC_V4PACKSC, - TILEGX_OPC_V4SHL, - TILEGX_OPC_V4SHLSC, - TILEGX_OPC_V4SHRS, - TILEGX_OPC_V4SHRU, - TILEGX_OPC_V4SUB, - TILEGX_OPC_V4SUBSC, - TILEGX_OPC_WH64, - TILEGX_OPC_XOR, - TILEGX_OPC_XORI, - TILEGX_OPC_NONE -} tilegx_mnemonic; - -enum -{ - TILEGX_MAX_OPERANDS = 4 /* bfexts */ -}; - -struct tilegx_opcode -{ - /* The opcode mnemonic, e.g. "add" */ - const char *name; - - /* The enum value for this mnemonic. */ - tilegx_mnemonic mnemonic; - - /* A bit mask of which of the five pipes this instruction - is compatible with: - X0 0x01 - X1 0x02 - Y0 0x04 - Y1 0x08 - Y2 0x10 */ - unsigned char pipes; - - /* How many operands are there? */ - unsigned char num_operands; - - /* Which register does this write implicitly, or TREG_ZERO if none? */ - unsigned char implicitly_written_register; - - /* Can this be bundled with other instructions (almost always true). */ - unsigned char can_bundle; - - /* The description of the operands. Each of these is an - * index into the tilegx_operands[] table. */ - unsigned char operands[TILEGX_NUM_PIPELINE_ENCODINGS][TILEGX_MAX_OPERANDS]; - - /* A mask of which bits have predefined values for each pipeline. - * This is useful for disassembly. */ - tilegx_bundle_bits fixed_bit_masks[TILEGX_NUM_PIPELINE_ENCODINGS]; - - /* For each bit set in fixed_bit_masks, what the value is for this - * instruction. */ - tilegx_bundle_bits fixed_bit_values[TILEGX_NUM_PIPELINE_ENCODINGS]; -}; - -/* Used for non-textual disassembly into structs. */ -struct tilegx_decoded_instruction -{ - const struct tilegx_opcode *opcode; - const struct tilegx_operand *operands[TILEGX_MAX_OPERANDS]; - long long operand_values[TILEGX_MAX_OPERANDS]; -}; - -enum -{ - ADDI_IMM8_OPCODE_X0 = 1, - ADDI_IMM8_OPCODE_X1 = 1, - ADDI_OPCODE_Y0 = 0, - ADDI_OPCODE_Y1 = 1, - ADDLI_OPCODE_X0 = 1, - ADDLI_OPCODE_X1 = 0, - ADDXI_IMM8_OPCODE_X0 = 2, - ADDXI_IMM8_OPCODE_X1 = 2, - ADDXI_OPCODE_Y0 = 1, - ADDXI_OPCODE_Y1 = 2, - ADDXLI_OPCODE_X0 = 2, - ADDXLI_OPCODE_X1 = 1, - ADDXSC_RRR_0_OPCODE_X0 = 1, - ADDXSC_RRR_0_OPCODE_X1 = 1, - ADDX_RRR_0_OPCODE_X0 = 2, - ADDX_RRR_0_OPCODE_X1 = 2, - ADDX_RRR_0_OPCODE_Y0 = 0, - ADDX_SPECIAL_0_OPCODE_Y1 = 0, - ADD_RRR_0_OPCODE_X0 = 3, - ADD_RRR_0_OPCODE_X1 = 3, - ADD_RRR_0_OPCODE_Y0 = 1, - ADD_SPECIAL_0_OPCODE_Y1 = 1, - ANDI_IMM8_OPCODE_X0 = 3, - ANDI_IMM8_OPCODE_X1 = 3, - ANDI_OPCODE_Y0 = 2, - ANDI_OPCODE_Y1 = 3, - AND_RRR_0_OPCODE_X0 = 4, - AND_RRR_0_OPCODE_X1 = 4, - AND_RRR_5_OPCODE_Y0 = 0, - AND_RRR_5_OPCODE_Y1 = 0, - BEQZT_BRANCH_OPCODE_X1 = 16, - BEQZ_BRANCH_OPCODE_X1 = 17, - BFEXTS_BF_OPCODE_X0 = 4, - BFEXTU_BF_OPCODE_X0 = 5, - BFINS_BF_OPCODE_X0 = 6, - BF_OPCODE_X0 = 3, - BGEZT_BRANCH_OPCODE_X1 = 18, - BGEZ_BRANCH_OPCODE_X1 = 19, - BGTZT_BRANCH_OPCODE_X1 = 20, - BGTZ_BRANCH_OPCODE_X1 = 21, - BLBCT_BRANCH_OPCODE_X1 = 22, - BLBC_BRANCH_OPCODE_X1 = 23, - BLBST_BRANCH_OPCODE_X1 = 24, - BLBS_BRANCH_OPCODE_X1 = 25, - BLEZT_BRANCH_OPCODE_X1 = 26, - BLEZ_BRANCH_OPCODE_X1 = 27, - BLTZT_BRANCH_OPCODE_X1 = 28, - BLTZ_BRANCH_OPCODE_X1 = 29, - BNEZT_BRANCH_OPCODE_X1 = 30, - BNEZ_BRANCH_OPCODE_X1 = 31, - BRANCH_OPCODE_X1 = 2, - CMOVEQZ_RRR_0_OPCODE_X0 = 5, - CMOVEQZ_RRR_4_OPCODE_Y0 = 0, - CMOVNEZ_RRR_0_OPCODE_X0 = 6, - CMOVNEZ_RRR_4_OPCODE_Y0 = 1, - CMPEQI_IMM8_OPCODE_X0 = 4, - CMPEQI_IMM8_OPCODE_X1 = 4, - CMPEQI_OPCODE_Y0 = 3, - CMPEQI_OPCODE_Y1 = 4, - CMPEQ_RRR_0_OPCODE_X0 = 7, - CMPEQ_RRR_0_OPCODE_X1 = 5, - CMPEQ_RRR_3_OPCODE_Y0 = 0, - CMPEQ_RRR_3_OPCODE_Y1 = 2, - CMPEXCH4_RRR_0_OPCODE_X1 = 6, - CMPEXCH_RRR_0_OPCODE_X1 = 7, - CMPLES_RRR_0_OPCODE_X0 = 8, - CMPLES_RRR_0_OPCODE_X1 = 8, - CMPLES_RRR_2_OPCODE_Y0 = 0, - CMPLES_RRR_2_OPCODE_Y1 = 0, - CMPLEU_RRR_0_OPCODE_X0 = 9, - CMPLEU_RRR_0_OPCODE_X1 = 9, - CMPLEU_RRR_2_OPCODE_Y0 = 1, - CMPLEU_RRR_2_OPCODE_Y1 = 1, - CMPLTSI_IMM8_OPCODE_X0 = 5, - CMPLTSI_IMM8_OPCODE_X1 = 5, - CMPLTSI_OPCODE_Y0 = 4, - CMPLTSI_OPCODE_Y1 = 5, - CMPLTS_RRR_0_OPCODE_X0 = 10, - CMPLTS_RRR_0_OPCODE_X1 = 10, - CMPLTS_RRR_2_OPCODE_Y0 = 2, - CMPLTS_RRR_2_OPCODE_Y1 = 2, - CMPLTUI_IMM8_OPCODE_X0 = 6, - CMPLTUI_IMM8_OPCODE_X1 = 6, - CMPLTU_RRR_0_OPCODE_X0 = 11, - CMPLTU_RRR_0_OPCODE_X1 = 11, - CMPLTU_RRR_2_OPCODE_Y0 = 3, - CMPLTU_RRR_2_OPCODE_Y1 = 3, - CMPNE_RRR_0_OPCODE_X0 = 12, - CMPNE_RRR_0_OPCODE_X1 = 12, - CMPNE_RRR_3_OPCODE_Y0 = 1, - CMPNE_RRR_3_OPCODE_Y1 = 3, - CMULAF_RRR_0_OPCODE_X0 = 13, - CMULA_RRR_0_OPCODE_X0 = 14, - CMULFR_RRR_0_OPCODE_X0 = 15, - CMULF_RRR_0_OPCODE_X0 = 16, - CMULHR_RRR_0_OPCODE_X0 = 17, - CMULH_RRR_0_OPCODE_X0 = 18, - CMUL_RRR_0_OPCODE_X0 = 19, - CNTLZ_UNARY_OPCODE_X0 = 1, - CNTLZ_UNARY_OPCODE_Y0 = 1, - CNTTZ_UNARY_OPCODE_X0 = 2, - CNTTZ_UNARY_OPCODE_Y0 = 2, - CRC32_32_RRR_0_OPCODE_X0 = 20, - CRC32_8_RRR_0_OPCODE_X0 = 21, - DBLALIGN2_RRR_0_OPCODE_X0 = 22, - DBLALIGN2_RRR_0_OPCODE_X1 = 13, - DBLALIGN4_RRR_0_OPCODE_X0 = 23, - DBLALIGN4_RRR_0_OPCODE_X1 = 14, - DBLALIGN6_RRR_0_OPCODE_X0 = 24, - DBLALIGN6_RRR_0_OPCODE_X1 = 15, - DBLALIGN_RRR_0_OPCODE_X0 = 25, - DRAIN_UNARY_OPCODE_X1 = 1, - DTLBPR_UNARY_OPCODE_X1 = 2, - EXCH4_RRR_0_OPCODE_X1 = 16, - EXCH_RRR_0_OPCODE_X1 = 17, - FDOUBLE_ADDSUB_RRR_0_OPCODE_X0 = 26, - FDOUBLE_ADD_FLAGS_RRR_0_OPCODE_X0 = 27, - FDOUBLE_MUL_FLAGS_RRR_0_OPCODE_X0 = 28, - FDOUBLE_PACK1_RRR_0_OPCODE_X0 = 29, - FDOUBLE_PACK2_RRR_0_OPCODE_X0 = 30, - FDOUBLE_SUB_FLAGS_RRR_0_OPCODE_X0 = 31, - FDOUBLE_UNPACK_MAX_RRR_0_OPCODE_X0 = 32, - FDOUBLE_UNPACK_MIN_RRR_0_OPCODE_X0 = 33, - FETCHADD4_RRR_0_OPCODE_X1 = 18, - FETCHADDGEZ4_RRR_0_OPCODE_X1 = 19, - FETCHADDGEZ_RRR_0_OPCODE_X1 = 20, - FETCHADD_RRR_0_OPCODE_X1 = 21, - FETCHAND4_RRR_0_OPCODE_X1 = 22, - FETCHAND_RRR_0_OPCODE_X1 = 23, - FETCHOR4_RRR_0_OPCODE_X1 = 24, - FETCHOR_RRR_0_OPCODE_X1 = 25, - FINV_UNARY_OPCODE_X1 = 3, - FLUSHWB_UNARY_OPCODE_X1 = 4, - FLUSH_UNARY_OPCODE_X1 = 5, - FNOP_UNARY_OPCODE_X0 = 3, - FNOP_UNARY_OPCODE_X1 = 6, - FNOP_UNARY_OPCODE_Y0 = 3, - FNOP_UNARY_OPCODE_Y1 = 8, - FSINGLE_ADD1_RRR_0_OPCODE_X0 = 34, - FSINGLE_ADDSUB2_RRR_0_OPCODE_X0 = 35, - FSINGLE_MUL1_RRR_0_OPCODE_X0 = 36, - FSINGLE_MUL2_RRR_0_OPCODE_X0 = 37, - FSINGLE_PACK1_UNARY_OPCODE_X0 = 4, - FSINGLE_PACK1_UNARY_OPCODE_Y0 = 4, - FSINGLE_PACK2_RRR_0_OPCODE_X0 = 38, - FSINGLE_SUB1_RRR_0_OPCODE_X0 = 39, - ICOH_UNARY_OPCODE_X1 = 7, - ILL_UNARY_OPCODE_X1 = 8, - ILL_UNARY_OPCODE_Y1 = 9, - IMM8_OPCODE_X0 = 4, - IMM8_OPCODE_X1 = 3, - INV_UNARY_OPCODE_X1 = 9, - IRET_UNARY_OPCODE_X1 = 10, - JALRP_UNARY_OPCODE_X1 = 11, - JALRP_UNARY_OPCODE_Y1 = 10, - JALR_UNARY_OPCODE_X1 = 12, - JALR_UNARY_OPCODE_Y1 = 11, - JAL_JUMP_OPCODE_X1 = 0, - JRP_UNARY_OPCODE_X1 = 13, - JRP_UNARY_OPCODE_Y1 = 12, - JR_UNARY_OPCODE_X1 = 14, - JR_UNARY_OPCODE_Y1 = 13, - JUMP_OPCODE_X1 = 4, - J_JUMP_OPCODE_X1 = 1, - LD1S_ADD_IMM8_OPCODE_X1 = 7, - LD1S_OPCODE_Y2 = 0, - LD1S_UNARY_OPCODE_X1 = 15, - LD1U_ADD_IMM8_OPCODE_X1 = 8, - LD1U_OPCODE_Y2 = 1, - LD1U_UNARY_OPCODE_X1 = 16, - LD2S_ADD_IMM8_OPCODE_X1 = 9, - LD2S_OPCODE_Y2 = 2, - LD2S_UNARY_OPCODE_X1 = 17, - LD2U_ADD_IMM8_OPCODE_X1 = 10, - LD2U_OPCODE_Y2 = 3, - LD2U_UNARY_OPCODE_X1 = 18, - LD4S_ADD_IMM8_OPCODE_X1 = 11, - LD4S_OPCODE_Y2 = 1, - LD4S_UNARY_OPCODE_X1 = 19, - LD4U_ADD_IMM8_OPCODE_X1 = 12, - LD4U_OPCODE_Y2 = 2, - LD4U_UNARY_OPCODE_X1 = 20, - LDNA_UNARY_OPCODE_X1 = 21, - LDNT1S_ADD_IMM8_OPCODE_X1 = 13, - LDNT1S_UNARY_OPCODE_X1 = 22, - LDNT1U_ADD_IMM8_OPCODE_X1 = 14, - LDNT1U_UNARY_OPCODE_X1 = 23, - LDNT2S_ADD_IMM8_OPCODE_X1 = 15, - LDNT2S_UNARY_OPCODE_X1 = 24, - LDNT2U_ADD_IMM8_OPCODE_X1 = 16, - LDNT2U_UNARY_OPCODE_X1 = 25, - LDNT4S_ADD_IMM8_OPCODE_X1 = 17, - LDNT4S_UNARY_OPCODE_X1 = 26, - LDNT4U_ADD_IMM8_OPCODE_X1 = 18, - LDNT4U_UNARY_OPCODE_X1 = 27, - LDNT_ADD_IMM8_OPCODE_X1 = 19, - LDNT_UNARY_OPCODE_X1 = 28, - LD_ADD_IMM8_OPCODE_X1 = 20, - LD_OPCODE_Y2 = 3, - LD_UNARY_OPCODE_X1 = 29, - LNK_UNARY_OPCODE_X1 = 30, - LNK_UNARY_OPCODE_Y1 = 14, - LWNA_ADD_IMM8_OPCODE_X1 = 21, - MFSPR_IMM8_OPCODE_X1 = 22, - MF_UNARY_OPCODE_X1 = 31, - MM_BF_OPCODE_X0 = 7, - MNZ_RRR_0_OPCODE_X0 = 40, - MNZ_RRR_0_OPCODE_X1 = 26, - MNZ_RRR_4_OPCODE_Y0 = 2, - MNZ_RRR_4_OPCODE_Y1 = 2, - MODE_OPCODE_YA2 = 1, - MODE_OPCODE_YB2 = 2, - MODE_OPCODE_YC2 = 3, - MTSPR_IMM8_OPCODE_X1 = 23, - MULAX_RRR_0_OPCODE_X0 = 41, - MULAX_RRR_3_OPCODE_Y0 = 2, - MULA_HS_HS_RRR_0_OPCODE_X0 = 42, - MULA_HS_HS_RRR_9_OPCODE_Y0 = 0, - MULA_HS_HU_RRR_0_OPCODE_X0 = 43, - MULA_HS_LS_RRR_0_OPCODE_X0 = 44, - MULA_HS_LU_RRR_0_OPCODE_X0 = 45, - MULA_HU_HU_RRR_0_OPCODE_X0 = 46, - MULA_HU_HU_RRR_9_OPCODE_Y0 = 1, - MULA_HU_LS_RRR_0_OPCODE_X0 = 47, - MULA_HU_LU_RRR_0_OPCODE_X0 = 48, - MULA_LS_LS_RRR_0_OPCODE_X0 = 49, - MULA_LS_LS_RRR_9_OPCODE_Y0 = 2, - MULA_LS_LU_RRR_0_OPCODE_X0 = 50, - MULA_LU_LU_RRR_0_OPCODE_X0 = 51, - MULA_LU_LU_RRR_9_OPCODE_Y0 = 3, - MULX_RRR_0_OPCODE_X0 = 52, - MULX_RRR_3_OPCODE_Y0 = 3, - MUL_HS_HS_RRR_0_OPCODE_X0 = 53, - MUL_HS_HS_RRR_8_OPCODE_Y0 = 0, - MUL_HS_HU_RRR_0_OPCODE_X0 = 54, - MUL_HS_LS_RRR_0_OPCODE_X0 = 55, - MUL_HS_LU_RRR_0_OPCODE_X0 = 56, - MUL_HU_HU_RRR_0_OPCODE_X0 = 57, - MUL_HU_HU_RRR_8_OPCODE_Y0 = 1, - MUL_HU_LS_RRR_0_OPCODE_X0 = 58, - MUL_HU_LU_RRR_0_OPCODE_X0 = 59, - MUL_LS_LS_RRR_0_OPCODE_X0 = 60, - MUL_LS_LS_RRR_8_OPCODE_Y0 = 2, - MUL_LS_LU_RRR_0_OPCODE_X0 = 61, - MUL_LU_LU_RRR_0_OPCODE_X0 = 62, - MUL_LU_LU_RRR_8_OPCODE_Y0 = 3, - MZ_RRR_0_OPCODE_X0 = 63, - MZ_RRR_0_OPCODE_X1 = 27, - MZ_RRR_4_OPCODE_Y0 = 3, - MZ_RRR_4_OPCODE_Y1 = 3, - NAP_UNARY_OPCODE_X1 = 32, - NOP_UNARY_OPCODE_X0 = 5, - NOP_UNARY_OPCODE_X1 = 33, - NOP_UNARY_OPCODE_Y0 = 5, - NOP_UNARY_OPCODE_Y1 = 15, - NOR_RRR_0_OPCODE_X0 = 64, - NOR_RRR_0_OPCODE_X1 = 28, - NOR_RRR_5_OPCODE_Y0 = 1, - NOR_RRR_5_OPCODE_Y1 = 1, - ORI_IMM8_OPCODE_X0 = 7, - ORI_IMM8_OPCODE_X1 = 24, - OR_RRR_0_OPCODE_X0 = 65, - OR_RRR_0_OPCODE_X1 = 29, - OR_RRR_5_OPCODE_Y0 = 2, - OR_RRR_5_OPCODE_Y1 = 2, - PCNT_UNARY_OPCODE_X0 = 6, - PCNT_UNARY_OPCODE_Y0 = 6, - REVBITS_UNARY_OPCODE_X0 = 7, - REVBITS_UNARY_OPCODE_Y0 = 7, - REVBYTES_UNARY_OPCODE_X0 = 8, - REVBYTES_UNARY_OPCODE_Y0 = 8, - ROTLI_SHIFT_OPCODE_X0 = 1, - ROTLI_SHIFT_OPCODE_X1 = 1, - ROTLI_SHIFT_OPCODE_Y0 = 0, - ROTLI_SHIFT_OPCODE_Y1 = 0, - ROTL_RRR_0_OPCODE_X0 = 66, - ROTL_RRR_0_OPCODE_X1 = 30, - ROTL_RRR_6_OPCODE_Y0 = 0, - ROTL_RRR_6_OPCODE_Y1 = 0, - RRR_0_OPCODE_X0 = 5, - RRR_0_OPCODE_X1 = 5, - RRR_0_OPCODE_Y0 = 5, - RRR_0_OPCODE_Y1 = 6, - RRR_1_OPCODE_Y0 = 6, - RRR_1_OPCODE_Y1 = 7, - RRR_2_OPCODE_Y0 = 7, - RRR_2_OPCODE_Y1 = 8, - RRR_3_OPCODE_Y0 = 8, - RRR_3_OPCODE_Y1 = 9, - RRR_4_OPCODE_Y0 = 9, - RRR_4_OPCODE_Y1 = 10, - RRR_5_OPCODE_Y0 = 10, - RRR_5_OPCODE_Y1 = 11, - RRR_6_OPCODE_Y0 = 11, - RRR_6_OPCODE_Y1 = 12, - RRR_7_OPCODE_Y0 = 12, - RRR_7_OPCODE_Y1 = 13, - RRR_8_OPCODE_Y0 = 13, - RRR_9_OPCODE_Y0 = 14, - SHIFT_OPCODE_X0 = 6, - SHIFT_OPCODE_X1 = 6, - SHIFT_OPCODE_Y0 = 15, - SHIFT_OPCODE_Y1 = 14, - SHL16INSLI_OPCODE_X0 = 7, - SHL16INSLI_OPCODE_X1 = 7, - SHL1ADDX_RRR_0_OPCODE_X0 = 67, - SHL1ADDX_RRR_0_OPCODE_X1 = 31, - SHL1ADDX_RRR_7_OPCODE_Y0 = 1, - SHL1ADDX_RRR_7_OPCODE_Y1 = 1, - SHL1ADD_RRR_0_OPCODE_X0 = 68, - SHL1ADD_RRR_0_OPCODE_X1 = 32, - SHL1ADD_RRR_1_OPCODE_Y0 = 0, - SHL1ADD_RRR_1_OPCODE_Y1 = 0, - SHL2ADDX_RRR_0_OPCODE_X0 = 69, - SHL2ADDX_RRR_0_OPCODE_X1 = 33, - SHL2ADDX_RRR_7_OPCODE_Y0 = 2, - SHL2ADDX_RRR_7_OPCODE_Y1 = 2, - SHL2ADD_RRR_0_OPCODE_X0 = 70, - SHL2ADD_RRR_0_OPCODE_X1 = 34, - SHL2ADD_RRR_1_OPCODE_Y0 = 1, - SHL2ADD_RRR_1_OPCODE_Y1 = 1, - SHL3ADDX_RRR_0_OPCODE_X0 = 71, - SHL3ADDX_RRR_0_OPCODE_X1 = 35, - SHL3ADDX_RRR_7_OPCODE_Y0 = 3, - SHL3ADDX_RRR_7_OPCODE_Y1 = 3, - SHL3ADD_RRR_0_OPCODE_X0 = 72, - SHL3ADD_RRR_0_OPCODE_X1 = 36, - SHL3ADD_RRR_1_OPCODE_Y0 = 2, - SHL3ADD_RRR_1_OPCODE_Y1 = 2, - SHLI_SHIFT_OPCODE_X0 = 2, - SHLI_SHIFT_OPCODE_X1 = 2, - SHLI_SHIFT_OPCODE_Y0 = 1, - SHLI_SHIFT_OPCODE_Y1 = 1, - SHLXI_SHIFT_OPCODE_X0 = 3, - SHLXI_SHIFT_OPCODE_X1 = 3, - SHLX_RRR_0_OPCODE_X0 = 73, - SHLX_RRR_0_OPCODE_X1 = 37, - SHL_RRR_0_OPCODE_X0 = 74, - SHL_RRR_0_OPCODE_X1 = 38, - SHL_RRR_6_OPCODE_Y0 = 1, - SHL_RRR_6_OPCODE_Y1 = 1, - SHRSI_SHIFT_OPCODE_X0 = 4, - SHRSI_SHIFT_OPCODE_X1 = 4, - SHRSI_SHIFT_OPCODE_Y0 = 2, - SHRSI_SHIFT_OPCODE_Y1 = 2, - SHRS_RRR_0_OPCODE_X0 = 75, - SHRS_RRR_0_OPCODE_X1 = 39, - SHRS_RRR_6_OPCODE_Y0 = 2, - SHRS_RRR_6_OPCODE_Y1 = 2, - SHRUI_SHIFT_OPCODE_X0 = 5, - SHRUI_SHIFT_OPCODE_X1 = 5, - SHRUI_SHIFT_OPCODE_Y0 = 3, - SHRUI_SHIFT_OPCODE_Y1 = 3, - SHRUXI_SHIFT_OPCODE_X0 = 6, - SHRUXI_SHIFT_OPCODE_X1 = 6, - SHRUX_RRR_0_OPCODE_X0 = 76, - SHRUX_RRR_0_OPCODE_X1 = 40, - SHRU_RRR_0_OPCODE_X0 = 77, - SHRU_RRR_0_OPCODE_X1 = 41, - SHRU_RRR_6_OPCODE_Y0 = 3, - SHRU_RRR_6_OPCODE_Y1 = 3, - SHUFFLEBYTES_RRR_0_OPCODE_X0 = 78, - ST1_ADD_IMM8_OPCODE_X1 = 25, - ST1_OPCODE_Y2 = 0, - ST1_RRR_0_OPCODE_X1 = 42, - ST2_ADD_IMM8_OPCODE_X1 = 26, - ST2_OPCODE_Y2 = 1, - ST2_RRR_0_OPCODE_X1 = 43, - ST4_ADD_IMM8_OPCODE_X1 = 27, - ST4_OPCODE_Y2 = 2, - ST4_RRR_0_OPCODE_X1 = 44, - STNT1_ADD_IMM8_OPCODE_X1 = 28, - STNT1_RRR_0_OPCODE_X1 = 45, - STNT2_ADD_IMM8_OPCODE_X1 = 29, - STNT2_RRR_0_OPCODE_X1 = 46, - STNT4_ADD_IMM8_OPCODE_X1 = 30, - STNT4_RRR_0_OPCODE_X1 = 47, - STNT_ADD_IMM8_OPCODE_X1 = 31, - STNT_RRR_0_OPCODE_X1 = 48, - ST_ADD_IMM8_OPCODE_X1 = 32, - ST_OPCODE_Y2 = 3, - ST_RRR_0_OPCODE_X1 = 49, - SUBXSC_RRR_0_OPCODE_X0 = 79, - SUBXSC_RRR_0_OPCODE_X1 = 50, - SUBX_RRR_0_OPCODE_X0 = 80, - SUBX_RRR_0_OPCODE_X1 = 51, - SUBX_RRR_0_OPCODE_Y0 = 2, - SUBX_RRR_0_OPCODE_Y1 = 2, - SUB_RRR_0_OPCODE_X0 = 81, - SUB_RRR_0_OPCODE_X1 = 52, - SUB_RRR_0_OPCODE_Y0 = 3, - SUB_RRR_0_OPCODE_Y1 = 3, - SWINT0_UNARY_OPCODE_X1 = 34, - SWINT1_UNARY_OPCODE_X1 = 35, - SWINT2_UNARY_OPCODE_X1 = 36, - SWINT3_UNARY_OPCODE_X1 = 37, - TBLIDXB0_UNARY_OPCODE_X0 = 9, - TBLIDXB0_UNARY_OPCODE_Y0 = 9, - TBLIDXB1_UNARY_OPCODE_X0 = 10, - TBLIDXB1_UNARY_OPCODE_Y0 = 10, - TBLIDXB2_UNARY_OPCODE_X0 = 11, - TBLIDXB2_UNARY_OPCODE_Y0 = 11, - TBLIDXB3_UNARY_OPCODE_X0 = 12, - TBLIDXB3_UNARY_OPCODE_Y0 = 12, - UNARY_RRR_0_OPCODE_X0 = 82, - UNARY_RRR_0_OPCODE_X1 = 53, - UNARY_RRR_1_OPCODE_Y0 = 3, - UNARY_RRR_1_OPCODE_Y1 = 3, - V1ADDI_IMM8_OPCODE_X0 = 8, - V1ADDI_IMM8_OPCODE_X1 = 33, - V1ADDUC_RRR_0_OPCODE_X0 = 83, - V1ADDUC_RRR_0_OPCODE_X1 = 54, - V1ADD_RRR_0_OPCODE_X0 = 84, - V1ADD_RRR_0_OPCODE_X1 = 55, - V1ADIFFU_RRR_0_OPCODE_X0 = 85, - V1AVGU_RRR_0_OPCODE_X0 = 86, - V1CMPEQI_IMM8_OPCODE_X0 = 9, - V1CMPEQI_IMM8_OPCODE_X1 = 34, - V1CMPEQ_RRR_0_OPCODE_X0 = 87, - V1CMPEQ_RRR_0_OPCODE_X1 = 56, - V1CMPLES_RRR_0_OPCODE_X0 = 88, - V1CMPLES_RRR_0_OPCODE_X1 = 57, - V1CMPLEU_RRR_0_OPCODE_X0 = 89, - V1CMPLEU_RRR_0_OPCODE_X1 = 58, - V1CMPLTSI_IMM8_OPCODE_X0 = 10, - V1CMPLTSI_IMM8_OPCODE_X1 = 35, - V1CMPLTS_RRR_0_OPCODE_X0 = 90, - V1CMPLTS_RRR_0_OPCODE_X1 = 59, - V1CMPLTUI_IMM8_OPCODE_X0 = 11, - V1CMPLTUI_IMM8_OPCODE_X1 = 36, - V1CMPLTU_RRR_0_OPCODE_X0 = 91, - V1CMPLTU_RRR_0_OPCODE_X1 = 60, - V1CMPNE_RRR_0_OPCODE_X0 = 92, - V1CMPNE_RRR_0_OPCODE_X1 = 61, - V1DDOTPUA_RRR_0_OPCODE_X0 = 161, - V1DDOTPUSA_RRR_0_OPCODE_X0 = 93, - V1DDOTPUS_RRR_0_OPCODE_X0 = 94, - V1DDOTPU_RRR_0_OPCODE_X0 = 162, - V1DOTPA_RRR_0_OPCODE_X0 = 95, - V1DOTPUA_RRR_0_OPCODE_X0 = 163, - V1DOTPUSA_RRR_0_OPCODE_X0 = 96, - V1DOTPUS_RRR_0_OPCODE_X0 = 97, - V1DOTPU_RRR_0_OPCODE_X0 = 164, - V1DOTP_RRR_0_OPCODE_X0 = 98, - V1INT_H_RRR_0_OPCODE_X0 = 99, - V1INT_H_RRR_0_OPCODE_X1 = 62, - V1INT_L_RRR_0_OPCODE_X0 = 100, - V1INT_L_RRR_0_OPCODE_X1 = 63, - V1MAXUI_IMM8_OPCODE_X0 = 12, - V1MAXUI_IMM8_OPCODE_X1 = 37, - V1MAXU_RRR_0_OPCODE_X0 = 101, - V1MAXU_RRR_0_OPCODE_X1 = 64, - V1MINUI_IMM8_OPCODE_X0 = 13, - V1MINUI_IMM8_OPCODE_X1 = 38, - V1MINU_RRR_0_OPCODE_X0 = 102, - V1MINU_RRR_0_OPCODE_X1 = 65, - V1MNZ_RRR_0_OPCODE_X0 = 103, - V1MNZ_RRR_0_OPCODE_X1 = 66, - V1MULTU_RRR_0_OPCODE_X0 = 104, - V1MULUS_RRR_0_OPCODE_X0 = 105, - V1MULU_RRR_0_OPCODE_X0 = 106, - V1MZ_RRR_0_OPCODE_X0 = 107, - V1MZ_RRR_0_OPCODE_X1 = 67, - V1SADAU_RRR_0_OPCODE_X0 = 108, - V1SADU_RRR_0_OPCODE_X0 = 109, - V1SHLI_SHIFT_OPCODE_X0 = 7, - V1SHLI_SHIFT_OPCODE_X1 = 7, - V1SHL_RRR_0_OPCODE_X0 = 110, - V1SHL_RRR_0_OPCODE_X1 = 68, - V1SHRSI_SHIFT_OPCODE_X0 = 8, - V1SHRSI_SHIFT_OPCODE_X1 = 8, - V1SHRS_RRR_0_OPCODE_X0 = 111, - V1SHRS_RRR_0_OPCODE_X1 = 69, - V1SHRUI_SHIFT_OPCODE_X0 = 9, - V1SHRUI_SHIFT_OPCODE_X1 = 9, - V1SHRU_RRR_0_OPCODE_X0 = 112, - V1SHRU_RRR_0_OPCODE_X1 = 70, - V1SUBUC_RRR_0_OPCODE_X0 = 113, - V1SUBUC_RRR_0_OPCODE_X1 = 71, - V1SUB_RRR_0_OPCODE_X0 = 114, - V1SUB_RRR_0_OPCODE_X1 = 72, - V2ADDI_IMM8_OPCODE_X0 = 14, - V2ADDI_IMM8_OPCODE_X1 = 39, - V2ADDSC_RRR_0_OPCODE_X0 = 115, - V2ADDSC_RRR_0_OPCODE_X1 = 73, - V2ADD_RRR_0_OPCODE_X0 = 116, - V2ADD_RRR_0_OPCODE_X1 = 74, - V2ADIFFS_RRR_0_OPCODE_X0 = 117, - V2AVGS_RRR_0_OPCODE_X0 = 118, - V2CMPEQI_IMM8_OPCODE_X0 = 15, - V2CMPEQI_IMM8_OPCODE_X1 = 40, - V2CMPEQ_RRR_0_OPCODE_X0 = 119, - V2CMPEQ_RRR_0_OPCODE_X1 = 75, - V2CMPLES_RRR_0_OPCODE_X0 = 120, - V2CMPLES_RRR_0_OPCODE_X1 = 76, - V2CMPLEU_RRR_0_OPCODE_X0 = 121, - V2CMPLEU_RRR_0_OPCODE_X1 = 77, - V2CMPLTSI_IMM8_OPCODE_X0 = 16, - V2CMPLTSI_IMM8_OPCODE_X1 = 41, - V2CMPLTS_RRR_0_OPCODE_X0 = 122, - V2CMPLTS_RRR_0_OPCODE_X1 = 78, - V2CMPLTUI_IMM8_OPCODE_X0 = 17, - V2CMPLTUI_IMM8_OPCODE_X1 = 42, - V2CMPLTU_RRR_0_OPCODE_X0 = 123, - V2CMPLTU_RRR_0_OPCODE_X1 = 79, - V2CMPNE_RRR_0_OPCODE_X0 = 124, - V2CMPNE_RRR_0_OPCODE_X1 = 80, - V2DOTPA_RRR_0_OPCODE_X0 = 125, - V2DOTP_RRR_0_OPCODE_X0 = 126, - V2INT_H_RRR_0_OPCODE_X0 = 127, - V2INT_H_RRR_0_OPCODE_X1 = 81, - V2INT_L_RRR_0_OPCODE_X0 = 128, - V2INT_L_RRR_0_OPCODE_X1 = 82, - V2MAXSI_IMM8_OPCODE_X0 = 18, - V2MAXSI_IMM8_OPCODE_X1 = 43, - V2MAXS_RRR_0_OPCODE_X0 = 129, - V2MAXS_RRR_0_OPCODE_X1 = 83, - V2MINSI_IMM8_OPCODE_X0 = 19, - V2MINSI_IMM8_OPCODE_X1 = 44, - V2MINS_RRR_0_OPCODE_X0 = 130, - V2MINS_RRR_0_OPCODE_X1 = 84, - V2MNZ_RRR_0_OPCODE_X0 = 131, - V2MNZ_RRR_0_OPCODE_X1 = 85, - V2MULFSC_RRR_0_OPCODE_X0 = 132, - V2MULS_RRR_0_OPCODE_X0 = 133, - V2MULTS_RRR_0_OPCODE_X0 = 134, - V2MZ_RRR_0_OPCODE_X0 = 135, - V2MZ_RRR_0_OPCODE_X1 = 86, - V2PACKH_RRR_0_OPCODE_X0 = 136, - V2PACKH_RRR_0_OPCODE_X1 = 87, - V2PACKL_RRR_0_OPCODE_X0 = 137, - V2PACKL_RRR_0_OPCODE_X1 = 88, - V2PACKUC_RRR_0_OPCODE_X0 = 138, - V2PACKUC_RRR_0_OPCODE_X1 = 89, - V2SADAS_RRR_0_OPCODE_X0 = 139, - V2SADAU_RRR_0_OPCODE_X0 = 140, - V2SADS_RRR_0_OPCODE_X0 = 141, - V2SADU_RRR_0_OPCODE_X0 = 142, - V2SHLI_SHIFT_OPCODE_X0 = 10, - V2SHLI_SHIFT_OPCODE_X1 = 10, - V2SHLSC_RRR_0_OPCODE_X0 = 143, - V2SHLSC_RRR_0_OPCODE_X1 = 90, - V2SHL_RRR_0_OPCODE_X0 = 144, - V2SHL_RRR_0_OPCODE_X1 = 91, - V2SHRSI_SHIFT_OPCODE_X0 = 11, - V2SHRSI_SHIFT_OPCODE_X1 = 11, - V2SHRS_RRR_0_OPCODE_X0 = 145, - V2SHRS_RRR_0_OPCODE_X1 = 92, - V2SHRUI_SHIFT_OPCODE_X0 = 12, - V2SHRUI_SHIFT_OPCODE_X1 = 12, - V2SHRU_RRR_0_OPCODE_X0 = 146, - V2SHRU_RRR_0_OPCODE_X1 = 93, - V2SUBSC_RRR_0_OPCODE_X0 = 147, - V2SUBSC_RRR_0_OPCODE_X1 = 94, - V2SUB_RRR_0_OPCODE_X0 = 148, - V2SUB_RRR_0_OPCODE_X1 = 95, - V4ADDSC_RRR_0_OPCODE_X0 = 149, - V4ADDSC_RRR_0_OPCODE_X1 = 96, - V4ADD_RRR_0_OPCODE_X0 = 150, - V4ADD_RRR_0_OPCODE_X1 = 97, - V4INT_H_RRR_0_OPCODE_X0 = 151, - V4INT_H_RRR_0_OPCODE_X1 = 98, - V4INT_L_RRR_0_OPCODE_X0 = 152, - V4INT_L_RRR_0_OPCODE_X1 = 99, - V4PACKSC_RRR_0_OPCODE_X0 = 153, - V4PACKSC_RRR_0_OPCODE_X1 = 100, - V4SHLSC_RRR_0_OPCODE_X0 = 154, - V4SHLSC_RRR_0_OPCODE_X1 = 101, - V4SHL_RRR_0_OPCODE_X0 = 155, - V4SHL_RRR_0_OPCODE_X1 = 102, - V4SHRS_RRR_0_OPCODE_X0 = 156, - V4SHRS_RRR_0_OPCODE_X1 = 103, - V4SHRU_RRR_0_OPCODE_X0 = 157, - V4SHRU_RRR_0_OPCODE_X1 = 104, - V4SUBSC_RRR_0_OPCODE_X0 = 158, - V4SUBSC_RRR_0_OPCODE_X1 = 105, - V4SUB_RRR_0_OPCODE_X0 = 159, - V4SUB_RRR_0_OPCODE_X1 = 106, - WH64_UNARY_OPCODE_X1 = 38, - XORI_IMM8_OPCODE_X0 = 20, - XORI_IMM8_OPCODE_X1 = 45, - XOR_RRR_0_OPCODE_X0 = 160, - XOR_RRR_0_OPCODE_X1 = 107, - XOR_RRR_5_OPCODE_Y0 = 3, - XOR_RRR_5_OPCODE_Y1 = 3 -}; - -static __inline unsigned int -get_BFEnd_X0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 12)) & 0x3f); -} - -static __inline unsigned int -get_BFOpcodeExtension_X0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 24)) & 0xf); -} - -static __inline unsigned int -get_BFStart_X0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 18)) & 0x3f); -} - -static __inline unsigned int -get_BrOff_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 31)) & 0x0000003f) | - (((unsigned int)(n >> 37)) & 0x0001ffc0); -} - -static __inline unsigned int -get_BrType_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 54)) & 0x1f); -} - -static __inline unsigned int -get_Dest_Imm8_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 31)) & 0x0000003f) | - (((unsigned int)(n >> 43)) & 0x000000c0); -} - -static __inline unsigned int -get_Dest_X0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 0)) & 0x3f); -} - -static __inline unsigned int -get_Dest_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 31)) & 0x3f); -} - -static __inline unsigned int -get_Dest_Y0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 0)) & 0x3f); -} - -static __inline unsigned int -get_Dest_Y1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 31)) & 0x3f); -} - -static __inline unsigned int -get_Imm16_X0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 12)) & 0xffff); -} - -static __inline unsigned int -get_Imm16_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 43)) & 0xffff); -} - -static __inline unsigned int -get_Imm8OpcodeExtension_X0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 20)) & 0xff); -} - -static __inline unsigned int -get_Imm8OpcodeExtension_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 51)) & 0xff); -} - -static __inline unsigned int -get_Imm8_X0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 12)) & 0xff); -} - -static __inline unsigned int -get_Imm8_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 43)) & 0xff); -} - -static __inline unsigned int -get_Imm8_Y0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 12)) & 0xff); -} - -static __inline unsigned int -get_Imm8_Y1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 43)) & 0xff); -} - -static __inline unsigned int -get_JumpOff_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 31)) & 0x7ffffff); -} - -static __inline unsigned int -get_JumpOpcodeExtension_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 58)) & 0x1); -} - -static __inline unsigned int -get_MF_Imm14_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 37)) & 0x3fff); -} - -static __inline unsigned int -get_MT_Imm14_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 31)) & 0x0000003f) | - (((unsigned int)(n >> 37)) & 0x00003fc0); -} - -static __inline unsigned int -get_Mode(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 62)) & 0x3); -} - -static __inline unsigned int -get_Opcode_X0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 28)) & 0x7); -} - -static __inline unsigned int -get_Opcode_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 59)) & 0x7); -} - -static __inline unsigned int -get_Opcode_Y0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 27)) & 0xf); -} - -static __inline unsigned int -get_Opcode_Y1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 58)) & 0xf); -} - -static __inline unsigned int -get_Opcode_Y2(tilegx_bundle_bits n) -{ - return (((n >> 26)) & 0x00000001) | - (((unsigned int)(n >> 56)) & 0x00000002); -} - -static __inline unsigned int -get_RRROpcodeExtension_X0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 18)) & 0x3ff); -} - -static __inline unsigned int -get_RRROpcodeExtension_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 49)) & 0x3ff); -} - -static __inline unsigned int -get_RRROpcodeExtension_Y0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 18)) & 0x3); -} - -static __inline unsigned int -get_RRROpcodeExtension_Y1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 49)) & 0x3); -} - -static __inline unsigned int -get_ShAmt_X0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 12)) & 0x3f); -} - -static __inline unsigned int -get_ShAmt_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 43)) & 0x3f); -} - -static __inline unsigned int -get_ShAmt_Y0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 12)) & 0x3f); -} - -static __inline unsigned int -get_ShAmt_Y1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 43)) & 0x3f); -} - -static __inline unsigned int -get_ShiftOpcodeExtension_X0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 18)) & 0x3ff); -} - -static __inline unsigned int -get_ShiftOpcodeExtension_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 49)) & 0x3ff); -} - -static __inline unsigned int -get_ShiftOpcodeExtension_Y0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 18)) & 0x3); -} - -static __inline unsigned int -get_ShiftOpcodeExtension_Y1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 49)) & 0x3); -} - -static __inline unsigned int -get_SrcA_X0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 6)) & 0x3f); -} - -static __inline unsigned int -get_SrcA_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 37)) & 0x3f); -} - -static __inline unsigned int -get_SrcA_Y0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 6)) & 0x3f); -} - -static __inline unsigned int -get_SrcA_Y1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 37)) & 0x3f); -} - -static __inline unsigned int -get_SrcA_Y2(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 20)) & 0x3f); -} - -static __inline unsigned int -get_SrcBDest_Y2(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 51)) & 0x3f); -} - -static __inline unsigned int -get_SrcB_X0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 12)) & 0x3f); -} - -static __inline unsigned int -get_SrcB_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 43)) & 0x3f); -} - -static __inline unsigned int -get_SrcB_Y0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 12)) & 0x3f); -} - -static __inline unsigned int -get_SrcB_Y1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 43)) & 0x3f); -} - -static __inline unsigned int -get_UnaryOpcodeExtension_X0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 12)) & 0x3f); -} - -static __inline unsigned int -get_UnaryOpcodeExtension_X1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 43)) & 0x3f); -} - -static __inline unsigned int -get_UnaryOpcodeExtension_Y0(tilegx_bundle_bits num) -{ - const unsigned int n = (unsigned int)num; - return (((n >> 12)) & 0x3f); -} - -static __inline unsigned int -get_UnaryOpcodeExtension_Y1(tilegx_bundle_bits n) -{ - return (((unsigned int)(n >> 43)) & 0x3f); -} - -static __inline int -sign_extend(int n, int num_bits) -{ - int shift = (int)(sizeof(int) * 8 - num_bits); - return (n << shift) >> shift; -} - -static __inline tilegx_bundle_bits -create_BFEnd_X0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x3f) << 12); -} - -static __inline tilegx_bundle_bits -create_BFOpcodeExtension_X0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0xf) << 24); -} - -static __inline tilegx_bundle_bits -create_BFStart_X0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x3f) << 18); -} - -static __inline tilegx_bundle_bits -create_BrOff_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x0000003f)) << 31) | - (((tilegx_bundle_bits)(n & 0x0001ffc0)) << 37); -} - -static __inline tilegx_bundle_bits -create_BrType_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x1f)) << 54); -} - -static __inline tilegx_bundle_bits -create_Dest_Imm8_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x0000003f)) << 31) | - (((tilegx_bundle_bits)(n & 0x000000c0)) << 43); -} - -static __inline tilegx_bundle_bits -create_Dest_X0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x3f) << 0); -} - -static __inline tilegx_bundle_bits -create_Dest_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x3f)) << 31); -} - -static __inline tilegx_bundle_bits -create_Dest_Y0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x3f) << 0); -} - -static __inline tilegx_bundle_bits -create_Dest_Y1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x3f)) << 31); -} - -static __inline tilegx_bundle_bits -create_Imm16_X0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0xffff) << 12); -} - -static __inline tilegx_bundle_bits -create_Imm16_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0xffff)) << 43); -} - -static __inline tilegx_bundle_bits -create_Imm8OpcodeExtension_X0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0xff) << 20); -} - -static __inline tilegx_bundle_bits -create_Imm8OpcodeExtension_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0xff)) << 51); -} - -static __inline tilegx_bundle_bits -create_Imm8_X0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0xff) << 12); -} - -static __inline tilegx_bundle_bits -create_Imm8_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0xff)) << 43); -} - -static __inline tilegx_bundle_bits -create_Imm8_Y0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0xff) << 12); -} - -static __inline tilegx_bundle_bits -create_Imm8_Y1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0xff)) << 43); -} - -static __inline tilegx_bundle_bits -create_JumpOff_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x7ffffff)) << 31); -} - -static __inline tilegx_bundle_bits -create_JumpOpcodeExtension_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x1)) << 58); -} - -static __inline tilegx_bundle_bits -create_MF_Imm14_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x3fff)) << 37); -} - -static __inline tilegx_bundle_bits -create_MT_Imm14_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x0000003f)) << 31) | - (((tilegx_bundle_bits)(n & 0x00003fc0)) << 37); -} - -static __inline tilegx_bundle_bits -create_Mode(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x3)) << 62); -} - -static __inline tilegx_bundle_bits -create_Opcode_X0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x7) << 28); -} - -static __inline tilegx_bundle_bits -create_Opcode_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x7)) << 59); -} - -static __inline tilegx_bundle_bits -create_Opcode_Y0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0xf) << 27); -} - -static __inline tilegx_bundle_bits -create_Opcode_Y1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0xf)) << 58); -} - -static __inline tilegx_bundle_bits -create_Opcode_Y2(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x00000001) << 26) | - (((tilegx_bundle_bits)(n & 0x00000002)) << 56); -} - -static __inline tilegx_bundle_bits -create_RRROpcodeExtension_X0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x3ff) << 18); -} - -static __inline tilegx_bundle_bits -create_RRROpcodeExtension_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x3ff)) << 49); -} - -static __inline tilegx_bundle_bits -create_RRROpcodeExtension_Y0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x3) << 18); -} - -static __inline tilegx_bundle_bits -create_RRROpcodeExtension_Y1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x3)) << 49); -} - -static __inline tilegx_bundle_bits -create_ShAmt_X0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x3f) << 12); -} - -static __inline tilegx_bundle_bits -create_ShAmt_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x3f)) << 43); -} - -static __inline tilegx_bundle_bits -create_ShAmt_Y0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x3f) << 12); -} - -static __inline tilegx_bundle_bits -create_ShAmt_Y1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x3f)) << 43); -} - -static __inline tilegx_bundle_bits -create_ShiftOpcodeExtension_X0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x3ff) << 18); -} - -static __inline tilegx_bundle_bits -create_ShiftOpcodeExtension_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x3ff)) << 49); -} - -static __inline tilegx_bundle_bits -create_ShiftOpcodeExtension_Y0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x3) << 18); -} - -static __inline tilegx_bundle_bits -create_ShiftOpcodeExtension_Y1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x3)) << 49); -} - -static __inline tilegx_bundle_bits -create_SrcA_X0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x3f) << 6); -} - -static __inline tilegx_bundle_bits -create_SrcA_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x3f)) << 37); -} - -static __inline tilegx_bundle_bits -create_SrcA_Y0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x3f) << 6); -} - -static __inline tilegx_bundle_bits -create_SrcA_Y1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x3f)) << 37); -} - -static __inline tilegx_bundle_bits -create_SrcA_Y2(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x3f) << 20); -} - -static __inline tilegx_bundle_bits -create_SrcBDest_Y2(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x3f)) << 51); -} - -static __inline tilegx_bundle_bits -create_SrcB_X0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x3f) << 12); -} - -static __inline tilegx_bundle_bits -create_SrcB_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x3f)) << 43); -} - -static __inline tilegx_bundle_bits -create_SrcB_Y0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x3f) << 12); -} - -static __inline tilegx_bundle_bits -create_SrcB_Y1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x3f)) << 43); -} - -static __inline tilegx_bundle_bits -create_UnaryOpcodeExtension_X0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x3f) << 12); -} - -static __inline tilegx_bundle_bits -create_UnaryOpcodeExtension_X1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x3f)) << 43); -} - -static __inline tilegx_bundle_bits -create_UnaryOpcodeExtension_Y0(int num) -{ - const unsigned int n = (unsigned int)num; - return ((n & 0x3f) << 12); -} - -static __inline tilegx_bundle_bits -create_UnaryOpcodeExtension_Y1(int num) -{ - const unsigned int n = (unsigned int)num; - return (((tilegx_bundle_bits)(n & 0x3f)) << 43); -} - -const struct tilegx_opcode tilegx_opcodes[336] = -{ - { "bpt", TILEGX_OPC_BPT, 0x2, 0, TREG_ZERO, 0, - { { 0, }, { }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffffffff80000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286a44ae00000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "info", TILEGX_OPC_INFO, 0xf, 1, TREG_ZERO, 1, - { { 0 }, { 1 }, { 2 }, { 3 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00fffULL, - 0xfff807ff80000000ULL, - 0x0000000078000fffULL, - 0x3c0007ff80000000ULL, - 0ULL - }, - { - 0x0000000040300fffULL, - 0x181807ff80000000ULL, - 0x0000000010000fffULL, - 0x0c0007ff80000000ULL, - -1ULL - } -#endif - }, - { "infol", TILEGX_OPC_INFOL, 0x3, 1, TREG_ZERO, 1, - { { 4 }, { 5 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc000000070000fffULL, - 0xf80007ff80000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000070000fffULL, - 0x380007ff80000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ld4s_tls", TILEGX_OPC_LD4S_TLS, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1858000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ld_tls", TILEGX_OPC_LD_TLS, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x18a0000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "move", TILEGX_OPC_MOVE, 0xf, 2, TREG_ZERO, 1, - { { 8, 9 }, { 6, 7 }, { 10, 11 }, { 12, 13 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffff000ULL, - 0xfffff80000000000ULL, - 0x00000000780ff000ULL, - 0x3c07f80000000000ULL, - 0ULL - }, - { - 0x000000005107f000ULL, - 0x283bf80000000000ULL, - 0x00000000500bf000ULL, - 0x2c05f80000000000ULL, - -1ULL - } -#endif - }, - { "movei", TILEGX_OPC_MOVEI, 0xf, 2, TREG_ZERO, 1, - { { 8, 0 }, { 6, 1 }, { 10, 2 }, { 12, 3 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00fc0ULL, - 0xfff807e000000000ULL, - 0x0000000078000fc0ULL, - 0x3c0007e000000000ULL, - 0ULL - }, - { - 0x0000000040100fc0ULL, - 0x180807e000000000ULL, - 0x0000000000000fc0ULL, - 0x040007e000000000ULL, - -1ULL - } -#endif - }, - { "moveli", TILEGX_OPC_MOVELI, 0x3, 2, TREG_ZERO, 1, - { { 8, 4 }, { 6, 5 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc000000070000fc0ULL, - 0xf80007e000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000010000fc0ULL, - 0x000007e000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "prefetch", TILEGX_OPC_PREFETCH, 0x12, 1, TREG_ZERO, 1, - { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff81f80000000ULL, - 0ULL, - 0ULL, - 0xc3f8000004000000ULL - }, - { - -1ULL, - 0x286a801f80000000ULL, - -1ULL, - -1ULL, - 0x41f8000004000000ULL - } -#endif - }, - { "prefetch_add_l1", TILEGX_OPC_PREFETCH_ADD_L1, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8001f80000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1840001f80000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "prefetch_add_l1_fault", TILEGX_OPC_PREFETCH_ADD_L1_FAULT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8001f80000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1838001f80000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "prefetch_add_l2", TILEGX_OPC_PREFETCH_ADD_L2, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8001f80000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1850001f80000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "prefetch_add_l2_fault", TILEGX_OPC_PREFETCH_ADD_L2_FAULT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8001f80000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1848001f80000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "prefetch_add_l3", TILEGX_OPC_PREFETCH_ADD_L3, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8001f80000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1860001f80000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "prefetch_add_l3_fault", TILEGX_OPC_PREFETCH_ADD_L3_FAULT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8001f80000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1858001f80000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "prefetch_l1", TILEGX_OPC_PREFETCH_L1, 0x12, 1, TREG_ZERO, 1, - { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff81f80000000ULL, - 0ULL, - 0ULL, - 0xc3f8000004000000ULL - }, - { - -1ULL, - 0x286a801f80000000ULL, - -1ULL, - -1ULL, - 0x41f8000004000000ULL - } -#endif - }, - { "prefetch_l1_fault", TILEGX_OPC_PREFETCH_L1_FAULT, 0x12, 1, TREG_ZERO, 1, - { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff81f80000000ULL, - 0ULL, - 0ULL, - 0xc3f8000004000000ULL - }, - { - -1ULL, - 0x286a781f80000000ULL, - -1ULL, - -1ULL, - 0x41f8000000000000ULL - } -#endif - }, - { "prefetch_l2", TILEGX_OPC_PREFETCH_L2, 0x12, 1, TREG_ZERO, 1, - { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff81f80000000ULL, - 0ULL, - 0ULL, - 0xc3f8000004000000ULL - }, - { - -1ULL, - 0x286a901f80000000ULL, - -1ULL, - -1ULL, - 0x43f8000004000000ULL - } -#endif - }, - { "prefetch_l2_fault", TILEGX_OPC_PREFETCH_L2_FAULT, 0x12, 1, TREG_ZERO, 1, - { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff81f80000000ULL, - 0ULL, - 0ULL, - 0xc3f8000004000000ULL - }, - { - -1ULL, - 0x286a881f80000000ULL, - -1ULL, - -1ULL, - 0x43f8000000000000ULL - } -#endif - }, - { "prefetch_l3", TILEGX_OPC_PREFETCH_L3, 0x12, 1, TREG_ZERO, 1, - { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff81f80000000ULL, - 0ULL, - 0ULL, - 0xc3f8000004000000ULL - }, - { - -1ULL, - 0x286aa01f80000000ULL, - -1ULL, - -1ULL, - 0x83f8000000000000ULL - } -#endif - }, - { "prefetch_l3_fault", TILEGX_OPC_PREFETCH_L3_FAULT, 0x12, 1, TREG_ZERO, 1, - { { 0, }, { 7 }, { 0, }, { 0, }, { 14 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff81f80000000ULL, - 0ULL, - 0ULL, - 0xc3f8000004000000ULL - }, - { - -1ULL, - 0x286a981f80000000ULL, - -1ULL, - -1ULL, - 0x81f8000004000000ULL - } -#endif - }, - { "raise", TILEGX_OPC_RAISE, 0x2, 0, TREG_ZERO, 1, - { { 0, }, { }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffffffff80000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286a44ae80000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "add", TILEGX_OPC_ADD, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x00000000500c0000ULL, - 0x2806000000000000ULL, - 0x0000000028040000ULL, - 0x1802000000000000ULL, - -1ULL - } -#endif - }, - { "addi", TILEGX_OPC_ADDI, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0x0000000078000000ULL, - 0x3c00000000000000ULL, - 0ULL - }, - { - 0x0000000040100000ULL, - 0x1808000000000000ULL, - 0ULL, - 0x0400000000000000ULL, - -1ULL - } -#endif - }, - { "addli", TILEGX_OPC_ADDLI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 4 }, { 6, 7, 5 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc000000070000000ULL, - 0xf800000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000010000000ULL, - 0ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "addx", TILEGX_OPC_ADDX, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000050080000ULL, - 0x2804000000000000ULL, - 0x0000000028000000ULL, - 0x1800000000000000ULL, - -1ULL - } -#endif - }, - { "addxi", TILEGX_OPC_ADDXI, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0x0000000078000000ULL, - 0x3c00000000000000ULL, - 0ULL - }, - { - 0x0000000040200000ULL, - 0x1810000000000000ULL, - 0x0000000008000000ULL, - 0x0800000000000000ULL, - -1ULL - } -#endif - }, - { "addxli", TILEGX_OPC_ADDXLI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 4 }, { 6, 7, 5 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc000000070000000ULL, - 0xf800000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000020000000ULL, - 0x0800000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "addxsc", TILEGX_OPC_ADDXSC, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050040000ULL, - 0x2802000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "and", TILEGX_OPC_AND, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000050100000ULL, - 0x2808000000000000ULL, - 0x0000000050000000ULL, - 0x2c00000000000000ULL, - -1ULL - } -#endif - }, - { "andi", TILEGX_OPC_ANDI, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0x0000000078000000ULL, - 0x3c00000000000000ULL, - 0ULL - }, - { - 0x0000000040300000ULL, - 0x1818000000000000ULL, - 0x0000000010000000ULL, - 0x0c00000000000000ULL, - -1ULL - } -#endif - }, - { "beqz", TILEGX_OPC_BEQZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffc0000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1440000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "beqzt", TILEGX_OPC_BEQZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffc0000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1400000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "bfexts", TILEGX_OPC_BFEXTS, 0x1, 4, TREG_ZERO, 1, - { { 8, 9, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007f000000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000034000000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "bfextu", TILEGX_OPC_BFEXTU, 0x1, 4, TREG_ZERO, 1, - { { 8, 9, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007f000000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000035000000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "bfins", TILEGX_OPC_BFINS, 0x1, 4, TREG_ZERO, 1, - { { 23, 9, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007f000000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000036000000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "bgez", TILEGX_OPC_BGEZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffc0000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x14c0000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "bgezt", TILEGX_OPC_BGEZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffc0000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1480000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "bgtz", TILEGX_OPC_BGTZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffc0000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1540000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "bgtzt", TILEGX_OPC_BGTZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffc0000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1500000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "blbc", TILEGX_OPC_BLBC, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffc0000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x15c0000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "blbct", TILEGX_OPC_BLBCT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffc0000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1580000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "blbs", TILEGX_OPC_BLBS, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffc0000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1640000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "blbst", TILEGX_OPC_BLBST, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffc0000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1600000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "blez", TILEGX_OPC_BLEZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffc0000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x16c0000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "blezt", TILEGX_OPC_BLEZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffc0000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1680000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "bltz", TILEGX_OPC_BLTZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffc0000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1740000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "bltzt", TILEGX_OPC_BLTZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffc0000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1700000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "bnez", TILEGX_OPC_BNEZ, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffc0000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x17c0000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "bnezt", TILEGX_OPC_BNEZT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 20 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xffc0000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1780000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "clz", TILEGX_OPC_CLZ, 0x5, 2, TREG_ZERO, 1, - { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffff000ULL, - 0ULL, - 0x00000000780ff000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051481000ULL, - -1ULL, - 0x00000000300c1000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "cmoveqz", TILEGX_OPC_CMOVEQZ, 0x5, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0x00000000780c0000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050140000ULL, - -1ULL, - 0x0000000048000000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "cmovnez", TILEGX_OPC_CMOVNEZ, 0x5, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0x00000000780c0000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050180000ULL, - -1ULL, - 0x0000000048040000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "cmpeq", TILEGX_OPC_CMPEQ, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x00000000501c0000ULL, - 0x280a000000000000ULL, - 0x0000000040000000ULL, - 0x2404000000000000ULL, - -1ULL - } -#endif - }, - { "cmpeqi", TILEGX_OPC_CMPEQI, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0x0000000078000000ULL, - 0x3c00000000000000ULL, - 0ULL - }, - { - 0x0000000040400000ULL, - 0x1820000000000000ULL, - 0x0000000018000000ULL, - 0x1000000000000000ULL, - -1ULL - } -#endif - }, - { "cmpexch", TILEGX_OPC_CMPEXCH, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x280e000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "cmpexch4", TILEGX_OPC_CMPEXCH4, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x280c000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "cmples", TILEGX_OPC_CMPLES, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000050200000ULL, - 0x2810000000000000ULL, - 0x0000000038000000ULL, - 0x2000000000000000ULL, - -1ULL - } -#endif - }, - { "cmpleu", TILEGX_OPC_CMPLEU, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000050240000ULL, - 0x2812000000000000ULL, - 0x0000000038040000ULL, - 0x2002000000000000ULL, - -1ULL - } -#endif - }, - { "cmplts", TILEGX_OPC_CMPLTS, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000050280000ULL, - 0x2814000000000000ULL, - 0x0000000038080000ULL, - 0x2004000000000000ULL, - -1ULL - } -#endif - }, - { "cmpltsi", TILEGX_OPC_CMPLTSI, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 10, 11, 2 }, { 12, 13, 3 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0x0000000078000000ULL, - 0x3c00000000000000ULL, - 0ULL - }, - { - 0x0000000040500000ULL, - 0x1828000000000000ULL, - 0x0000000020000000ULL, - 0x1400000000000000ULL, - -1ULL - } -#endif - }, - { "cmpltu", TILEGX_OPC_CMPLTU, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x00000000502c0000ULL, - 0x2816000000000000ULL, - 0x00000000380c0000ULL, - 0x2006000000000000ULL, - -1ULL - } -#endif - }, - { "cmpltui", TILEGX_OPC_CMPLTUI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000040600000ULL, - 0x1830000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "cmpne", TILEGX_OPC_CMPNE, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000050300000ULL, - 0x2818000000000000ULL, - 0x0000000040040000ULL, - 0x2406000000000000ULL, - -1ULL - } -#endif - }, - { "cmul", TILEGX_OPC_CMUL, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000504c0000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "cmula", TILEGX_OPC_CMULA, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050380000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "cmulaf", TILEGX_OPC_CMULAF, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050340000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "cmulf", TILEGX_OPC_CMULF, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050400000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "cmulfr", TILEGX_OPC_CMULFR, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000503c0000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "cmulh", TILEGX_OPC_CMULH, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050480000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "cmulhr", TILEGX_OPC_CMULHR, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050440000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "crc32_32", TILEGX_OPC_CRC32_32, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050500000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "crc32_8", TILEGX_OPC_CRC32_8, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050540000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ctz", TILEGX_OPC_CTZ, 0x5, 2, TREG_ZERO, 1, - { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffff000ULL, - 0ULL, - 0x00000000780ff000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051482000ULL, - -1ULL, - 0x00000000300c2000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "dblalign", TILEGX_OPC_DBLALIGN, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050640000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "dblalign2", TILEGX_OPC_DBLALIGN2, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050580000ULL, - 0x281a000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "dblalign4", TILEGX_OPC_DBLALIGN4, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000505c0000ULL, - 0x281c000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "dblalign6", TILEGX_OPC_DBLALIGN6, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050600000ULL, - 0x281e000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "drain", TILEGX_OPC_DRAIN, 0x2, 0, TREG_ZERO, 0, - { { 0, }, { }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286a080000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "dtlbpr", TILEGX_OPC_DTLBPR, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286a100000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "exch", TILEGX_OPC_EXCH, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x2822000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "exch4", TILEGX_OPC_EXCH4, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x2820000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fdouble_add_flags", TILEGX_OPC_FDOUBLE_ADD_FLAGS, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000506c0000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fdouble_addsub", TILEGX_OPC_FDOUBLE_ADDSUB, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050680000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fdouble_mul_flags", TILEGX_OPC_FDOUBLE_MUL_FLAGS, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050700000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fdouble_pack1", TILEGX_OPC_FDOUBLE_PACK1, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050740000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fdouble_pack2", TILEGX_OPC_FDOUBLE_PACK2, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050780000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fdouble_sub_flags", TILEGX_OPC_FDOUBLE_SUB_FLAGS, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000507c0000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fdouble_unpack_max", TILEGX_OPC_FDOUBLE_UNPACK_MAX, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050800000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fdouble_unpack_min", TILEGX_OPC_FDOUBLE_UNPACK_MIN, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050840000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fetchadd", TILEGX_OPC_FETCHADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x282a000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fetchadd4", TILEGX_OPC_FETCHADD4, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x2824000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fetchaddgez", TILEGX_OPC_FETCHADDGEZ, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x2828000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fetchaddgez4", TILEGX_OPC_FETCHADDGEZ4, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x2826000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fetchand", TILEGX_OPC_FETCHAND, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x282e000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fetchand4", TILEGX_OPC_FETCHAND4, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x282c000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fetchor", TILEGX_OPC_FETCHOR, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x2832000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fetchor4", TILEGX_OPC_FETCHOR4, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x2830000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "finv", TILEGX_OPC_FINV, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286a180000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "flush", TILEGX_OPC_FLUSH, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286a280000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "flushwb", TILEGX_OPC_FLUSHWB, 0x2, 0, TREG_ZERO, 1, - { { 0, }, { }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286a200000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fnop", TILEGX_OPC_FNOP, 0xf, 0, TREG_ZERO, 1, - { { }, { }, { }, { }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffff000ULL, - 0xfffff80000000000ULL, - 0x00000000780ff000ULL, - 0x3c07f80000000000ULL, - 0ULL - }, - { - 0x0000000051483000ULL, - 0x286a300000000000ULL, - 0x00000000300c3000ULL, - 0x1c06400000000000ULL, - -1ULL - } -#endif - }, - { "fsingle_add1", TILEGX_OPC_FSINGLE_ADD1, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050880000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fsingle_addsub2", TILEGX_OPC_FSINGLE_ADDSUB2, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000508c0000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fsingle_mul1", TILEGX_OPC_FSINGLE_MUL1, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050900000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fsingle_mul2", TILEGX_OPC_FSINGLE_MUL2, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050940000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fsingle_pack1", TILEGX_OPC_FSINGLE_PACK1, 0x5, 2, TREG_ZERO, 1, - { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffff000ULL, - 0ULL, - 0x00000000780ff000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051484000ULL, - -1ULL, - 0x00000000300c4000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fsingle_pack2", TILEGX_OPC_FSINGLE_PACK2, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050980000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "fsingle_sub1", TILEGX_OPC_FSINGLE_SUB1, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000509c0000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "icoh", TILEGX_OPC_ICOH, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286a380000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ill", TILEGX_OPC_ILL, 0xa, 0, TREG_ZERO, 1, - { { 0, }, { }, { 0, }, { }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0x3c07f80000000000ULL, - 0ULL - }, - { - -1ULL, - 0x286a400000000000ULL, - -1ULL, - 0x1c06480000000000ULL, - -1ULL - } -#endif - }, - { "inv", TILEGX_OPC_INV, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286a480000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "iret", TILEGX_OPC_IRET, 0x2, 0, TREG_ZERO, 1, - { { 0, }, { }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286a500000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "j", TILEGX_OPC_J, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 25 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfc00000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x2400000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "jal", TILEGX_OPC_JAL, 0x2, 1, TREG_LR, 1, - { { 0, }, { 25 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfc00000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x2000000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "jalr", TILEGX_OPC_JALR, 0xa, 1, TREG_LR, 1, - { { 0, }, { 7 }, { 0, }, { 13 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0x3c07f80000000000ULL, - 0ULL - }, - { - -1ULL, - 0x286a600000000000ULL, - -1ULL, - 0x1c06580000000000ULL, - -1ULL - } -#endif - }, - { "jalrp", TILEGX_OPC_JALRP, 0xa, 1, TREG_LR, 1, - { { 0, }, { 7 }, { 0, }, { 13 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0x3c07f80000000000ULL, - 0ULL - }, - { - -1ULL, - 0x286a580000000000ULL, - -1ULL, - 0x1c06500000000000ULL, - -1ULL - } -#endif - }, - { "jr", TILEGX_OPC_JR, 0xa, 1, TREG_ZERO, 1, - { { 0, }, { 7 }, { 0, }, { 13 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0x3c07f80000000000ULL, - 0ULL - }, - { - -1ULL, - 0x286a700000000000ULL, - -1ULL, - 0x1c06680000000000ULL, - -1ULL - } -#endif - }, - { "jrp", TILEGX_OPC_JRP, 0xa, 1, TREG_ZERO, 1, - { { 0, }, { 7 }, { 0, }, { 13 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0x3c07f80000000000ULL, - 0ULL - }, - { - -1ULL, - 0x286a680000000000ULL, - -1ULL, - 0x1c06600000000000ULL, - -1ULL - } -#endif - }, - { "ld", TILEGX_OPC_LD, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0xc200000004000000ULL - }, - { - -1ULL, - 0x286ae80000000000ULL, - -1ULL, - -1ULL, - 0x8200000004000000ULL - } -#endif - }, - { "ld1s", TILEGX_OPC_LD1S, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0xc200000004000000ULL - }, - { - -1ULL, - 0x286a780000000000ULL, - -1ULL, - -1ULL, - 0x4000000000000000ULL - } -#endif - }, - { "ld1s_add", TILEGX_OPC_LD1S_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1838000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ld1u", TILEGX_OPC_LD1U, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0xc200000004000000ULL - }, - { - -1ULL, - 0x286a800000000000ULL, - -1ULL, - -1ULL, - 0x4000000004000000ULL - } -#endif - }, - { "ld1u_add", TILEGX_OPC_LD1U_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1840000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ld2s", TILEGX_OPC_LD2S, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0xc200000004000000ULL - }, - { - -1ULL, - 0x286a880000000000ULL, - -1ULL, - -1ULL, - 0x4200000000000000ULL - } -#endif - }, - { "ld2s_add", TILEGX_OPC_LD2S_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1848000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ld2u", TILEGX_OPC_LD2U, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0xc200000004000000ULL - }, - { - -1ULL, - 0x286a900000000000ULL, - -1ULL, - -1ULL, - 0x4200000004000000ULL - } -#endif - }, - { "ld2u_add", TILEGX_OPC_LD2U_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1850000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ld4s", TILEGX_OPC_LD4S, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0xc200000004000000ULL - }, - { - -1ULL, - 0x286a980000000000ULL, - -1ULL, - -1ULL, - 0x8000000004000000ULL - } -#endif - }, - { "ld4s_add", TILEGX_OPC_LD4S_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1858000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ld4u", TILEGX_OPC_LD4U, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 26, 14 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0xc200000004000000ULL - }, - { - -1ULL, - 0x286aa00000000000ULL, - -1ULL, - -1ULL, - 0x8200000000000000ULL - } -#endif - }, - { "ld4u_add", TILEGX_OPC_LD4U_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1860000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ld_add", TILEGX_OPC_LD_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x18a0000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ldna", TILEGX_OPC_LDNA, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286aa80000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ldna_add", TILEGX_OPC_LDNA_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x18a8000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ldnt", TILEGX_OPC_LDNT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286ae00000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ldnt1s", TILEGX_OPC_LDNT1S, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286ab00000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ldnt1s_add", TILEGX_OPC_LDNT1S_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1868000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ldnt1u", TILEGX_OPC_LDNT1U, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286ab80000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ldnt1u_add", TILEGX_OPC_LDNT1U_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1870000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ldnt2s", TILEGX_OPC_LDNT2S, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286ac00000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ldnt2s_add", TILEGX_OPC_LDNT2S_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1878000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ldnt2u", TILEGX_OPC_LDNT2U, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286ac80000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ldnt2u_add", TILEGX_OPC_LDNT2U_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1880000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ldnt4s", TILEGX_OPC_LDNT4S, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286ad00000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ldnt4s_add", TILEGX_OPC_LDNT4S_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1888000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ldnt4u", TILEGX_OPC_LDNT4U, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 6, 7 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286ad80000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ldnt4u_add", TILEGX_OPC_LDNT4U_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1890000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "ldnt_add", TILEGX_OPC_LDNT_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 6, 15, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1898000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "lnk", TILEGX_OPC_LNK, 0xa, 1, TREG_ZERO, 1, - { { 0, }, { 6 }, { 0, }, { 12 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0x3c07f80000000000ULL, - 0ULL - }, - { - -1ULL, - 0x286af00000000000ULL, - -1ULL, - 0x1c06700000000000ULL, - -1ULL - } -#endif - }, - { "mf", TILEGX_OPC_MF, 0x2, 0, TREG_ZERO, 1, - { { 0, }, { }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286af80000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mfspr", TILEGX_OPC_MFSPR, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 6, 27 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x18b0000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mm", TILEGX_OPC_MM, 0x1, 4, TREG_ZERO, 1, - { { 23, 9, 21, 22 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007f000000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000037000000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mnz", TILEGX_OPC_MNZ, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000050a00000ULL, - 0x2834000000000000ULL, - 0x0000000048080000ULL, - 0x2804000000000000ULL, - -1ULL - } -#endif - }, - { "mtspr", TILEGX_OPC_MTSPR, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 28, 7 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x18b8000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mul_hs_hs", TILEGX_OPC_MUL_HS_HS, 0x5, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0x00000000780c0000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050d40000ULL, - -1ULL, - 0x0000000068000000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mul_hs_hu", TILEGX_OPC_MUL_HS_HU, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050d80000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mul_hs_ls", TILEGX_OPC_MUL_HS_LS, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050dc0000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mul_hs_lu", TILEGX_OPC_MUL_HS_LU, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050e00000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mul_hu_hu", TILEGX_OPC_MUL_HU_HU, 0x5, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0x00000000780c0000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050e40000ULL, - -1ULL, - 0x0000000068040000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mul_hu_ls", TILEGX_OPC_MUL_HU_LS, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050e80000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mul_hu_lu", TILEGX_OPC_MUL_HU_LU, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050ec0000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mul_ls_ls", TILEGX_OPC_MUL_LS_LS, 0x5, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0x00000000780c0000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050f00000ULL, - -1ULL, - 0x0000000068080000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mul_ls_lu", TILEGX_OPC_MUL_LS_LU, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050f40000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mul_lu_lu", TILEGX_OPC_MUL_LU_LU, 0x5, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0x00000000780c0000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050f80000ULL, - -1ULL, - 0x00000000680c0000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mula_hs_hs", TILEGX_OPC_MULA_HS_HS, 0x5, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0x00000000780c0000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050a80000ULL, - -1ULL, - 0x0000000070000000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mula_hs_hu", TILEGX_OPC_MULA_HS_HU, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050ac0000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mula_hs_ls", TILEGX_OPC_MULA_HS_LS, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050b00000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mula_hs_lu", TILEGX_OPC_MULA_HS_LU, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050b40000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mula_hu_hu", TILEGX_OPC_MULA_HU_HU, 0x5, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0x00000000780c0000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050b80000ULL, - -1ULL, - 0x0000000070040000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mula_hu_ls", TILEGX_OPC_MULA_HU_LS, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050bc0000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mula_hu_lu", TILEGX_OPC_MULA_HU_LU, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050c00000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mula_ls_ls", TILEGX_OPC_MULA_LS_LS, 0x5, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0x00000000780c0000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050c40000ULL, - -1ULL, - 0x0000000070080000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mula_ls_lu", TILEGX_OPC_MULA_LS_LU, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050c80000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mula_lu_lu", TILEGX_OPC_MULA_LU_LU, 0x5, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0x00000000780c0000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050cc0000ULL, - -1ULL, - 0x00000000700c0000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mulax", TILEGX_OPC_MULAX, 0x5, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 24, 11, 18 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0x00000000780c0000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050a40000ULL, - -1ULL, - 0x0000000040080000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mulx", TILEGX_OPC_MULX, 0x5, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 10, 11, 18 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0x00000000780c0000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000050d00000ULL, - -1ULL, - 0x00000000400c0000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "mz", TILEGX_OPC_MZ, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000050fc0000ULL, - 0x2836000000000000ULL, - 0x00000000480c0000ULL, - 0x2806000000000000ULL, - -1ULL - } -#endif - }, - { "nap", TILEGX_OPC_NAP, 0x2, 0, TREG_ZERO, 0, - { { 0, }, { }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286b000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "nop", TILEGX_OPC_NOP, 0xf, 0, TREG_ZERO, 1, - { { }, { }, { }, { }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffff000ULL, - 0xfffff80000000000ULL, - 0x00000000780ff000ULL, - 0x3c07f80000000000ULL, - 0ULL - }, - { - 0x0000000051485000ULL, - 0x286b080000000000ULL, - 0x00000000300c5000ULL, - 0x1c06780000000000ULL, - -1ULL - } -#endif - }, - { "nor", TILEGX_OPC_NOR, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000051000000ULL, - 0x2838000000000000ULL, - 0x0000000050040000ULL, - 0x2c02000000000000ULL, - -1ULL - } -#endif - }, - { "or", TILEGX_OPC_OR, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000051040000ULL, - 0x283a000000000000ULL, - 0x0000000050080000ULL, - 0x2c04000000000000ULL, - -1ULL - } -#endif - }, - { "ori", TILEGX_OPC_ORI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000040700000ULL, - 0x18c0000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "pcnt", TILEGX_OPC_PCNT, 0x5, 2, TREG_ZERO, 1, - { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffff000ULL, - 0ULL, - 0x00000000780ff000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051486000ULL, - -1ULL, - 0x00000000300c6000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "revbits", TILEGX_OPC_REVBITS, 0x5, 2, TREG_ZERO, 1, - { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffff000ULL, - 0ULL, - 0x00000000780ff000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051487000ULL, - -1ULL, - 0x00000000300c7000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "revbytes", TILEGX_OPC_REVBYTES, 0x5, 2, TREG_ZERO, 1, - { { 8, 9 }, { 0, }, { 10, 11 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffff000ULL, - 0ULL, - 0x00000000780ff000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051488000ULL, - -1ULL, - 0x00000000300c8000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "rotl", TILEGX_OPC_ROTL, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000051080000ULL, - 0x283c000000000000ULL, - 0x0000000058000000ULL, - 0x3000000000000000ULL, - -1ULL - } -#endif - }, - { "rotli", TILEGX_OPC_ROTLI, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 29 }, { 6, 7, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000060040000ULL, - 0x3002000000000000ULL, - 0x0000000078000000ULL, - 0x3800000000000000ULL, - -1ULL - } -#endif - }, - { "shl", TILEGX_OPC_SHL, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000051280000ULL, - 0x284c000000000000ULL, - 0x0000000058040000ULL, - 0x3002000000000000ULL, - -1ULL - } -#endif - }, - { "shl16insli", TILEGX_OPC_SHL16INSLI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 4 }, { 6, 7, 5 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc000000070000000ULL, - 0xf800000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000070000000ULL, - 0x3800000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "shl1add", TILEGX_OPC_SHL1ADD, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000051100000ULL, - 0x2840000000000000ULL, - 0x0000000030000000ULL, - 0x1c00000000000000ULL, - -1ULL - } -#endif - }, - { "shl1addx", TILEGX_OPC_SHL1ADDX, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x00000000510c0000ULL, - 0x283e000000000000ULL, - 0x0000000060040000ULL, - 0x3402000000000000ULL, - -1ULL - } -#endif - }, - { "shl2add", TILEGX_OPC_SHL2ADD, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000051180000ULL, - 0x2844000000000000ULL, - 0x0000000030040000ULL, - 0x1c02000000000000ULL, - -1ULL - } -#endif - }, - { "shl2addx", TILEGX_OPC_SHL2ADDX, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000051140000ULL, - 0x2842000000000000ULL, - 0x0000000060080000ULL, - 0x3404000000000000ULL, - -1ULL - } -#endif - }, - { "shl3add", TILEGX_OPC_SHL3ADD, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000051200000ULL, - 0x2848000000000000ULL, - 0x0000000030080000ULL, - 0x1c04000000000000ULL, - -1ULL - } -#endif - }, - { "shl3addx", TILEGX_OPC_SHL3ADDX, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x00000000511c0000ULL, - 0x2846000000000000ULL, - 0x00000000600c0000ULL, - 0x3406000000000000ULL, - -1ULL - } -#endif - }, - { "shli", TILEGX_OPC_SHLI, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 29 }, { 6, 7, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000060080000ULL, - 0x3004000000000000ULL, - 0x0000000078040000ULL, - 0x3802000000000000ULL, - -1ULL - } -#endif - }, - { "shlx", TILEGX_OPC_SHLX, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051240000ULL, - 0x284a000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "shlxi", TILEGX_OPC_SHLXI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000600c0000ULL, - 0x3006000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "shrs", TILEGX_OPC_SHRS, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x00000000512c0000ULL, - 0x284e000000000000ULL, - 0x0000000058080000ULL, - 0x3004000000000000ULL, - -1ULL - } -#endif - }, - { "shrsi", TILEGX_OPC_SHRSI, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 29 }, { 6, 7, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000060100000ULL, - 0x3008000000000000ULL, - 0x0000000078080000ULL, - 0x3804000000000000ULL, - -1ULL - } -#endif - }, - { "shru", TILEGX_OPC_SHRU, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000051340000ULL, - 0x2852000000000000ULL, - 0x00000000580c0000ULL, - 0x3006000000000000ULL, - -1ULL - } -#endif - }, - { "shrui", TILEGX_OPC_SHRUI, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 29 }, { 6, 7, 30 }, { 10, 11, 31 }, { 12, 13, 32 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000060140000ULL, - 0x300a000000000000ULL, - 0x00000000780c0000ULL, - 0x3806000000000000ULL, - -1ULL - } -#endif - }, - { "shrux", TILEGX_OPC_SHRUX, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051300000ULL, - 0x2850000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "shruxi", TILEGX_OPC_SHRUXI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000060180000ULL, - 0x300c000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "shufflebytes", TILEGX_OPC_SHUFFLEBYTES, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051380000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "st", TILEGX_OPC_ST, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 14, 33 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0xc200000004000000ULL - }, - { - -1ULL, - 0x2862000000000000ULL, - -1ULL, - -1ULL, - 0xc200000004000000ULL - } -#endif - }, - { "st1", TILEGX_OPC_ST1, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 14, 33 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0xc200000004000000ULL - }, - { - -1ULL, - 0x2854000000000000ULL, - -1ULL, - -1ULL, - 0xc000000000000000ULL - } -#endif - }, - { "st1_add", TILEGX_OPC_ST1_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x18c8000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "st2", TILEGX_OPC_ST2, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 14, 33 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0xc200000004000000ULL - }, - { - -1ULL, - 0x2856000000000000ULL, - -1ULL, - -1ULL, - 0xc000000004000000ULL - } -#endif - }, - { "st2_add", TILEGX_OPC_ST2_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x18d0000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "st4", TILEGX_OPC_ST4, 0x12, 2, TREG_ZERO, 1, - { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 14, 33 } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0xc200000004000000ULL - }, - { - -1ULL, - 0x2858000000000000ULL, - -1ULL, - -1ULL, - 0xc200000000000000ULL - } -#endif - }, - { "st4_add", TILEGX_OPC_ST4_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x18d8000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "st_add", TILEGX_OPC_ST_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x1900000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "stnt", TILEGX_OPC_STNT, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x2860000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "stnt1", TILEGX_OPC_STNT1, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x285a000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "stnt1_add", TILEGX_OPC_STNT1_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x18e0000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "stnt2", TILEGX_OPC_STNT2, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x285c000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "stnt2_add", TILEGX_OPC_STNT2_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x18e8000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "stnt4", TILEGX_OPC_STNT4, 0x2, 2, TREG_ZERO, 1, - { { 0, }, { 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x285e000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "stnt4_add", TILEGX_OPC_STNT4_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x18f0000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "stnt_add", TILEGX_OPC_STNT_ADD, 0x2, 3, TREG_ZERO, 1, - { { 0, }, { 15, 17, 34 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x18f8000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "sub", TILEGX_OPC_SUB, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000051440000ULL, - 0x2868000000000000ULL, - 0x00000000280c0000ULL, - 0x1806000000000000ULL, - -1ULL - } -#endif - }, - { "subx", TILEGX_OPC_SUBX, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000051400000ULL, - 0x2866000000000000ULL, - 0x0000000028080000ULL, - 0x1804000000000000ULL, - -1ULL - } -#endif - }, - { "subxsc", TILEGX_OPC_SUBXSC, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000513c0000ULL, - 0x2864000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "swint0", TILEGX_OPC_SWINT0, 0x2, 0, TREG_ZERO, 0, - { { 0, }, { }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286b100000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "swint1", TILEGX_OPC_SWINT1, 0x2, 0, TREG_ZERO, 0, - { { 0, }, { }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286b180000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "swint2", TILEGX_OPC_SWINT2, 0x2, 0, TREG_ZERO, 0, - { { 0, }, { }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286b200000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "swint3", TILEGX_OPC_SWINT3, 0x2, 0, TREG_ZERO, 0, - { { 0, }, { }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286b280000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "tblidxb0", TILEGX_OPC_TBLIDXB0, 0x5, 2, TREG_ZERO, 1, - { { 23, 9 }, { 0, }, { 24, 11 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffff000ULL, - 0ULL, - 0x00000000780ff000ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051489000ULL, - -1ULL, - 0x00000000300c9000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "tblidxb1", TILEGX_OPC_TBLIDXB1, 0x5, 2, TREG_ZERO, 1, - { { 23, 9 }, { 0, }, { 24, 11 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffff000ULL, - 0ULL, - 0x00000000780ff000ULL, - 0ULL, - 0ULL - }, - { - 0x000000005148a000ULL, - -1ULL, - 0x00000000300ca000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "tblidxb2", TILEGX_OPC_TBLIDXB2, 0x5, 2, TREG_ZERO, 1, - { { 23, 9 }, { 0, }, { 24, 11 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffff000ULL, - 0ULL, - 0x00000000780ff000ULL, - 0ULL, - 0ULL - }, - { - 0x000000005148b000ULL, - -1ULL, - 0x00000000300cb000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "tblidxb3", TILEGX_OPC_TBLIDXB3, 0x5, 2, TREG_ZERO, 1, - { { 23, 9 }, { 0, }, { 24, 11 }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffff000ULL, - 0ULL, - 0x00000000780ff000ULL, - 0ULL, - 0ULL - }, - { - 0x000000005148c000ULL, - -1ULL, - 0x00000000300cc000ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1add", TILEGX_OPC_V1ADD, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051500000ULL, - 0x286e000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1addi", TILEGX_OPC_V1ADDI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000040800000ULL, - 0x1908000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1adduc", TILEGX_OPC_V1ADDUC, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000514c0000ULL, - 0x286c000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1adiffu", TILEGX_OPC_V1ADIFFU, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051540000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1avgu", TILEGX_OPC_V1AVGU, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051580000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1cmpeq", TILEGX_OPC_V1CMPEQ, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000515c0000ULL, - 0x2870000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1cmpeqi", TILEGX_OPC_V1CMPEQI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000040900000ULL, - 0x1910000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1cmples", TILEGX_OPC_V1CMPLES, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051600000ULL, - 0x2872000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1cmpleu", TILEGX_OPC_V1CMPLEU, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051640000ULL, - 0x2874000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1cmplts", TILEGX_OPC_V1CMPLTS, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051680000ULL, - 0x2876000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1cmpltsi", TILEGX_OPC_V1CMPLTSI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000040a00000ULL, - 0x1918000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1cmpltu", TILEGX_OPC_V1CMPLTU, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000516c0000ULL, - 0x2878000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1cmpltui", TILEGX_OPC_V1CMPLTUI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000040b00000ULL, - 0x1920000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1cmpne", TILEGX_OPC_V1CMPNE, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051700000ULL, - 0x287a000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1ddotpu", TILEGX_OPC_V1DDOTPU, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052880000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1ddotpua", TILEGX_OPC_V1DDOTPUA, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052840000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1ddotpus", TILEGX_OPC_V1DDOTPUS, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051780000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1ddotpusa", TILEGX_OPC_V1DDOTPUSA, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051740000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1dotp", TILEGX_OPC_V1DOTP, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051880000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1dotpa", TILEGX_OPC_V1DOTPA, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000517c0000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1dotpu", TILEGX_OPC_V1DOTPU, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052900000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1dotpua", TILEGX_OPC_V1DOTPUA, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000528c0000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1dotpus", TILEGX_OPC_V1DOTPUS, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051840000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1dotpusa", TILEGX_OPC_V1DOTPUSA, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051800000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1int_h", TILEGX_OPC_V1INT_H, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000518c0000ULL, - 0x287c000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1int_l", TILEGX_OPC_V1INT_L, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051900000ULL, - 0x287e000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1maxu", TILEGX_OPC_V1MAXU, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051940000ULL, - 0x2880000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1maxui", TILEGX_OPC_V1MAXUI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000040c00000ULL, - 0x1928000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1minu", TILEGX_OPC_V1MINU, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051980000ULL, - 0x2882000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1minui", TILEGX_OPC_V1MINUI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000040d00000ULL, - 0x1930000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1mnz", TILEGX_OPC_V1MNZ, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000519c0000ULL, - 0x2884000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1multu", TILEGX_OPC_V1MULTU, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051a00000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1mulu", TILEGX_OPC_V1MULU, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051a80000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1mulus", TILEGX_OPC_V1MULUS, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051a40000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1mz", TILEGX_OPC_V1MZ, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051ac0000ULL, - 0x2886000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1sadau", TILEGX_OPC_V1SADAU, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051b00000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1sadu", TILEGX_OPC_V1SADU, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051b40000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1shl", TILEGX_OPC_V1SHL, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051b80000ULL, - 0x2888000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1shli", TILEGX_OPC_V1SHLI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000601c0000ULL, - 0x300e000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1shrs", TILEGX_OPC_V1SHRS, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051bc0000ULL, - 0x288a000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1shrsi", TILEGX_OPC_V1SHRSI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000060200000ULL, - 0x3010000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1shru", TILEGX_OPC_V1SHRU, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051c00000ULL, - 0x288c000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1shrui", TILEGX_OPC_V1SHRUI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000060240000ULL, - 0x3012000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1sub", TILEGX_OPC_V1SUB, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051c80000ULL, - 0x2890000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v1subuc", TILEGX_OPC_V1SUBUC, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051c40000ULL, - 0x288e000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2add", TILEGX_OPC_V2ADD, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051d00000ULL, - 0x2894000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2addi", TILEGX_OPC_V2ADDI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000040e00000ULL, - 0x1938000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2addsc", TILEGX_OPC_V2ADDSC, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051cc0000ULL, - 0x2892000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2adiffs", TILEGX_OPC_V2ADIFFS, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051d40000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2avgs", TILEGX_OPC_V2AVGS, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051d80000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2cmpeq", TILEGX_OPC_V2CMPEQ, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051dc0000ULL, - 0x2896000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2cmpeqi", TILEGX_OPC_V2CMPEQI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000040f00000ULL, - 0x1940000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2cmples", TILEGX_OPC_V2CMPLES, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051e00000ULL, - 0x2898000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2cmpleu", TILEGX_OPC_V2CMPLEU, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051e40000ULL, - 0x289a000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2cmplts", TILEGX_OPC_V2CMPLTS, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051e80000ULL, - 0x289c000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2cmpltsi", TILEGX_OPC_V2CMPLTSI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000041000000ULL, - 0x1948000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2cmpltu", TILEGX_OPC_V2CMPLTU, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051ec0000ULL, - 0x289e000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2cmpltui", TILEGX_OPC_V2CMPLTUI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000041100000ULL, - 0x1950000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2cmpne", TILEGX_OPC_V2CMPNE, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051f00000ULL, - 0x28a0000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2dotp", TILEGX_OPC_V2DOTP, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051f80000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2dotpa", TILEGX_OPC_V2DOTPA, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051f40000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2int_h", TILEGX_OPC_V2INT_H, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000051fc0000ULL, - 0x28a2000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2int_l", TILEGX_OPC_V2INT_L, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052000000ULL, - 0x28a4000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2maxs", TILEGX_OPC_V2MAXS, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052040000ULL, - 0x28a6000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2maxsi", TILEGX_OPC_V2MAXSI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000041200000ULL, - 0x1958000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2mins", TILEGX_OPC_V2MINS, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052080000ULL, - 0x28a8000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2minsi", TILEGX_OPC_V2MINSI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000041300000ULL, - 0x1960000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2mnz", TILEGX_OPC_V2MNZ, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000520c0000ULL, - 0x28aa000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2mulfsc", TILEGX_OPC_V2MULFSC, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052100000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2muls", TILEGX_OPC_V2MULS, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052140000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2mults", TILEGX_OPC_V2MULTS, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052180000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2mz", TILEGX_OPC_V2MZ, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000521c0000ULL, - 0x28ac000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2packh", TILEGX_OPC_V2PACKH, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052200000ULL, - 0x28ae000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2packl", TILEGX_OPC_V2PACKL, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052240000ULL, - 0x28b0000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2packuc", TILEGX_OPC_V2PACKUC, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052280000ULL, - 0x28b2000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2sadas", TILEGX_OPC_V2SADAS, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000522c0000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2sadau", TILEGX_OPC_V2SADAU, 0x1, 3, TREG_ZERO, 1, - { { 23, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052300000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2sads", TILEGX_OPC_V2SADS, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052340000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2sadu", TILEGX_OPC_V2SADU, 0x1, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 0, }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052380000ULL, - -1ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2shl", TILEGX_OPC_V2SHL, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052400000ULL, - 0x28b6000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2shli", TILEGX_OPC_V2SHLI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000060280000ULL, - 0x3014000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2shlsc", TILEGX_OPC_V2SHLSC, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000523c0000ULL, - 0x28b4000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2shrs", TILEGX_OPC_V2SHRS, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052440000ULL, - 0x28b8000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2shrsi", TILEGX_OPC_V2SHRSI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000602c0000ULL, - 0x3016000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2shru", TILEGX_OPC_V2SHRU, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052480000ULL, - 0x28ba000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2shrui", TILEGX_OPC_V2SHRUI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 29 }, { 6, 7, 30 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000060300000ULL, - 0x3018000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2sub", TILEGX_OPC_V2SUB, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052500000ULL, - 0x28be000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v2subsc", TILEGX_OPC_V2SUBSC, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000524c0000ULL, - 0x28bc000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v4add", TILEGX_OPC_V4ADD, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052580000ULL, - 0x28c2000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v4addsc", TILEGX_OPC_V4ADDSC, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052540000ULL, - 0x28c0000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v4int_h", TILEGX_OPC_V4INT_H, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000525c0000ULL, - 0x28c4000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v4int_l", TILEGX_OPC_V4INT_L, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052600000ULL, - 0x28c6000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v4packsc", TILEGX_OPC_V4PACKSC, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052640000ULL, - 0x28c8000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v4shl", TILEGX_OPC_V4SHL, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000526c0000ULL, - 0x28cc000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v4shlsc", TILEGX_OPC_V4SHLSC, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052680000ULL, - 0x28ca000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v4shrs", TILEGX_OPC_V4SHRS, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052700000ULL, - 0x28ce000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v4shru", TILEGX_OPC_V4SHRU, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052740000ULL, - 0x28d0000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v4sub", TILEGX_OPC_V4SUB, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x00000000527c0000ULL, - 0x28d4000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "v4subsc", TILEGX_OPC_V4SUBSC, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000052780000ULL, - 0x28d2000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "wh64", TILEGX_OPC_WH64, 0x2, 1, TREG_ZERO, 1, - { { 0, }, { 7 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0ULL, - 0xfffff80000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - -1ULL, - 0x286b300000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { "xor", TILEGX_OPC_XOR, 0xf, 3, TREG_ZERO, 1, - { { 8, 9, 16 }, { 6, 7, 17 }, { 10, 11, 18 }, { 12, 13, 19 }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ffc0000ULL, - 0xfffe000000000000ULL, - 0x00000000780c0000ULL, - 0x3c06000000000000ULL, - 0ULL - }, - { - 0x0000000052800000ULL, - 0x28d6000000000000ULL, - 0x00000000500c0000ULL, - 0x2c06000000000000ULL, - -1ULL - } -#endif - }, - { "xori", TILEGX_OPC_XORI, 0x3, 3, TREG_ZERO, 1, - { { 8, 9, 0 }, { 6, 7, 1 }, { 0, }, { 0, }, { 0, } }, -#ifndef DISASM_ONLY - { - 0xc00000007ff00000ULL, - 0xfff8000000000000ULL, - 0ULL, - 0ULL, - 0ULL - }, - { - 0x0000000041400000ULL, - 0x1968000000000000ULL, - -1ULL, - -1ULL, - -1ULL - } -#endif - }, - { NULL, TILEGX_OPC_NONE, 0, 0, TREG_ZERO, 0, { { 0, } }, -#ifndef DISASM_ONLY - { 0, }, { 0, } -#endif - } -}; - -#define BITFIELD(start, size) ((start) | (((1 << (size)) - 1) << 6)) -#define CHILD(array_index) (TILEGX_OPC_NONE + (array_index)) - -static const unsigned short decode_X0_fsm[936] = -{ - BITFIELD(22, 9) /* index 0 */, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_BFEXTS, - TILEGX_OPC_BFEXTS, TILEGX_OPC_BFEXTS, TILEGX_OPC_BFEXTS, TILEGX_OPC_BFEXTU, - TILEGX_OPC_BFEXTU, TILEGX_OPC_BFEXTU, TILEGX_OPC_BFEXTU, TILEGX_OPC_BFINS, - TILEGX_OPC_BFINS, TILEGX_OPC_BFINS, TILEGX_OPC_BFINS, TILEGX_OPC_MM, - TILEGX_OPC_MM, TILEGX_OPC_MM, TILEGX_OPC_MM, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, CHILD(528), CHILD(578), - CHILD(583), CHILD(588), CHILD(593), CHILD(598), TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, CHILD(603), CHILD(620), CHILD(637), CHILD(654), CHILD(671), - CHILD(703), CHILD(797), CHILD(814), CHILD(831), CHILD(848), CHILD(865), - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, CHILD(889), TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), - CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), - CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), - CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), - CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), - CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), - CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), - CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), - CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), - CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), - CHILD(906), CHILD(906), CHILD(906), CHILD(906), CHILD(906), - BITFIELD(6, 2) /* index 513 */, - TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, CHILD(518), - BITFIELD(8, 2) /* index 518 */, - TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, CHILD(523), - BITFIELD(10, 2) /* index 523 */, - TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_MOVELI, - BITFIELD(20, 2) /* index 528 */, - TILEGX_OPC_NONE, CHILD(533), TILEGX_OPC_ADDXI, CHILD(548), - BITFIELD(6, 2) /* index 533 */, - TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(538), - BITFIELD(8, 2) /* index 538 */, - TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(543), - BITFIELD(10, 2) /* index 543 */, - TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_MOVEI, - BITFIELD(0, 2) /* index 548 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(553), - BITFIELD(2, 2) /* index 553 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(558), - BITFIELD(4, 2) /* index 558 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(563), - BITFIELD(6, 2) /* index 563 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(568), - BITFIELD(8, 2) /* index 568 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(573), - BITFIELD(10, 2) /* index 573 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_INFO, - BITFIELD(20, 2) /* index 578 */, - TILEGX_OPC_CMPEQI, TILEGX_OPC_CMPLTSI, TILEGX_OPC_CMPLTUI, TILEGX_OPC_ORI, - BITFIELD(20, 2) /* index 583 */, - TILEGX_OPC_V1ADDI, TILEGX_OPC_V1CMPEQI, TILEGX_OPC_V1CMPLTSI, - TILEGX_OPC_V1CMPLTUI, - BITFIELD(20, 2) /* index 588 */, - TILEGX_OPC_V1MAXUI, TILEGX_OPC_V1MINUI, TILEGX_OPC_V2ADDI, - TILEGX_OPC_V2CMPEQI, - BITFIELD(20, 2) /* index 593 */, - TILEGX_OPC_V2CMPLTSI, TILEGX_OPC_V2CMPLTUI, TILEGX_OPC_V2MAXSI, - TILEGX_OPC_V2MINSI, - BITFIELD(20, 2) /* index 598 */, - TILEGX_OPC_XORI, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(18, 4) /* index 603 */, - TILEGX_OPC_NONE, TILEGX_OPC_ADDXSC, TILEGX_OPC_ADDX, TILEGX_OPC_ADD, - TILEGX_OPC_AND, TILEGX_OPC_CMOVEQZ, TILEGX_OPC_CMOVNEZ, TILEGX_OPC_CMPEQ, - TILEGX_OPC_CMPLES, TILEGX_OPC_CMPLEU, TILEGX_OPC_CMPLTS, TILEGX_OPC_CMPLTU, - TILEGX_OPC_CMPNE, TILEGX_OPC_CMULAF, TILEGX_OPC_CMULA, TILEGX_OPC_CMULFR, - BITFIELD(18, 4) /* index 620 */, - TILEGX_OPC_CMULF, TILEGX_OPC_CMULHR, TILEGX_OPC_CMULH, TILEGX_OPC_CMUL, - TILEGX_OPC_CRC32_32, TILEGX_OPC_CRC32_8, TILEGX_OPC_DBLALIGN2, - TILEGX_OPC_DBLALIGN4, TILEGX_OPC_DBLALIGN6, TILEGX_OPC_DBLALIGN, - TILEGX_OPC_FDOUBLE_ADDSUB, TILEGX_OPC_FDOUBLE_ADD_FLAGS, - TILEGX_OPC_FDOUBLE_MUL_FLAGS, TILEGX_OPC_FDOUBLE_PACK1, - TILEGX_OPC_FDOUBLE_PACK2, TILEGX_OPC_FDOUBLE_SUB_FLAGS, - BITFIELD(18, 4) /* index 637 */, - TILEGX_OPC_FDOUBLE_UNPACK_MAX, TILEGX_OPC_FDOUBLE_UNPACK_MIN, - TILEGX_OPC_FSINGLE_ADD1, TILEGX_OPC_FSINGLE_ADDSUB2, - TILEGX_OPC_FSINGLE_MUL1, TILEGX_OPC_FSINGLE_MUL2, TILEGX_OPC_FSINGLE_PACK2, - TILEGX_OPC_FSINGLE_SUB1, TILEGX_OPC_MNZ, TILEGX_OPC_MULAX, - TILEGX_OPC_MULA_HS_HS, TILEGX_OPC_MULA_HS_HU, TILEGX_OPC_MULA_HS_LS, - TILEGX_OPC_MULA_HS_LU, TILEGX_OPC_MULA_HU_HU, TILEGX_OPC_MULA_HU_LS, - BITFIELD(18, 4) /* index 654 */, - TILEGX_OPC_MULA_HU_LU, TILEGX_OPC_MULA_LS_LS, TILEGX_OPC_MULA_LS_LU, - TILEGX_OPC_MULA_LU_LU, TILEGX_OPC_MULX, TILEGX_OPC_MUL_HS_HS, - TILEGX_OPC_MUL_HS_HU, TILEGX_OPC_MUL_HS_LS, TILEGX_OPC_MUL_HS_LU, - TILEGX_OPC_MUL_HU_HU, TILEGX_OPC_MUL_HU_LS, TILEGX_OPC_MUL_HU_LU, - TILEGX_OPC_MUL_LS_LS, TILEGX_OPC_MUL_LS_LU, TILEGX_OPC_MUL_LU_LU, - TILEGX_OPC_MZ, - BITFIELD(18, 4) /* index 671 */, - TILEGX_OPC_NOR, CHILD(688), TILEGX_OPC_ROTL, TILEGX_OPC_SHL1ADDX, - TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL2ADDX, TILEGX_OPC_SHL2ADD, - TILEGX_OPC_SHL3ADDX, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHLX, TILEGX_OPC_SHL, - TILEGX_OPC_SHRS, TILEGX_OPC_SHRUX, TILEGX_OPC_SHRU, TILEGX_OPC_SHUFFLEBYTES, - TILEGX_OPC_SUBXSC, - BITFIELD(12, 2) /* index 688 */, - TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(693), - BITFIELD(14, 2) /* index 693 */, - TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(698), - BITFIELD(16, 2) /* index 698 */, - TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_MOVE, - BITFIELD(18, 4) /* index 703 */, - TILEGX_OPC_SUBX, TILEGX_OPC_SUB, CHILD(720), TILEGX_OPC_V1ADDUC, - TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADIFFU, TILEGX_OPC_V1AVGU, - TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLEU, - TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPNE, - TILEGX_OPC_V1DDOTPUSA, TILEGX_OPC_V1DDOTPUS, TILEGX_OPC_V1DOTPA, - BITFIELD(12, 4) /* index 720 */, - TILEGX_OPC_NONE, CHILD(737), CHILD(742), CHILD(747), CHILD(752), CHILD(757), - CHILD(762), CHILD(767), CHILD(772), CHILD(777), CHILD(782), CHILD(787), - CHILD(792), TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(16, 2) /* index 737 */, - TILEGX_OPC_CLZ, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(16, 2) /* index 742 */, - TILEGX_OPC_CTZ, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(16, 2) /* index 747 */, - TILEGX_OPC_FNOP, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(16, 2) /* index 752 */, - TILEGX_OPC_FSINGLE_PACK1, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(16, 2) /* index 757 */, - TILEGX_OPC_NOP, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(16, 2) /* index 762 */, - TILEGX_OPC_PCNT, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(16, 2) /* index 767 */, - TILEGX_OPC_REVBITS, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(16, 2) /* index 772 */, - TILEGX_OPC_REVBYTES, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(16, 2) /* index 777 */, - TILEGX_OPC_TBLIDXB0, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(16, 2) /* index 782 */, - TILEGX_OPC_TBLIDXB1, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(16, 2) /* index 787 */, - TILEGX_OPC_TBLIDXB2, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(16, 2) /* index 792 */, - TILEGX_OPC_TBLIDXB3, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(18, 4) /* index 797 */, - TILEGX_OPC_V1DOTPUSA, TILEGX_OPC_V1DOTPUS, TILEGX_OPC_V1DOTP, - TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1MAXU, - TILEGX_OPC_V1MINU, TILEGX_OPC_V1MNZ, TILEGX_OPC_V1MULTU, TILEGX_OPC_V1MULUS, - TILEGX_OPC_V1MULU, TILEGX_OPC_V1MZ, TILEGX_OPC_V1SADAU, TILEGX_OPC_V1SADU, - TILEGX_OPC_V1SHL, TILEGX_OPC_V1SHRS, - BITFIELD(18, 4) /* index 814 */, - TILEGX_OPC_V1SHRU, TILEGX_OPC_V1SUBUC, TILEGX_OPC_V1SUB, TILEGX_OPC_V2ADDSC, - TILEGX_OPC_V2ADD, TILEGX_OPC_V2ADIFFS, TILEGX_OPC_V2AVGS, - TILEGX_OPC_V2CMPEQ, TILEGX_OPC_V2CMPLES, TILEGX_OPC_V2CMPLEU, - TILEGX_OPC_V2CMPLTS, TILEGX_OPC_V2CMPLTU, TILEGX_OPC_V2CMPNE, - TILEGX_OPC_V2DOTPA, TILEGX_OPC_V2DOTP, TILEGX_OPC_V2INT_H, - BITFIELD(18, 4) /* index 831 */, - TILEGX_OPC_V2INT_L, TILEGX_OPC_V2MAXS, TILEGX_OPC_V2MINS, TILEGX_OPC_V2MNZ, - TILEGX_OPC_V2MULFSC, TILEGX_OPC_V2MULS, TILEGX_OPC_V2MULTS, TILEGX_OPC_V2MZ, - TILEGX_OPC_V2PACKH, TILEGX_OPC_V2PACKL, TILEGX_OPC_V2PACKUC, - TILEGX_OPC_V2SADAS, TILEGX_OPC_V2SADAU, TILEGX_OPC_V2SADS, - TILEGX_OPC_V2SADU, TILEGX_OPC_V2SHLSC, - BITFIELD(18, 4) /* index 848 */, - TILEGX_OPC_V2SHL, TILEGX_OPC_V2SHRS, TILEGX_OPC_V2SHRU, TILEGX_OPC_V2SUBSC, - TILEGX_OPC_V2SUB, TILEGX_OPC_V4ADDSC, TILEGX_OPC_V4ADD, TILEGX_OPC_V4INT_H, - TILEGX_OPC_V4INT_L, TILEGX_OPC_V4PACKSC, TILEGX_OPC_V4SHLSC, - TILEGX_OPC_V4SHL, TILEGX_OPC_V4SHRS, TILEGX_OPC_V4SHRU, TILEGX_OPC_V4SUBSC, - TILEGX_OPC_V4SUB, - BITFIELD(18, 3) /* index 865 */, - CHILD(874), CHILD(877), CHILD(880), CHILD(883), CHILD(886), TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(21, 1) /* index 874 */, - TILEGX_OPC_XOR, TILEGX_OPC_NONE, - BITFIELD(21, 1) /* index 877 */, - TILEGX_OPC_V1DDOTPUA, TILEGX_OPC_NONE, - BITFIELD(21, 1) /* index 880 */, - TILEGX_OPC_V1DDOTPU, TILEGX_OPC_NONE, - BITFIELD(21, 1) /* index 883 */, - TILEGX_OPC_V1DOTPUA, TILEGX_OPC_NONE, - BITFIELD(21, 1) /* index 886 */, - TILEGX_OPC_V1DOTPU, TILEGX_OPC_NONE, - BITFIELD(18, 4) /* index 889 */, - TILEGX_OPC_NONE, TILEGX_OPC_ROTLI, TILEGX_OPC_SHLI, TILEGX_OPC_SHLXI, - TILEGX_OPC_SHRSI, TILEGX_OPC_SHRUI, TILEGX_OPC_SHRUXI, TILEGX_OPC_V1SHLI, - TILEGX_OPC_V1SHRSI, TILEGX_OPC_V1SHRUI, TILEGX_OPC_V2SHLI, - TILEGX_OPC_V2SHRSI, TILEGX_OPC_V2SHRUI, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, - BITFIELD(0, 2) /* index 906 */, - TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, - CHILD(911), - BITFIELD(2, 2) /* index 911 */, - TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, - CHILD(916), - BITFIELD(4, 2) /* index 916 */, - TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, - CHILD(921), - BITFIELD(6, 2) /* index 921 */, - TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, - CHILD(926), - BITFIELD(8, 2) /* index 926 */, - TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, - CHILD(931), - BITFIELD(10, 2) /* index 931 */, - TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, - TILEGX_OPC_INFOL, -}; - -static const unsigned short decode_X1_fsm[1266] = -{ - BITFIELD(53, 9) /* index 0 */, - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), CHILD(513), - CHILD(513), CHILD(513), CHILD(513), CHILD(513), TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, - TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_ADDXLI, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_BEQZT, - TILEGX_OPC_BEQZT, TILEGX_OPC_BEQZ, TILEGX_OPC_BEQZ, TILEGX_OPC_BGEZT, - TILEGX_OPC_BGEZT, TILEGX_OPC_BGEZ, TILEGX_OPC_BGEZ, TILEGX_OPC_BGTZT, - TILEGX_OPC_BGTZT, TILEGX_OPC_BGTZ, TILEGX_OPC_BGTZ, TILEGX_OPC_BLBCT, - TILEGX_OPC_BLBCT, TILEGX_OPC_BLBC, TILEGX_OPC_BLBC, TILEGX_OPC_BLBST, - TILEGX_OPC_BLBST, TILEGX_OPC_BLBS, TILEGX_OPC_BLBS, TILEGX_OPC_BLEZT, - TILEGX_OPC_BLEZT, TILEGX_OPC_BLEZ, TILEGX_OPC_BLEZ, TILEGX_OPC_BLTZT, - TILEGX_OPC_BLTZT, TILEGX_OPC_BLTZ, TILEGX_OPC_BLTZ, TILEGX_OPC_BNEZT, - TILEGX_OPC_BNEZT, TILEGX_OPC_BNEZ, TILEGX_OPC_BNEZ, CHILD(528), CHILD(578), - CHILD(598), CHILD(703), CHILD(723), CHILD(728), CHILD(753), CHILD(758), - CHILD(763), CHILD(768), CHILD(773), CHILD(778), TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_JAL, - TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, - TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, - TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, - TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, - TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, - TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, - TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, - TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_JAL, TILEGX_OPC_J, TILEGX_OPC_J, - TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, - TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, - TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, - TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, - TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, - TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, TILEGX_OPC_J, - CHILD(783), CHILD(800), CHILD(832), CHILD(849), CHILD(1168), CHILD(1185), - CHILD(1202), TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, CHILD(1219), TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, CHILD(1236), CHILD(1236), CHILD(1236), - CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), - CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), - CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), - CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), - CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), - CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), - CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), - CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), - CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), - CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), - CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), - CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), CHILD(1236), - CHILD(1236), - BITFIELD(37, 2) /* index 513 */, - TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, CHILD(518), - BITFIELD(39, 2) /* index 518 */, - TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, CHILD(523), - BITFIELD(41, 2) /* index 523 */, - TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_ADDLI, TILEGX_OPC_MOVELI, - BITFIELD(51, 2) /* index 528 */, - TILEGX_OPC_NONE, CHILD(533), TILEGX_OPC_ADDXI, CHILD(548), - BITFIELD(37, 2) /* index 533 */, - TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(538), - BITFIELD(39, 2) /* index 538 */, - TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(543), - BITFIELD(41, 2) /* index 543 */, - TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_MOVEI, - BITFIELD(31, 2) /* index 548 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(553), - BITFIELD(33, 2) /* index 553 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(558), - BITFIELD(35, 2) /* index 558 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(563), - BITFIELD(37, 2) /* index 563 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(568), - BITFIELD(39, 2) /* index 568 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(573), - BITFIELD(41, 2) /* index 573 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_INFO, - BITFIELD(51, 2) /* index 578 */, - TILEGX_OPC_CMPEQI, TILEGX_OPC_CMPLTSI, TILEGX_OPC_CMPLTUI, CHILD(583), - BITFIELD(31, 2) /* index 583 */, - TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, CHILD(588), - BITFIELD(33, 2) /* index 588 */, - TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, CHILD(593), - BITFIELD(35, 2) /* index 593 */, - TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, TILEGX_OPC_LD1S_ADD, - TILEGX_OPC_PREFETCH_ADD_L1_FAULT, - BITFIELD(51, 2) /* index 598 */, - CHILD(603), CHILD(618), CHILD(633), CHILD(648), - BITFIELD(31, 2) /* index 603 */, - TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, CHILD(608), - BITFIELD(33, 2) /* index 608 */, - TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, CHILD(613), - BITFIELD(35, 2) /* index 613 */, - TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, TILEGX_OPC_LD1U_ADD, - TILEGX_OPC_PREFETCH_ADD_L1, - BITFIELD(31, 2) /* index 618 */, - TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, CHILD(623), - BITFIELD(33, 2) /* index 623 */, - TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, CHILD(628), - BITFIELD(35, 2) /* index 628 */, - TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, TILEGX_OPC_LD2S_ADD, - TILEGX_OPC_PREFETCH_ADD_L2_FAULT, - BITFIELD(31, 2) /* index 633 */, - TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, CHILD(638), - BITFIELD(33, 2) /* index 638 */, - TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, CHILD(643), - BITFIELD(35, 2) /* index 643 */, - TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, TILEGX_OPC_LD2U_ADD, - TILEGX_OPC_PREFETCH_ADD_L2, - BITFIELD(31, 2) /* index 648 */, - CHILD(653), CHILD(653), CHILD(653), CHILD(673), - BITFIELD(43, 2) /* index 653 */, - CHILD(658), TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, - BITFIELD(45, 2) /* index 658 */, - CHILD(663), TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, - BITFIELD(47, 2) /* index 663 */, - CHILD(668), TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, - BITFIELD(49, 2) /* index 668 */, - TILEGX_OPC_LD4S_TLS, TILEGX_OPC_LD4S_ADD, TILEGX_OPC_LD4S_ADD, - TILEGX_OPC_LD4S_ADD, - BITFIELD(33, 2) /* index 673 */, - CHILD(653), CHILD(653), CHILD(653), CHILD(678), - BITFIELD(35, 2) /* index 678 */, - CHILD(653), CHILD(653), CHILD(653), CHILD(683), - BITFIELD(43, 2) /* index 683 */, - CHILD(688), TILEGX_OPC_PREFETCH_ADD_L3_FAULT, - TILEGX_OPC_PREFETCH_ADD_L3_FAULT, TILEGX_OPC_PREFETCH_ADD_L3_FAULT, - BITFIELD(45, 2) /* index 688 */, - CHILD(693), TILEGX_OPC_PREFETCH_ADD_L3_FAULT, - TILEGX_OPC_PREFETCH_ADD_L3_FAULT, TILEGX_OPC_PREFETCH_ADD_L3_FAULT, - BITFIELD(47, 2) /* index 693 */, - CHILD(698), TILEGX_OPC_PREFETCH_ADD_L3_FAULT, - TILEGX_OPC_PREFETCH_ADD_L3_FAULT, TILEGX_OPC_PREFETCH_ADD_L3_FAULT, - BITFIELD(49, 2) /* index 698 */, - TILEGX_OPC_LD4S_TLS, TILEGX_OPC_PREFETCH_ADD_L3_FAULT, - TILEGX_OPC_PREFETCH_ADD_L3_FAULT, TILEGX_OPC_PREFETCH_ADD_L3_FAULT, - BITFIELD(51, 2) /* index 703 */, - CHILD(708), TILEGX_OPC_LDNT1S_ADD, TILEGX_OPC_LDNT1U_ADD, - TILEGX_OPC_LDNT2S_ADD, - BITFIELD(31, 2) /* index 708 */, - TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, CHILD(713), - BITFIELD(33, 2) /* index 713 */, - TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, CHILD(718), - BITFIELD(35, 2) /* index 718 */, - TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, TILEGX_OPC_LD4U_ADD, - TILEGX_OPC_PREFETCH_ADD_L3, - BITFIELD(51, 2) /* index 723 */, - TILEGX_OPC_LDNT2U_ADD, TILEGX_OPC_LDNT4S_ADD, TILEGX_OPC_LDNT4U_ADD, - TILEGX_OPC_LDNT_ADD, - BITFIELD(51, 2) /* index 728 */, - CHILD(733), TILEGX_OPC_LDNA_ADD, TILEGX_OPC_MFSPR, TILEGX_OPC_MTSPR, - BITFIELD(43, 2) /* index 733 */, - CHILD(738), TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, - BITFIELD(45, 2) /* index 738 */, - CHILD(743), TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, - BITFIELD(47, 2) /* index 743 */, - CHILD(748), TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, - BITFIELD(49, 2) /* index 748 */, - TILEGX_OPC_LD_TLS, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, TILEGX_OPC_LD_ADD, - BITFIELD(51, 2) /* index 753 */, - TILEGX_OPC_ORI, TILEGX_OPC_ST1_ADD, TILEGX_OPC_ST2_ADD, TILEGX_OPC_ST4_ADD, - BITFIELD(51, 2) /* index 758 */, - TILEGX_OPC_STNT1_ADD, TILEGX_OPC_STNT2_ADD, TILEGX_OPC_STNT4_ADD, - TILEGX_OPC_STNT_ADD, - BITFIELD(51, 2) /* index 763 */, - TILEGX_OPC_ST_ADD, TILEGX_OPC_V1ADDI, TILEGX_OPC_V1CMPEQI, - TILEGX_OPC_V1CMPLTSI, - BITFIELD(51, 2) /* index 768 */, - TILEGX_OPC_V1CMPLTUI, TILEGX_OPC_V1MAXUI, TILEGX_OPC_V1MINUI, - TILEGX_OPC_V2ADDI, - BITFIELD(51, 2) /* index 773 */, - TILEGX_OPC_V2CMPEQI, TILEGX_OPC_V2CMPLTSI, TILEGX_OPC_V2CMPLTUI, - TILEGX_OPC_V2MAXSI, - BITFIELD(51, 2) /* index 778 */, - TILEGX_OPC_V2MINSI, TILEGX_OPC_XORI, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(49, 4) /* index 783 */, - TILEGX_OPC_NONE, TILEGX_OPC_ADDXSC, TILEGX_OPC_ADDX, TILEGX_OPC_ADD, - TILEGX_OPC_AND, TILEGX_OPC_CMPEQ, TILEGX_OPC_CMPEXCH4, TILEGX_OPC_CMPEXCH, - TILEGX_OPC_CMPLES, TILEGX_OPC_CMPLEU, TILEGX_OPC_CMPLTS, TILEGX_OPC_CMPLTU, - TILEGX_OPC_CMPNE, TILEGX_OPC_DBLALIGN2, TILEGX_OPC_DBLALIGN4, - TILEGX_OPC_DBLALIGN6, - BITFIELD(49, 4) /* index 800 */, - TILEGX_OPC_EXCH4, TILEGX_OPC_EXCH, TILEGX_OPC_FETCHADD4, - TILEGX_OPC_FETCHADDGEZ4, TILEGX_OPC_FETCHADDGEZ, TILEGX_OPC_FETCHADD, - TILEGX_OPC_FETCHAND4, TILEGX_OPC_FETCHAND, TILEGX_OPC_FETCHOR4, - TILEGX_OPC_FETCHOR, TILEGX_OPC_MNZ, TILEGX_OPC_MZ, TILEGX_OPC_NOR, - CHILD(817), TILEGX_OPC_ROTL, TILEGX_OPC_SHL1ADDX, - BITFIELD(43, 2) /* index 817 */, - TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(822), - BITFIELD(45, 2) /* index 822 */, - TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(827), - BITFIELD(47, 2) /* index 827 */, - TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_MOVE, - BITFIELD(49, 4) /* index 832 */, - TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL2ADDX, TILEGX_OPC_SHL2ADD, - TILEGX_OPC_SHL3ADDX, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHLX, TILEGX_OPC_SHL, - TILEGX_OPC_SHRS, TILEGX_OPC_SHRUX, TILEGX_OPC_SHRU, TILEGX_OPC_ST1, - TILEGX_OPC_ST2, TILEGX_OPC_ST4, TILEGX_OPC_STNT1, TILEGX_OPC_STNT2, - TILEGX_OPC_STNT4, - BITFIELD(46, 7) /* index 849 */, - TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT, - TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT, TILEGX_OPC_STNT, - TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST, - TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_ST, TILEGX_OPC_SUBXSC, - TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC, - TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBXSC, TILEGX_OPC_SUBX, - TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, - TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUBX, TILEGX_OPC_SUB, - TILEGX_OPC_SUB, TILEGX_OPC_SUB, TILEGX_OPC_SUB, TILEGX_OPC_SUB, - TILEGX_OPC_SUB, TILEGX_OPC_SUB, TILEGX_OPC_SUB, CHILD(978), CHILD(987), - CHILD(1066), CHILD(1150), CHILD(1159), TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, - TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, - TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADDUC, TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD, - TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD, - TILEGX_OPC_V1ADD, TILEGX_OPC_V1ADD, TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ, - TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ, - TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ, TILEGX_OPC_V1CMPEQ, - TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES, - TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES, - TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLES, TILEGX_OPC_V1CMPLEU, - TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLEU, - TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLEU, - TILEGX_OPC_V1CMPLEU, TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS, - TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS, - TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS, TILEGX_OPC_V1CMPLTS, - TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU, - TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU, - TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPLTU, TILEGX_OPC_V1CMPNE, - TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1CMPNE, - TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1CMPNE, - TILEGX_OPC_V1CMPNE, TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H, - TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H, - TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H, TILEGX_OPC_V1INT_H, - TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, - TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, - TILEGX_OPC_V1INT_L, TILEGX_OPC_V1INT_L, - BITFIELD(43, 3) /* index 978 */, - TILEGX_OPC_NONE, TILEGX_OPC_DRAIN, TILEGX_OPC_DTLBPR, TILEGX_OPC_FINV, - TILEGX_OPC_FLUSHWB, TILEGX_OPC_FLUSH, TILEGX_OPC_FNOP, TILEGX_OPC_ICOH, - BITFIELD(43, 3) /* index 987 */, - CHILD(996), TILEGX_OPC_INV, TILEGX_OPC_IRET, TILEGX_OPC_JALRP, - TILEGX_OPC_JALR, TILEGX_OPC_JRP, TILEGX_OPC_JR, CHILD(1051), - BITFIELD(31, 2) /* index 996 */, - CHILD(1001), CHILD(1026), TILEGX_OPC_ILL, TILEGX_OPC_ILL, - BITFIELD(33, 2) /* index 1001 */, - TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_ILL, CHILD(1006), - BITFIELD(35, 2) /* index 1006 */, - TILEGX_OPC_ILL, CHILD(1011), TILEGX_OPC_ILL, TILEGX_OPC_ILL, - BITFIELD(37, 2) /* index 1011 */, - TILEGX_OPC_ILL, CHILD(1016), TILEGX_OPC_ILL, TILEGX_OPC_ILL, - BITFIELD(39, 2) /* index 1016 */, - TILEGX_OPC_ILL, CHILD(1021), TILEGX_OPC_ILL, TILEGX_OPC_ILL, - BITFIELD(41, 2) /* index 1021 */, - TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_BPT, TILEGX_OPC_ILL, - BITFIELD(33, 2) /* index 1026 */, - TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_ILL, CHILD(1031), - BITFIELD(35, 2) /* index 1031 */, - TILEGX_OPC_ILL, CHILD(1036), TILEGX_OPC_ILL, TILEGX_OPC_ILL, - BITFIELD(37, 2) /* index 1036 */, - TILEGX_OPC_ILL, CHILD(1041), TILEGX_OPC_ILL, TILEGX_OPC_ILL, - BITFIELD(39, 2) /* index 1041 */, - TILEGX_OPC_ILL, CHILD(1046), TILEGX_OPC_ILL, TILEGX_OPC_ILL, - BITFIELD(41, 2) /* index 1046 */, - TILEGX_OPC_ILL, TILEGX_OPC_ILL, TILEGX_OPC_RAISE, TILEGX_OPC_ILL, - BITFIELD(31, 2) /* index 1051 */, - TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, CHILD(1056), - BITFIELD(33, 2) /* index 1056 */, - TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, CHILD(1061), - BITFIELD(35, 2) /* index 1061 */, - TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, - TILEGX_OPC_PREFETCH_L1_FAULT, - BITFIELD(43, 3) /* index 1066 */, - CHILD(1075), CHILD(1090), CHILD(1105), CHILD(1120), CHILD(1135), - TILEGX_OPC_LDNA, TILEGX_OPC_LDNT1S, TILEGX_OPC_LDNT1U, - BITFIELD(31, 2) /* index 1075 */, - TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, CHILD(1080), - BITFIELD(33, 2) /* index 1080 */, - TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, CHILD(1085), - BITFIELD(35, 2) /* index 1085 */, - TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_PREFETCH, - BITFIELD(31, 2) /* index 1090 */, - TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, CHILD(1095), - BITFIELD(33, 2) /* index 1095 */, - TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, CHILD(1100), - BITFIELD(35, 2) /* index 1100 */, - TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, - TILEGX_OPC_PREFETCH_L2_FAULT, - BITFIELD(31, 2) /* index 1105 */, - TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, CHILD(1110), - BITFIELD(33, 2) /* index 1110 */, - TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, CHILD(1115), - BITFIELD(35, 2) /* index 1115 */, - TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_PREFETCH_L2, - BITFIELD(31, 2) /* index 1120 */, - TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(1125), - BITFIELD(33, 2) /* index 1125 */, - TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(1130), - BITFIELD(35, 2) /* index 1130 */, - TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, - TILEGX_OPC_PREFETCH_L3_FAULT, - BITFIELD(31, 2) /* index 1135 */, - TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(1140), - BITFIELD(33, 2) /* index 1140 */, - TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(1145), - BITFIELD(35, 2) /* index 1145 */, - TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_PREFETCH_L3, - BITFIELD(43, 3) /* index 1150 */, - TILEGX_OPC_LDNT2S, TILEGX_OPC_LDNT2U, TILEGX_OPC_LDNT4S, TILEGX_OPC_LDNT4U, - TILEGX_OPC_LDNT, TILEGX_OPC_LD, TILEGX_OPC_LNK, TILEGX_OPC_MF, - BITFIELD(43, 3) /* index 1159 */, - TILEGX_OPC_NAP, TILEGX_OPC_NOP, TILEGX_OPC_SWINT0, TILEGX_OPC_SWINT1, - TILEGX_OPC_SWINT2, TILEGX_OPC_SWINT3, TILEGX_OPC_WH64, TILEGX_OPC_NONE, - BITFIELD(49, 4) /* index 1168 */, - TILEGX_OPC_V1MAXU, TILEGX_OPC_V1MINU, TILEGX_OPC_V1MNZ, TILEGX_OPC_V1MZ, - TILEGX_OPC_V1SHL, TILEGX_OPC_V1SHRS, TILEGX_OPC_V1SHRU, TILEGX_OPC_V1SUBUC, - TILEGX_OPC_V1SUB, TILEGX_OPC_V2ADDSC, TILEGX_OPC_V2ADD, TILEGX_OPC_V2CMPEQ, - TILEGX_OPC_V2CMPLES, TILEGX_OPC_V2CMPLEU, TILEGX_OPC_V2CMPLTS, - TILEGX_OPC_V2CMPLTU, - BITFIELD(49, 4) /* index 1185 */, - TILEGX_OPC_V2CMPNE, TILEGX_OPC_V2INT_H, TILEGX_OPC_V2INT_L, - TILEGX_OPC_V2MAXS, TILEGX_OPC_V2MINS, TILEGX_OPC_V2MNZ, TILEGX_OPC_V2MZ, - TILEGX_OPC_V2PACKH, TILEGX_OPC_V2PACKL, TILEGX_OPC_V2PACKUC, - TILEGX_OPC_V2SHLSC, TILEGX_OPC_V2SHL, TILEGX_OPC_V2SHRS, TILEGX_OPC_V2SHRU, - TILEGX_OPC_V2SUBSC, TILEGX_OPC_V2SUB, - BITFIELD(49, 4) /* index 1202 */, - TILEGX_OPC_V4ADDSC, TILEGX_OPC_V4ADD, TILEGX_OPC_V4INT_H, - TILEGX_OPC_V4INT_L, TILEGX_OPC_V4PACKSC, TILEGX_OPC_V4SHLSC, - TILEGX_OPC_V4SHL, TILEGX_OPC_V4SHRS, TILEGX_OPC_V4SHRU, TILEGX_OPC_V4SUBSC, - TILEGX_OPC_V4SUB, TILEGX_OPC_XOR, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(49, 4) /* index 1219 */, - TILEGX_OPC_NONE, TILEGX_OPC_ROTLI, TILEGX_OPC_SHLI, TILEGX_OPC_SHLXI, - TILEGX_OPC_SHRSI, TILEGX_OPC_SHRUI, TILEGX_OPC_SHRUXI, TILEGX_OPC_V1SHLI, - TILEGX_OPC_V1SHRSI, TILEGX_OPC_V1SHRUI, TILEGX_OPC_V2SHLI, - TILEGX_OPC_V2SHRSI, TILEGX_OPC_V2SHRUI, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, - BITFIELD(31, 2) /* index 1236 */, - TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, - CHILD(1241), - BITFIELD(33, 2) /* index 1241 */, - TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, - CHILD(1246), - BITFIELD(35, 2) /* index 1246 */, - TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, - CHILD(1251), - BITFIELD(37, 2) /* index 1251 */, - TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, - CHILD(1256), - BITFIELD(39, 2) /* index 1256 */, - TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, - CHILD(1261), - BITFIELD(41, 2) /* index 1261 */, - TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, TILEGX_OPC_SHL16INSLI, - TILEGX_OPC_INFOL, -}; - -static const unsigned short decode_Y0_fsm[178] = -{ - BITFIELD(27, 4) /* index 0 */, - CHILD(17), TILEGX_OPC_ADDXI, CHILD(32), TILEGX_OPC_CMPEQI, - TILEGX_OPC_CMPLTSI, CHILD(62), CHILD(67), CHILD(118), CHILD(123), - CHILD(128), CHILD(133), CHILD(153), CHILD(158), CHILD(163), CHILD(168), - CHILD(173), - BITFIELD(6, 2) /* index 17 */, - TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(22), - BITFIELD(8, 2) /* index 22 */, - TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(27), - BITFIELD(10, 2) /* index 27 */, - TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_MOVEI, - BITFIELD(0, 2) /* index 32 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(37), - BITFIELD(2, 2) /* index 37 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(42), - BITFIELD(4, 2) /* index 42 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(47), - BITFIELD(6, 2) /* index 47 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(52), - BITFIELD(8, 2) /* index 52 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(57), - BITFIELD(10, 2) /* index 57 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_INFO, - BITFIELD(18, 2) /* index 62 */, - TILEGX_OPC_ADDX, TILEGX_OPC_ADD, TILEGX_OPC_SUBX, TILEGX_OPC_SUB, - BITFIELD(15, 5) /* index 67 */, - TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, - TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, - TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL2ADD, - TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD, - TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD, - TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, - TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, - TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, CHILD(100), - CHILD(109), TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(12, 3) /* index 100 */, - TILEGX_OPC_NONE, TILEGX_OPC_CLZ, TILEGX_OPC_CTZ, TILEGX_OPC_FNOP, - TILEGX_OPC_FSINGLE_PACK1, TILEGX_OPC_NOP, TILEGX_OPC_PCNT, - TILEGX_OPC_REVBITS, - BITFIELD(12, 3) /* index 109 */, - TILEGX_OPC_REVBYTES, TILEGX_OPC_TBLIDXB0, TILEGX_OPC_TBLIDXB1, - TILEGX_OPC_TBLIDXB2, TILEGX_OPC_TBLIDXB3, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - TILEGX_OPC_NONE, - BITFIELD(18, 2) /* index 118 */, - TILEGX_OPC_CMPLES, TILEGX_OPC_CMPLEU, TILEGX_OPC_CMPLTS, TILEGX_OPC_CMPLTU, - BITFIELD(18, 2) /* index 123 */, - TILEGX_OPC_CMPEQ, TILEGX_OPC_CMPNE, TILEGX_OPC_MULAX, TILEGX_OPC_MULX, - BITFIELD(18, 2) /* index 128 */, - TILEGX_OPC_CMOVEQZ, TILEGX_OPC_CMOVNEZ, TILEGX_OPC_MNZ, TILEGX_OPC_MZ, - BITFIELD(18, 2) /* index 133 */, - TILEGX_OPC_AND, TILEGX_OPC_NOR, CHILD(138), TILEGX_OPC_XOR, - BITFIELD(12, 2) /* index 138 */, - TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(143), - BITFIELD(14, 2) /* index 143 */, - TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(148), - BITFIELD(16, 2) /* index 148 */, - TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_MOVE, - BITFIELD(18, 2) /* index 153 */, - TILEGX_OPC_ROTL, TILEGX_OPC_SHL, TILEGX_OPC_SHRS, TILEGX_OPC_SHRU, - BITFIELD(18, 2) /* index 158 */, - TILEGX_OPC_NONE, TILEGX_OPC_SHL1ADDX, TILEGX_OPC_SHL2ADDX, - TILEGX_OPC_SHL3ADDX, - BITFIELD(18, 2) /* index 163 */, - TILEGX_OPC_MUL_HS_HS, TILEGX_OPC_MUL_HU_HU, TILEGX_OPC_MUL_LS_LS, - TILEGX_OPC_MUL_LU_LU, - BITFIELD(18, 2) /* index 168 */, - TILEGX_OPC_MULA_HS_HS, TILEGX_OPC_MULA_HU_HU, TILEGX_OPC_MULA_LS_LS, - TILEGX_OPC_MULA_LU_LU, - BITFIELD(18, 2) /* index 173 */, - TILEGX_OPC_ROTLI, TILEGX_OPC_SHLI, TILEGX_OPC_SHRSI, TILEGX_OPC_SHRUI, -}; - -static const unsigned short decode_Y1_fsm[167] = -{ - BITFIELD(58, 4) /* index 0 */, - TILEGX_OPC_NONE, CHILD(17), TILEGX_OPC_ADDXI, CHILD(32), TILEGX_OPC_CMPEQI, - TILEGX_OPC_CMPLTSI, CHILD(62), CHILD(67), CHILD(117), CHILD(122), - CHILD(127), CHILD(132), CHILD(152), CHILD(157), CHILD(162), TILEGX_OPC_NONE, - BITFIELD(37, 2) /* index 17 */, - TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(22), - BITFIELD(39, 2) /* index 22 */, - TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, CHILD(27), - BITFIELD(41, 2) /* index 27 */, - TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_ADDI, TILEGX_OPC_MOVEI, - BITFIELD(31, 2) /* index 32 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(37), - BITFIELD(33, 2) /* index 37 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(42), - BITFIELD(35, 2) /* index 42 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(47), - BITFIELD(37, 2) /* index 47 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(52), - BITFIELD(39, 2) /* index 52 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, CHILD(57), - BITFIELD(41, 2) /* index 57 */, - TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_ANDI, TILEGX_OPC_INFO, - BITFIELD(49, 2) /* index 62 */, - TILEGX_OPC_ADDX, TILEGX_OPC_ADD, TILEGX_OPC_SUBX, TILEGX_OPC_SUB, - BITFIELD(47, 4) /* index 67 */, - TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL1ADD, - TILEGX_OPC_SHL1ADD, TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD, - TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL2ADD, TILEGX_OPC_SHL3ADD, - TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, TILEGX_OPC_SHL3ADD, CHILD(84), - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_NONE, - BITFIELD(43, 3) /* index 84 */, - CHILD(93), CHILD(96), CHILD(99), CHILD(102), CHILD(105), CHILD(108), - CHILD(111), CHILD(114), - BITFIELD(46, 1) /* index 93 */, - TILEGX_OPC_NONE, TILEGX_OPC_FNOP, - BITFIELD(46, 1) /* index 96 */, - TILEGX_OPC_NONE, TILEGX_OPC_ILL, - BITFIELD(46, 1) /* index 99 */, - TILEGX_OPC_NONE, TILEGX_OPC_JALRP, - BITFIELD(46, 1) /* index 102 */, - TILEGX_OPC_NONE, TILEGX_OPC_JALR, - BITFIELD(46, 1) /* index 105 */, - TILEGX_OPC_NONE, TILEGX_OPC_JRP, - BITFIELD(46, 1) /* index 108 */, - TILEGX_OPC_NONE, TILEGX_OPC_JR, - BITFIELD(46, 1) /* index 111 */, - TILEGX_OPC_NONE, TILEGX_OPC_LNK, - BITFIELD(46, 1) /* index 114 */, - TILEGX_OPC_NONE, TILEGX_OPC_NOP, - BITFIELD(49, 2) /* index 117 */, - TILEGX_OPC_CMPLES, TILEGX_OPC_CMPLEU, TILEGX_OPC_CMPLTS, TILEGX_OPC_CMPLTU, - BITFIELD(49, 2) /* index 122 */, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_CMPEQ, TILEGX_OPC_CMPNE, - BITFIELD(49, 2) /* index 127 */, - TILEGX_OPC_NONE, TILEGX_OPC_NONE, TILEGX_OPC_MNZ, TILEGX_OPC_MZ, - BITFIELD(49, 2) /* index 132 */, - TILEGX_OPC_AND, TILEGX_OPC_NOR, CHILD(137), TILEGX_OPC_XOR, - BITFIELD(43, 2) /* index 137 */, - TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(142), - BITFIELD(45, 2) /* index 142 */, - TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, CHILD(147), - BITFIELD(47, 2) /* index 147 */, - TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_OR, TILEGX_OPC_MOVE, - BITFIELD(49, 2) /* index 152 */, - TILEGX_OPC_ROTL, TILEGX_OPC_SHL, TILEGX_OPC_SHRS, TILEGX_OPC_SHRU, - BITFIELD(49, 2) /* index 157 */, - TILEGX_OPC_NONE, TILEGX_OPC_SHL1ADDX, TILEGX_OPC_SHL2ADDX, - TILEGX_OPC_SHL3ADDX, - BITFIELD(49, 2) /* index 162 */, - TILEGX_OPC_ROTLI, TILEGX_OPC_SHLI, TILEGX_OPC_SHRSI, TILEGX_OPC_SHRUI, -}; - -static const unsigned short decode_Y2_fsm[118] = -{ - BITFIELD(62, 2) /* index 0 */, - TILEGX_OPC_NONE, CHILD(5), CHILD(66), CHILD(109), - BITFIELD(55, 3) /* index 5 */, - CHILD(14), CHILD(14), CHILD(14), CHILD(17), CHILD(40), CHILD(40), CHILD(40), - CHILD(43), - BITFIELD(26, 1) /* index 14 */, - TILEGX_OPC_LD1S, TILEGX_OPC_LD1U, - BITFIELD(26, 1) /* index 17 */, - CHILD(20), CHILD(30), - BITFIELD(51, 2) /* index 20 */, - TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, CHILD(25), - BITFIELD(53, 2) /* index 25 */, - TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, TILEGX_OPC_LD1S, - TILEGX_OPC_PREFETCH_L1_FAULT, - BITFIELD(51, 2) /* index 30 */, - TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, CHILD(35), - BITFIELD(53, 2) /* index 35 */, - TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_LD1U, TILEGX_OPC_PREFETCH, - BITFIELD(26, 1) /* index 40 */, - TILEGX_OPC_LD2S, TILEGX_OPC_LD2U, - BITFIELD(26, 1) /* index 43 */, - CHILD(46), CHILD(56), - BITFIELD(51, 2) /* index 46 */, - TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, CHILD(51), - BITFIELD(53, 2) /* index 51 */, - TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, TILEGX_OPC_LD2S, - TILEGX_OPC_PREFETCH_L2_FAULT, - BITFIELD(51, 2) /* index 56 */, - TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, CHILD(61), - BITFIELD(53, 2) /* index 61 */, - TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_LD2U, TILEGX_OPC_PREFETCH_L2, - BITFIELD(56, 2) /* index 66 */, - CHILD(71), CHILD(74), CHILD(90), CHILD(93), - BITFIELD(26, 1) /* index 71 */, - TILEGX_OPC_NONE, TILEGX_OPC_LD4S, - BITFIELD(26, 1) /* index 74 */, - TILEGX_OPC_NONE, CHILD(77), - BITFIELD(51, 2) /* index 77 */, - TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(82), - BITFIELD(53, 2) /* index 82 */, - TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, TILEGX_OPC_LD4S, CHILD(87), - BITFIELD(55, 1) /* index 87 */, - TILEGX_OPC_LD4S, TILEGX_OPC_PREFETCH_L3_FAULT, - BITFIELD(26, 1) /* index 90 */, - TILEGX_OPC_LD4U, TILEGX_OPC_LD, - BITFIELD(26, 1) /* index 93 */, - CHILD(96), TILEGX_OPC_LD, - BITFIELD(51, 2) /* index 96 */, - TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(101), - BITFIELD(53, 2) /* index 101 */, - TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, TILEGX_OPC_LD4U, CHILD(106), - BITFIELD(55, 1) /* index 106 */, - TILEGX_OPC_LD4U, TILEGX_OPC_PREFETCH_L3, - BITFIELD(26, 1) /* index 109 */, - CHILD(112), CHILD(115), - BITFIELD(57, 1) /* index 112 */, - TILEGX_OPC_ST1, TILEGX_OPC_ST4, - BITFIELD(57, 1) /* index 115 */, - TILEGX_OPC_ST2, TILEGX_OPC_ST, -}; - -#undef BITFIELD -#undef CHILD - -const unsigned short * const -tilegx_bundle_decoder_fsms[TILEGX_NUM_PIPELINE_ENCODINGS] = -{ - decode_X0_fsm, - decode_X1_fsm, - decode_Y0_fsm, - decode_Y1_fsm, - decode_Y2_fsm -}; - -const struct tilegx_operand tilegx_operands[35] = -{ - { - TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM8_X0), - 8, 1, 0, 0, 0, 0, - create_Imm8_X0, get_Imm8_X0 - }, - { - TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM8_X1), - 8, 1, 0, 0, 0, 0, - create_Imm8_X1, get_Imm8_X1 - }, - { - TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM8_Y0), - 8, 1, 0, 0, 0, 0, - create_Imm8_Y0, get_Imm8_Y0 - }, - { - TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM8_Y1), - 8, 1, 0, 0, 0, 0, - create_Imm8_Y1, get_Imm8_Y1 - }, - { - TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM16_X0_HW0_LAST), - 16, 1, 0, 0, 0, 0, - create_Imm16_X0, get_Imm16_X0 - }, - { - TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_IMM16_X1_HW0_LAST), - 16, 1, 0, 0, 0, 0, - create_Imm16_X1, get_Imm16_X1 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 0, 1, 0, 0, - create_Dest_X1, get_Dest_X1 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 1, 0, 0, 0, - create_SrcA_X1, get_SrcA_X1 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 0, 1, 0, 0, - create_Dest_X0, get_Dest_X0 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 1, 0, 0, 0, - create_SrcA_X0, get_SrcA_X0 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 0, 1, 0, 0, - create_Dest_Y0, get_Dest_Y0 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 1, 0, 0, 0, - create_SrcA_Y0, get_SrcA_Y0 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 0, 1, 0, 0, - create_Dest_Y1, get_Dest_Y1 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 1, 0, 0, 0, - create_SrcA_Y1, get_SrcA_Y1 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 1, 0, 0, 0, - create_SrcA_Y2, get_SrcA_Y2 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 1, 1, 0, 0, - create_SrcA_X1, get_SrcA_X1 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 1, 0, 0, 0, - create_SrcB_X0, get_SrcB_X0 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 1, 0, 0, 0, - create_SrcB_X1, get_SrcB_X1 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 1, 0, 0, 0, - create_SrcB_Y0, get_SrcB_Y0 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 1, 0, 0, 0, - create_SrcB_Y1, get_SrcB_Y1 - }, - { - TILEGX_OP_TYPE_ADDRESS, BFD_RELOC(TILEGX_BROFF_X1), - 17, 1, 0, 0, 1, TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES, - create_BrOff_X1, get_BrOff_X1 - }, - { - TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_MMSTART_X0), - 6, 0, 0, 0, 0, 0, - create_BFStart_X0, get_BFStart_X0 - }, - { - TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_MMEND_X0), - 6, 0, 0, 0, 0, 0, - create_BFEnd_X0, get_BFEnd_X0 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 1, 1, 0, 0, - create_Dest_X0, get_Dest_X0 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 1, 1, 0, 0, - create_Dest_Y0, get_Dest_Y0 - }, - { - TILEGX_OP_TYPE_ADDRESS, BFD_RELOC(TILEGX_JUMPOFF_X1), - 27, 1, 0, 0, 1, TILEGX_LOG2_BUNDLE_ALIGNMENT_IN_BYTES, - create_JumpOff_X1, get_JumpOff_X1 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 0, 1, 0, 0, - create_SrcBDest_Y2, get_SrcBDest_Y2 - }, - { - TILEGX_OP_TYPE_SPR, BFD_RELOC(TILEGX_MF_IMM14_X1), - 14, 0, 0, 0, 0, 0, - create_MF_Imm14_X1, get_MF_Imm14_X1 - }, - { - TILEGX_OP_TYPE_SPR, BFD_RELOC(TILEGX_MT_IMM14_X1), - 14, 0, 0, 0, 0, 0, - create_MT_Imm14_X1, get_MT_Imm14_X1 - }, - { - TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_SHAMT_X0), - 6, 0, 0, 0, 0, 0, - create_ShAmt_X0, get_ShAmt_X0 - }, - { - TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_SHAMT_X1), - 6, 0, 0, 0, 0, 0, - create_ShAmt_X1, get_ShAmt_X1 - }, - { - TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_SHAMT_Y0), - 6, 0, 0, 0, 0, 0, - create_ShAmt_Y0, get_ShAmt_Y0 - }, - { - TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_SHAMT_Y1), - 6, 0, 0, 0, 0, 0, - create_ShAmt_Y1, get_ShAmt_Y1 - }, - { - TILEGX_OP_TYPE_REGISTER, BFD_RELOC(NONE), - 6, 0, 1, 0, 0, 0, - create_SrcBDest_Y2, get_SrcBDest_Y2 - }, - { - TILEGX_OP_TYPE_IMMEDIATE, BFD_RELOC(TILEGX_DEST_IMM8_X1), - 8, 1, 0, 0, 0, 0, - create_Dest_Imm8_X1, get_Dest_Imm8_X1 - } -}; - -/* Given a set of bundle bits and a specific pipe, returns which - * instruction the bundle contains in that pipe. - */ -const struct tilegx_opcode * -find_opcode(tilegx_bundle_bits bits, tilegx_pipeline pipe) -{ - const unsigned short *table = tilegx_bundle_decoder_fsms[pipe]; - int index = 0; - - while (1) - { - unsigned short bitspec = table[index]; - unsigned int bitfield = - ((unsigned int)(bits >> (bitspec & 63))) & (bitspec >> 6); - - unsigned short next = table[index + 1 + bitfield]; - if (next <= TILEGX_OPC_NONE) - return &tilegx_opcodes[next]; - - index = next - TILEGX_OPC_NONE; - } -} - -int -parse_insn_tilegx(tilegx_bundle_bits bits, - unsigned long long pc, - struct tilegx_decoded_instruction - decoded[TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE]) -{ - int num_instructions = 0; - int pipe; - - int min_pipe, max_pipe; - if ((bits & TILEGX_BUNDLE_MODE_MASK) == 0) - { - min_pipe = TILEGX_PIPELINE_X0; - max_pipe = TILEGX_PIPELINE_X1; - } - else - { - min_pipe = TILEGX_PIPELINE_Y0; - max_pipe = TILEGX_PIPELINE_Y2; - } - - /* For each pipe, find an instruction that fits. */ - for (pipe = min_pipe; pipe <= max_pipe; pipe++) - { - const struct tilegx_opcode *opc; - struct tilegx_decoded_instruction *d; - int i; - - d = &decoded[num_instructions++]; - opc = find_opcode (bits, (tilegx_pipeline)pipe); - d->opcode = opc; - - /* Decode each operand, sign extending, etc. as appropriate. */ - for (i = 0; i < opc->num_operands; i++) - { - const struct tilegx_operand *op = - &tilegx_operands[opc->operands[pipe][i]]; - int raw_opval = op->extract (bits); - long long opval; - - if (op->is_signed) - { - /* Sign-extend the operand. */ - int shift = (int)((sizeof(int) * 8) - op->num_bits); - raw_opval = (raw_opval << shift) >> shift; - } - - /* Adjust PC-relative scaled branch offsets. */ - if (op->type == TILEGX_OP_TYPE_ADDRESS) - opval = (raw_opval * TILEGX_BUNDLE_SIZE_IN_BYTES) + pc; - else - opval = raw_opval; - - /* Record the final value. */ - d->operands[i] = op; - d->operand_values[i] = opval; - } - } - - return num_instructions; -} - -struct tilegx_spr -{ - /* The number */ - int number; - - /* The name */ - const char *name; -}; - -static int -tilegx_spr_compare (const void *a_ptr, const void *b_ptr) -{ - const struct tilegx_spr *a = (const struct tilegx_spr *) a_ptr; - const struct tilegx_spr *b = (const struct tilegx_spr *) b_ptr; - return (a->number - b->number); -} - -const struct tilegx_spr tilegx_sprs[] = { - { 0, "MPL_MEM_ERROR_SET_0" }, - { 1, "MPL_MEM_ERROR_SET_1" }, - { 2, "MPL_MEM_ERROR_SET_2" }, - { 3, "MPL_MEM_ERROR_SET_3" }, - { 4, "MPL_MEM_ERROR" }, - { 5, "MEM_ERROR_CBOX_ADDR" }, - { 6, "MEM_ERROR_CBOX_STATUS" }, - { 7, "MEM_ERROR_ENABLE" }, - { 8, "MEM_ERROR_MBOX_ADDR" }, - { 9, "MEM_ERROR_MBOX_STATUS" }, - { 10, "SBOX_ERROR" }, - { 11, "XDN_DEMUX_ERROR" }, - { 256, "MPL_SINGLE_STEP_3_SET_0" }, - { 257, "MPL_SINGLE_STEP_3_SET_1" }, - { 258, "MPL_SINGLE_STEP_3_SET_2" }, - { 259, "MPL_SINGLE_STEP_3_SET_3" }, - { 260, "MPL_SINGLE_STEP_3" }, - { 261, "SINGLE_STEP_CONTROL_3" }, - { 512, "MPL_SINGLE_STEP_2_SET_0" }, - { 513, "MPL_SINGLE_STEP_2_SET_1" }, - { 514, "MPL_SINGLE_STEP_2_SET_2" }, - { 515, "MPL_SINGLE_STEP_2_SET_3" }, - { 516, "MPL_SINGLE_STEP_2" }, - { 517, "SINGLE_STEP_CONTROL_2" }, - { 768, "MPL_SINGLE_STEP_1_SET_0" }, - { 769, "MPL_SINGLE_STEP_1_SET_1" }, - { 770, "MPL_SINGLE_STEP_1_SET_2" }, - { 771, "MPL_SINGLE_STEP_1_SET_3" }, - { 772, "MPL_SINGLE_STEP_1" }, - { 773, "SINGLE_STEP_CONTROL_1" }, - { 1024, "MPL_SINGLE_STEP_0_SET_0" }, - { 1025, "MPL_SINGLE_STEP_0_SET_1" }, - { 1026, "MPL_SINGLE_STEP_0_SET_2" }, - { 1027, "MPL_SINGLE_STEP_0_SET_3" }, - { 1028, "MPL_SINGLE_STEP_0" }, - { 1029, "SINGLE_STEP_CONTROL_0" }, - { 1280, "MPL_IDN_COMPLETE_SET_0" }, - { 1281, "MPL_IDN_COMPLETE_SET_1" }, - { 1282, "MPL_IDN_COMPLETE_SET_2" }, - { 1283, "MPL_IDN_COMPLETE_SET_3" }, - { 1284, "MPL_IDN_COMPLETE" }, - { 1285, "IDN_COMPLETE_PENDING" }, - { 1536, "MPL_UDN_COMPLETE_SET_0" }, - { 1537, "MPL_UDN_COMPLETE_SET_1" }, - { 1538, "MPL_UDN_COMPLETE_SET_2" }, - { 1539, "MPL_UDN_COMPLETE_SET_3" }, - { 1540, "MPL_UDN_COMPLETE" }, - { 1541, "UDN_COMPLETE_PENDING" }, - { 1792, "MPL_ITLB_MISS_SET_0" }, - { 1793, "MPL_ITLB_MISS_SET_1" }, - { 1794, "MPL_ITLB_MISS_SET_2" }, - { 1795, "MPL_ITLB_MISS_SET_3" }, - { 1796, "MPL_ITLB_MISS" }, - { 1797, "ITLB_TSB_BASE_ADDR_0" }, - { 1798, "ITLB_TSB_BASE_ADDR_1" }, - { 1920, "ITLB_CURRENT_ATTR" }, - { 1921, "ITLB_CURRENT_PA" }, - { 1922, "ITLB_CURRENT_VA" }, - { 1923, "ITLB_INDEX" }, - { 1924, "ITLB_MATCH_0" }, - { 1925, "ITLB_PERF" }, - { 1926, "ITLB_PR" }, - { 1927, "ITLB_TSB_ADDR_0" }, - { 1928, "ITLB_TSB_ADDR_1" }, - { 1929, "ITLB_TSB_FILL_CURRENT_ATTR" }, - { 1930, "ITLB_TSB_FILL_MATCH" }, - { 1931, "NUMBER_ITLB" }, - { 1932, "REPLACEMENT_ITLB" }, - { 1933, "WIRED_ITLB" }, - { 2048, "MPL_ILL_SET_0" }, - { 2049, "MPL_ILL_SET_1" }, - { 2050, "MPL_ILL_SET_2" }, - { 2051, "MPL_ILL_SET_3" }, - { 2052, "MPL_ILL" }, - { 2304, "MPL_GPV_SET_0" }, - { 2305, "MPL_GPV_SET_1" }, - { 2306, "MPL_GPV_SET_2" }, - { 2307, "MPL_GPV_SET_3" }, - { 2308, "MPL_GPV" }, - { 2309, "GPV_REASON" }, - { 2560, "MPL_IDN_ACCESS_SET_0" }, - { 2561, "MPL_IDN_ACCESS_SET_1" }, - { 2562, "MPL_IDN_ACCESS_SET_2" }, - { 2563, "MPL_IDN_ACCESS_SET_3" }, - { 2564, "MPL_IDN_ACCESS" }, - { 2565, "IDN_DEMUX_COUNT_0" }, - { 2566, "IDN_DEMUX_COUNT_1" }, - { 2567, "IDN_FLUSH_EGRESS" }, - { 2568, "IDN_PENDING" }, - { 2569, "IDN_ROUTE_ORDER" }, - { 2570, "IDN_SP_FIFO_CNT" }, - { 2688, "IDN_DATA_AVAIL" }, - { 2816, "MPL_UDN_ACCESS_SET_0" }, - { 2817, "MPL_UDN_ACCESS_SET_1" }, - { 2818, "MPL_UDN_ACCESS_SET_2" }, - { 2819, "MPL_UDN_ACCESS_SET_3" }, - { 2820, "MPL_UDN_ACCESS" }, - { 2821, "UDN_DEMUX_COUNT_0" }, - { 2822, "UDN_DEMUX_COUNT_1" }, - { 2823, "UDN_DEMUX_COUNT_2" }, - { 2824, "UDN_DEMUX_COUNT_3" }, - { 2825, "UDN_FLUSH_EGRESS" }, - { 2826, "UDN_PENDING" }, - { 2827, "UDN_ROUTE_ORDER" }, - { 2828, "UDN_SP_FIFO_CNT" }, - { 2944, "UDN_DATA_AVAIL" }, - { 3072, "MPL_SWINT_3_SET_0" }, - { 3073, "MPL_SWINT_3_SET_1" }, - { 3074, "MPL_SWINT_3_SET_2" }, - { 3075, "MPL_SWINT_3_SET_3" }, - { 3076, "MPL_SWINT_3" }, - { 3328, "MPL_SWINT_2_SET_0" }, - { 3329, "MPL_SWINT_2_SET_1" }, - { 3330, "MPL_SWINT_2_SET_2" }, - { 3331, "MPL_SWINT_2_SET_3" }, - { 3332, "MPL_SWINT_2" }, - { 3584, "MPL_SWINT_1_SET_0" }, - { 3585, "MPL_SWINT_1_SET_1" }, - { 3586, "MPL_SWINT_1_SET_2" }, - { 3587, "MPL_SWINT_1_SET_3" }, - { 3588, "MPL_SWINT_1" }, - { 3840, "MPL_SWINT_0_SET_0" }, - { 3841, "MPL_SWINT_0_SET_1" }, - { 3842, "MPL_SWINT_0_SET_2" }, - { 3843, "MPL_SWINT_0_SET_3" }, - { 3844, "MPL_SWINT_0" }, - { 4096, "MPL_ILL_TRANS_SET_0" }, - { 4097, "MPL_ILL_TRANS_SET_1" }, - { 4098, "MPL_ILL_TRANS_SET_2" }, - { 4099, "MPL_ILL_TRANS_SET_3" }, - { 4100, "MPL_ILL_TRANS" }, - { 4101, "ILL_TRANS_REASON" }, - { 4102, "ILL_VA_PC" }, - { 4352, "MPL_UNALIGN_DATA_SET_0" }, - { 4353, "MPL_UNALIGN_DATA_SET_1" }, - { 4354, "MPL_UNALIGN_DATA_SET_2" }, - { 4355, "MPL_UNALIGN_DATA_SET_3" }, - { 4356, "MPL_UNALIGN_DATA" }, - { 4608, "MPL_DTLB_MISS_SET_0" }, - { 4609, "MPL_DTLB_MISS_SET_1" }, - { 4610, "MPL_DTLB_MISS_SET_2" }, - { 4611, "MPL_DTLB_MISS_SET_3" }, - { 4612, "MPL_DTLB_MISS" }, - { 4613, "DTLB_TSB_BASE_ADDR_0" }, - { 4614, "DTLB_TSB_BASE_ADDR_1" }, - { 4736, "AAR" }, - { 4737, "CACHE_PINNED_WAYS" }, - { 4738, "DTLB_BAD_ADDR" }, - { 4739, "DTLB_BAD_ADDR_REASON" }, - { 4740, "DTLB_CURRENT_ATTR" }, - { 4741, "DTLB_CURRENT_PA" }, - { 4742, "DTLB_CURRENT_VA" }, - { 4743, "DTLB_INDEX" }, - { 4744, "DTLB_MATCH_0" }, - { 4745, "DTLB_PERF" }, - { 4746, "DTLB_TSB_ADDR_0" }, - { 4747, "DTLB_TSB_ADDR_1" }, - { 4748, "DTLB_TSB_FILL_CURRENT_ATTR" }, - { 4749, "DTLB_TSB_FILL_MATCH" }, - { 4750, "NUMBER_DTLB" }, - { 4751, "REPLACEMENT_DTLB" }, - { 4752, "WIRED_DTLB" }, - { 4864, "MPL_DTLB_ACCESS_SET_0" }, - { 4865, "MPL_DTLB_ACCESS_SET_1" }, - { 4866, "MPL_DTLB_ACCESS_SET_2" }, - { 4867, "MPL_DTLB_ACCESS_SET_3" }, - { 4868, "MPL_DTLB_ACCESS" }, - { 5120, "MPL_IDN_FIREWALL_SET_0" }, - { 5121, "MPL_IDN_FIREWALL_SET_1" }, - { 5122, "MPL_IDN_FIREWALL_SET_2" }, - { 5123, "MPL_IDN_FIREWALL_SET_3" }, - { 5124, "MPL_IDN_FIREWALL" }, - { 5125, "IDN_DIRECTION_PROTECT" }, - { 5376, "MPL_UDN_FIREWALL_SET_0" }, - { 5377, "MPL_UDN_FIREWALL_SET_1" }, - { 5378, "MPL_UDN_FIREWALL_SET_2" }, - { 5379, "MPL_UDN_FIREWALL_SET_3" }, - { 5380, "MPL_UDN_FIREWALL" }, - { 5381, "UDN_DIRECTION_PROTECT" }, - { 5632, "MPL_TILE_TIMER_SET_0" }, - { 5633, "MPL_TILE_TIMER_SET_1" }, - { 5634, "MPL_TILE_TIMER_SET_2" }, - { 5635, "MPL_TILE_TIMER_SET_3" }, - { 5636, "MPL_TILE_TIMER" }, - { 5637, "TILE_TIMER_CONTROL" }, - { 5888, "MPL_AUX_TILE_TIMER_SET_0" }, - { 5889, "MPL_AUX_TILE_TIMER_SET_1" }, - { 5890, "MPL_AUX_TILE_TIMER_SET_2" }, - { 5891, "MPL_AUX_TILE_TIMER_SET_3" }, - { 5892, "MPL_AUX_TILE_TIMER" }, - { 5893, "AUX_TILE_TIMER_CONTROL" }, - { 6144, "MPL_IDN_TIMER_SET_0" }, - { 6145, "MPL_IDN_TIMER_SET_1" }, - { 6146, "MPL_IDN_TIMER_SET_2" }, - { 6147, "MPL_IDN_TIMER_SET_3" }, - { 6148, "MPL_IDN_TIMER" }, - { 6149, "IDN_DEADLOCK_COUNT" }, - { 6150, "IDN_DEADLOCK_TIMEOUT" }, - { 6400, "MPL_UDN_TIMER_SET_0" }, - { 6401, "MPL_UDN_TIMER_SET_1" }, - { 6402, "MPL_UDN_TIMER_SET_2" }, - { 6403, "MPL_UDN_TIMER_SET_3" }, - { 6404, "MPL_UDN_TIMER" }, - { 6405, "UDN_DEADLOCK_COUNT" }, - { 6406, "UDN_DEADLOCK_TIMEOUT" }, - { 6656, "MPL_IDN_AVAIL_SET_0" }, - { 6657, "MPL_IDN_AVAIL_SET_1" }, - { 6658, "MPL_IDN_AVAIL_SET_2" }, - { 6659, "MPL_IDN_AVAIL_SET_3" }, - { 6660, "MPL_IDN_AVAIL" }, - { 6661, "IDN_AVAIL_EN" }, - { 6912, "MPL_UDN_AVAIL_SET_0" }, - { 6913, "MPL_UDN_AVAIL_SET_1" }, - { 6914, "MPL_UDN_AVAIL_SET_2" }, - { 6915, "MPL_UDN_AVAIL_SET_3" }, - { 6916, "MPL_UDN_AVAIL" }, - { 6917, "UDN_AVAIL_EN" }, - { 7168, "MPL_IPI_3_SET_0" }, - { 7169, "MPL_IPI_3_SET_1" }, - { 7170, "MPL_IPI_3_SET_2" }, - { 7171, "MPL_IPI_3_SET_3" }, - { 7172, "MPL_IPI_3" }, - { 7173, "IPI_EVENT_3" }, - { 7174, "IPI_EVENT_RESET_3" }, - { 7175, "IPI_EVENT_SET_3" }, - { 7176, "IPI_MASK_3" }, - { 7177, "IPI_MASK_RESET_3" }, - { 7178, "IPI_MASK_SET_3" }, - { 7424, "MPL_IPI_2_SET_0" }, - { 7425, "MPL_IPI_2_SET_1" }, - { 7426, "MPL_IPI_2_SET_2" }, - { 7427, "MPL_IPI_2_SET_3" }, - { 7428, "MPL_IPI_2" }, - { 7429, "IPI_EVENT_2" }, - { 7430, "IPI_EVENT_RESET_2" }, - { 7431, "IPI_EVENT_SET_2" }, - { 7432, "IPI_MASK_2" }, - { 7433, "IPI_MASK_RESET_2" }, - { 7434, "IPI_MASK_SET_2" }, - { 7680, "MPL_IPI_1_SET_0" }, - { 7681, "MPL_IPI_1_SET_1" }, - { 7682, "MPL_IPI_1_SET_2" }, - { 7683, "MPL_IPI_1_SET_3" }, - { 7684, "MPL_IPI_1" }, - { 7685, "IPI_EVENT_1" }, - { 7686, "IPI_EVENT_RESET_1" }, - { 7687, "IPI_EVENT_SET_1" }, - { 7688, "IPI_MASK_1" }, - { 7689, "IPI_MASK_RESET_1" }, - { 7690, "IPI_MASK_SET_1" }, - { 7936, "MPL_IPI_0_SET_0" }, - { 7937, "MPL_IPI_0_SET_1" }, - { 7938, "MPL_IPI_0_SET_2" }, - { 7939, "MPL_IPI_0_SET_3" }, - { 7940, "MPL_IPI_0" }, - { 7941, "IPI_EVENT_0" }, - { 7942, "IPI_EVENT_RESET_0" }, - { 7943, "IPI_EVENT_SET_0" }, - { 7944, "IPI_MASK_0" }, - { 7945, "IPI_MASK_RESET_0" }, - { 7946, "IPI_MASK_SET_0" }, - { 8192, "MPL_PERF_COUNT_SET_0" }, - { 8193, "MPL_PERF_COUNT_SET_1" }, - { 8194, "MPL_PERF_COUNT_SET_2" }, - { 8195, "MPL_PERF_COUNT_SET_3" }, - { 8196, "MPL_PERF_COUNT" }, - { 8197, "PERF_COUNT_0" }, - { 8198, "PERF_COUNT_1" }, - { 8199, "PERF_COUNT_CTL" }, - { 8200, "PERF_COUNT_DN_CTL" }, - { 8201, "PERF_COUNT_STS" }, - { 8202, "WATCH_MASK" }, - { 8203, "WATCH_VAL" }, - { 8448, "MPL_AUX_PERF_COUNT_SET_0" }, - { 8449, "MPL_AUX_PERF_COUNT_SET_1" }, - { 8450, "MPL_AUX_PERF_COUNT_SET_2" }, - { 8451, "MPL_AUX_PERF_COUNT_SET_3" }, - { 8452, "MPL_AUX_PERF_COUNT" }, - { 8453, "AUX_PERF_COUNT_0" }, - { 8454, "AUX_PERF_COUNT_1" }, - { 8455, "AUX_PERF_COUNT_CTL" }, - { 8456, "AUX_PERF_COUNT_STS" }, - { 8704, "MPL_INTCTRL_3_SET_0" }, - { 8705, "MPL_INTCTRL_3_SET_1" }, - { 8706, "MPL_INTCTRL_3_SET_2" }, - { 8707, "MPL_INTCTRL_3_SET_3" }, - { 8708, "MPL_INTCTRL_3" }, - { 8709, "INTCTRL_3_STATUS" }, - { 8710, "INTERRUPT_MASK_3" }, - { 8711, "INTERRUPT_MASK_RESET_3" }, - { 8712, "INTERRUPT_MASK_SET_3" }, - { 8713, "INTERRUPT_VECTOR_BASE_3" }, - { 8714, "SINGLE_STEP_EN_0_3" }, - { 8715, "SINGLE_STEP_EN_1_3" }, - { 8716, "SINGLE_STEP_EN_2_3" }, - { 8717, "SINGLE_STEP_EN_3_3" }, - { 8832, "EX_CONTEXT_3_0" }, - { 8833, "EX_CONTEXT_3_1" }, - { 8834, "SYSTEM_SAVE_3_0" }, - { 8835, "SYSTEM_SAVE_3_1" }, - { 8836, "SYSTEM_SAVE_3_2" }, - { 8837, "SYSTEM_SAVE_3_3" }, - { 8960, "MPL_INTCTRL_2_SET_0" }, - { 8961, "MPL_INTCTRL_2_SET_1" }, - { 8962, "MPL_INTCTRL_2_SET_2" }, - { 8963, "MPL_INTCTRL_2_SET_3" }, - { 8964, "MPL_INTCTRL_2" }, - { 8965, "INTCTRL_2_STATUS" }, - { 8966, "INTERRUPT_MASK_2" }, - { 8967, "INTERRUPT_MASK_RESET_2" }, - { 8968, "INTERRUPT_MASK_SET_2" }, - { 8969, "INTERRUPT_VECTOR_BASE_2" }, - { 8970, "SINGLE_STEP_EN_0_2" }, - { 8971, "SINGLE_STEP_EN_1_2" }, - { 8972, "SINGLE_STEP_EN_2_2" }, - { 8973, "SINGLE_STEP_EN_3_2" }, - { 9088, "EX_CONTEXT_2_0" }, - { 9089, "EX_CONTEXT_2_1" }, - { 9090, "SYSTEM_SAVE_2_0" }, - { 9091, "SYSTEM_SAVE_2_1" }, - { 9092, "SYSTEM_SAVE_2_2" }, - { 9093, "SYSTEM_SAVE_2_3" }, - { 9216, "MPL_INTCTRL_1_SET_0" }, - { 9217, "MPL_INTCTRL_1_SET_1" }, - { 9218, "MPL_INTCTRL_1_SET_2" }, - { 9219, "MPL_INTCTRL_1_SET_3" }, - { 9220, "MPL_INTCTRL_1" }, - { 9221, "INTCTRL_1_STATUS" }, - { 9222, "INTERRUPT_MASK_1" }, - { 9223, "INTERRUPT_MASK_RESET_1" }, - { 9224, "INTERRUPT_MASK_SET_1" }, - { 9225, "INTERRUPT_VECTOR_BASE_1" }, - { 9226, "SINGLE_STEP_EN_0_1" }, - { 9227, "SINGLE_STEP_EN_1_1" }, - { 9228, "SINGLE_STEP_EN_2_1" }, - { 9229, "SINGLE_STEP_EN_3_1" }, - { 9344, "EX_CONTEXT_1_0" }, - { 9345, "EX_CONTEXT_1_1" }, - { 9346, "SYSTEM_SAVE_1_0" }, - { 9347, "SYSTEM_SAVE_1_1" }, - { 9348, "SYSTEM_SAVE_1_2" }, - { 9349, "SYSTEM_SAVE_1_3" }, - { 9472, "MPL_INTCTRL_0_SET_0" }, - { 9473, "MPL_INTCTRL_0_SET_1" }, - { 9474, "MPL_INTCTRL_0_SET_2" }, - { 9475, "MPL_INTCTRL_0_SET_3" }, - { 9476, "MPL_INTCTRL_0" }, - { 9477, "INTCTRL_0_STATUS" }, - { 9478, "INTERRUPT_MASK_0" }, - { 9479, "INTERRUPT_MASK_RESET_0" }, - { 9480, "INTERRUPT_MASK_SET_0" }, - { 9481, "INTERRUPT_VECTOR_BASE_0" }, - { 9482, "SINGLE_STEP_EN_0_0" }, - { 9483, "SINGLE_STEP_EN_1_0" }, - { 9484, "SINGLE_STEP_EN_2_0" }, - { 9485, "SINGLE_STEP_EN_3_0" }, - { 9600, "EX_CONTEXT_0_0" }, - { 9601, "EX_CONTEXT_0_1" }, - { 9602, "SYSTEM_SAVE_0_0" }, - { 9603, "SYSTEM_SAVE_0_1" }, - { 9604, "SYSTEM_SAVE_0_2" }, - { 9605, "SYSTEM_SAVE_0_3" }, - { 9728, "MPL_BOOT_ACCESS_SET_0" }, - { 9729, "MPL_BOOT_ACCESS_SET_1" }, - { 9730, "MPL_BOOT_ACCESS_SET_2" }, - { 9731, "MPL_BOOT_ACCESS_SET_3" }, - { 9732, "MPL_BOOT_ACCESS" }, - { 9733, "BIG_ENDIAN_CONFIG" }, - { 9734, "CACHE_INVALIDATION_COMPRESSION_MODE" }, - { 9735, "CACHE_INVALIDATION_MASK_0" }, - { 9736, "CACHE_INVALIDATION_MASK_1" }, - { 9737, "CACHE_INVALIDATION_MASK_2" }, - { 9738, "CBOX_CACHEASRAM_CONFIG" }, - { 9739, "CBOX_CACHE_CONFIG" }, - { 9740, "CBOX_HOME_MAP_ADDR" }, - { 9741, "CBOX_HOME_MAP_DATA" }, - { 9742, "CBOX_MMAP_0" }, - { 9743, "CBOX_MMAP_1" }, - { 9744, "CBOX_MMAP_2" }, - { 9745, "CBOX_MMAP_3" }, - { 9746, "CBOX_MSR" }, - { 9747, "DIAG_BCST_CTL" }, - { 9748, "DIAG_BCST_MASK" }, - { 9749, "DIAG_BCST_TRIGGER" }, - { 9750, "DIAG_MUX_CTL" }, - { 9751, "DIAG_TRACE_CTL" }, - { 9752, "DIAG_TRACE_DATA" }, - { 9753, "DIAG_TRACE_STS" }, - { 9754, "IDN_DEMUX_BUF_THRESH" }, - { 9755, "L1_I_PIN_WAY_0" }, - { 9756, "MEM_ROUTE_ORDER" }, - { 9757, "MEM_STRIPE_CONFIG" }, - { 9758, "PERF_COUNT_PLS" }, - { 9759, "PSEUDO_RANDOM_NUMBER_MODIFY" }, - { 9760, "QUIESCE_CTL" }, - { 9761, "RSHIM_COORD" }, - { 9762, "SBOX_CONFIG" }, - { 9763, "UDN_DEMUX_BUF_THRESH" }, - { 9764, "XDN_CORE_STARVATION_COUNT" }, - { 9765, "XDN_ROUND_ROBIN_ARB_CTL" }, - { 9856, "CYCLE_MODIFY" }, - { 9857, "I_AAR" }, - { 9984, "MPL_WORLD_ACCESS_SET_0" }, - { 9985, "MPL_WORLD_ACCESS_SET_1" }, - { 9986, "MPL_WORLD_ACCESS_SET_2" }, - { 9987, "MPL_WORLD_ACCESS_SET_3" }, - { 9988, "MPL_WORLD_ACCESS" }, - { 9989, "DONE" }, - { 9990, "DSTREAM_PF" }, - { 9991, "FAIL" }, - { 9992, "INTERRUPT_CRITICAL_SECTION" }, - { 9993, "PASS" }, - { 9994, "PSEUDO_RANDOM_NUMBER" }, - { 9995, "TILE_COORD" }, - { 9996, "TILE_RTF_HWM" }, - { 10112, "CMPEXCH_VALUE" }, - { 10113, "CYCLE" }, - { 10114, "EVENT_BEGIN" }, - { 10115, "EVENT_END" }, - { 10116, "PROC_STATUS" }, - { 10117, "SIM_CONTROL" }, - { 10118, "SIM_SOCKET" }, - { 10119, "STATUS_SATURATE" }, - { 10240, "MPL_I_ASID_SET_0" }, - { 10241, "MPL_I_ASID_SET_1" }, - { 10242, "MPL_I_ASID_SET_2" }, - { 10243, "MPL_I_ASID_SET_3" }, - { 10244, "MPL_I_ASID" }, - { 10245, "I_ASID" }, - { 10496, "MPL_D_ASID_SET_0" }, - { 10497, "MPL_D_ASID_SET_1" }, - { 10498, "MPL_D_ASID_SET_2" }, - { 10499, "MPL_D_ASID_SET_3" }, - { 10500, "MPL_D_ASID" }, - { 10501, "D_ASID" }, - { 10752, "MPL_DOUBLE_FAULT_SET_0" }, - { 10753, "MPL_DOUBLE_FAULT_SET_1" }, - { 10754, "MPL_DOUBLE_FAULT_SET_2" }, - { 10755, "MPL_DOUBLE_FAULT_SET_3" }, - { 10756, "MPL_DOUBLE_FAULT" }, - { 10757, "LAST_INTERRUPT_REASON" }, -}; - -const int tilegx_num_sprs = 441; - -const char * -get_tilegx_spr_name (int num) -{ - void *result; - struct tilegx_spr key; - - key.number = num; - result = bsearch((const void *) &key, (const void *) tilegx_sprs, - tilegx_num_sprs, sizeof (struct tilegx_spr), - tilegx_spr_compare); - - if (result == NULL) - { - return (NULL); - } - else - { - struct tilegx_spr *result_ptr = (struct tilegx_spr *) result; - return (result_ptr->name); - } -} - -int -print_insn_tilegx (unsigned char * memaddr) -{ - struct tilegx_decoded_instruction - decoded[TILEGX_MAX_INSTRUCTIONS_PER_BUNDLE]; - unsigned char opbuf[TILEGX_BUNDLE_SIZE_IN_BYTES]; - int i, num_instructions, num_printed; - tilegx_mnemonic padding_mnemonic; - - memcpy((void *)opbuf, (void *)memaddr, TILEGX_BUNDLE_SIZE_IN_BYTES); - - /* Parse the instructions in the bundle. */ - num_instructions = - parse_insn_tilegx (*(unsigned long long *)opbuf, (unsigned long long)memaddr, decoded); - - /* Print the instructions in the bundle. */ - printf("{ "); - num_printed = 0; - - /* Determine which nop opcode is used for padding and should be skipped. */ - padding_mnemonic = TILEGX_OPC_FNOP; - for (i = 0; i < num_instructions; i++) - { - if (!decoded[i].opcode->can_bundle) - { - /* Instructions that cannot be bundled are padded out with nops, - rather than fnops. Displaying them is always clutter. */ - padding_mnemonic = TILEGX_OPC_NOP; - break; - } - } - - for (i = 0; i < num_instructions; i++) - { - const struct tilegx_opcode *opcode = decoded[i].opcode; - const char *name; - int j; - - /* Do not print out fnops, unless everything is an fnop, in - which case we will print out just the last one. */ - if (opcode->mnemonic == padding_mnemonic - && (num_printed > 0 || i + 1 < num_instructions)) - continue; - - if (num_printed > 0) - printf(" ; "); - ++num_printed; - - name = opcode->name; - if (name == NULL) - name = ""; - printf("%s", name); - - for (j = 0; j < opcode->num_operands; j++) - { - unsigned long long num; - const struct tilegx_operand *op; - const char *spr_name; - - if (j > 0) - printf (","); - printf (" "); - - num = decoded[i].operand_values[j]; - - op = decoded[i].operands[j]; - switch (op->type) - { - case TILEGX_OP_TYPE_REGISTER: - printf ("%s", tilegx_register_names[(int)num]); - break; - case TILEGX_OP_TYPE_SPR: - spr_name = get_tilegx_spr_name(num); - if (spr_name != NULL) - printf ("%s", spr_name); - else - printf ("%d", (int)num); - break; - case TILEGX_OP_TYPE_IMMEDIATE: - printf ("%d", (int)num); - break; - case TILEGX_OP_TYPE_ADDRESS: - printf ("0x%016llx", num); - break; - default: - abort (); - } - } - } - printf (" }\n"); - - return TILEGX_BUNDLE_SIZE_IN_BYTES; -} diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeX86_common.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeX86_common.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeX86_common.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitNativeX86_common.c 2022-01-25 17:23:44.134496327 +0000 @@ -506,7 +506,7 @@ reverse_buf(compiler); /* Second code generation pass. */ - code = (sljit_u8*)SLJIT_MALLOC_EXEC(compiler->size); + code = (sljit_u8*)SLJIT_MALLOC_EXEC(compiler->size, compiler->exec_allocator_data); PTR_FAIL_WITH_EXEC_IF(code); buf = compiler->buf; @@ -557,7 +557,7 @@ SLJIT_ASSERT(put_label->label); put_label->addr = (sljit_uw)code_ptr; #if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) - code_ptr = generate_put_label_code(put_label, code_ptr, (sljit_uw)(SLJIT_ADD_EXEC_OFFSET(code, executable_offset) + put_label->label->size)); + code_ptr = generate_put_label_code(put_label, code_ptr, (sljit_uw)SLJIT_ADD_EXEC_OFFSET(code, executable_offset) + put_label->label->size); #endif put_label = put_label->next; break; @@ -629,7 +629,11 @@ compiler->error = SLJIT_ERR_COMPILED; compiler->executable_offset = executable_offset; compiler->executable_size = code_ptr - code; - return (void*)(code + executable_offset); + + code = (sljit_u8*)SLJIT_ADD_EXEC_OFFSET(code, executable_offset); + + SLJIT_UPDATE_WX_FLAGS(code, (sljit_u8*)SLJIT_ADD_EXEC_OFFSET(code_ptr, executable_offset), 1); + return (void*)code; } SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_has_cpu_feature(sljit_s32 feature_type) @@ -725,15 +729,16 @@ #else *inst = 0xfa; #endif -#else +#else /* !SLJIT_CONFIG_X86_CET */ SLJIT_UNUSED_ARG(compiler); -#endif +#endif /* SLJIT_CONFIG_X86_CET */ return SLJIT_SUCCESS; } +#if (defined SLJIT_CONFIG_X86_CET && SLJIT_CONFIG_X86_CET) && defined (__SHSTK__) + static SLJIT_INLINE sljit_s32 emit_rdssp(struct sljit_compiler *compiler, sljit_s32 reg) { -#if (defined SLJIT_CONFIG_X86_CET && SLJIT_CONFIG_X86_CET) sljit_u8 *inst; sljit_s32 size; @@ -753,16 +758,11 @@ *inst++ = 0x0f; *inst++ = 0x1e; *inst = (0x3 << 6) | (0x1 << 3) | (reg_map[reg] & 0x7); -#else - SLJIT_UNUSED_ARG(compiler); - SLJIT_UNUSED_ARG(reg); -#endif return SLJIT_SUCCESS; } static SLJIT_INLINE sljit_s32 emit_incssp(struct sljit_compiler *compiler, sljit_s32 reg) { -#if (defined SLJIT_CONFIG_X86_CET && SLJIT_CONFIG_X86_CET) sljit_u8 *inst; sljit_s32 size; @@ -782,29 +782,28 @@ *inst++ = 0x0f; *inst++ = 0xae; *inst = (0x3 << 6) | (0x5 << 3) | (reg_map[reg] & 0x7); -#else - SLJIT_UNUSED_ARG(compiler); - SLJIT_UNUSED_ARG(reg); -#endif return SLJIT_SUCCESS; } +#endif /* SLJIT_CONFIG_X86_CET && __SHSTK__ */ + static SLJIT_INLINE sljit_s32 cpu_has_shadow_stack(void) { -#if (defined SLJIT_CONFIG_X86_CET && SLJIT_CONFIG_X86_CET) +#if (defined SLJIT_CONFIG_X86_CET && SLJIT_CONFIG_X86_CET) && defined (__SHSTK__) return _get_ssp() != 0; -#else +#else /* !SLJIT_CONFIG_X86_CET || !__SHSTK__ */ return 0; -#endif +#endif /* SLJIT_CONFIG_X86_CET && __SHSTK__ */ } static SLJIT_INLINE sljit_s32 adjust_shadow_stack(struct sljit_compiler *compiler, sljit_s32 src, sljit_sw srcw, sljit_s32 base, sljit_sw disp) { -#if (defined SLJIT_CONFIG_X86_CET && SLJIT_CONFIG_X86_CET) - sljit_u8 *inst; +#if (defined SLJIT_CONFIG_X86_CET && SLJIT_CONFIG_X86_CET) && defined (__SHSTK__) + sljit_u8 *inst, *jz_after_cmp_inst; + sljit_uw size_jz_after_cmp_inst; - sljit_s32 size_before_rdssp_inst = compiler->size; + sljit_uw size_before_rdssp_inst = compiler->size; /* Generate "RDSSP TMP_REG1". */ FAIL_IF(emit_rdssp(compiler, TMP_REG1)); @@ -839,8 +838,8 @@ FAIL_IF(!inst); INC_SIZE(2); *inst++ = get_jump_code(SLJIT_EQUAL) - 0x10; - sljit_uw size_jz_after_cmp_inst = compiler->size; - sljit_u8 *jz_after_cmp_inst = inst; + size_jz_after_cmp_inst = compiler->size; + jz_after_cmp_inst = inst; #if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64) /* REX_W is not necessary. */ @@ -860,13 +859,13 @@ *inst = size_before_rdssp_inst - compiler->size; *jz_after_cmp_inst = compiler->size - size_jz_after_cmp_inst; -#else /* SLJIT_CONFIG_X86_CET */ +#else /* !SLJIT_CONFIG_X86_CET || !__SHSTK__ */ SLJIT_UNUSED_ARG(compiler); SLJIT_UNUSED_ARG(src); SLJIT_UNUSED_ARG(srcw); SLJIT_UNUSED_ARG(base); SLJIT_UNUSED_ARG(disp); -#endif /* SLJIT_CONFIG_X86_CET */ +#endif /* SLJIT_CONFIG_X86_CET && __SHSTK__ */ return SLJIT_SUCCESS; } @@ -3123,15 +3122,21 @@ SLJIT_API_FUNC_ATTRIBUTE void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_target, sljit_sw executable_offset) { SLJIT_UNUSED_ARG(executable_offset); + + SLJIT_UPDATE_WX_FLAGS((void*)addr, (void*)(addr + sizeof(sljit_uw)), 0); #if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) sljit_unaligned_store_sw((void*)addr, new_target - (addr + 4) - (sljit_uw)executable_offset); #else sljit_unaligned_store_sw((void*)addr, (sljit_sw) new_target); #endif + SLJIT_UPDATE_WX_FLAGS((void*)addr, (void*)(addr + sizeof(sljit_uw)), 1); } SLJIT_API_FUNC_ATTRIBUTE void sljit_set_const(sljit_uw addr, sljit_sw new_constant, sljit_sw executable_offset) { SLJIT_UNUSED_ARG(executable_offset); + + SLJIT_UPDATE_WX_FLAGS((void*)addr, (void*)(addr + sizeof(sljit_sw)), 0); sljit_unaligned_store_sw((void*)addr, new_constant); + SLJIT_UPDATE_WX_FLAGS((void*)addr, (void*)(addr + sizeof(sljit_sw)), 1); } diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitProtExecAllocator.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitProtExecAllocator.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitProtExecAllocator.c 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitProtExecAllocator.c 2022-01-25 17:23:44.135496323 +0000 @@ -0,0 +1,474 @@ +/* + * Stack-less Just-In-Time compiler + * + * Copyright Zoltan Herczeg (hzmester@freemail.hu). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND CONTRIBUTORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER(S) OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + This file contains a simple executable memory allocator + + It is assumed, that executable code blocks are usually medium (or sometimes + large) memory blocks, and the allocator is not too frequently called (less + optimized than other allocators). Thus, using it as a generic allocator is + not suggested. + + How does it work: + Memory is allocated in continuous memory areas called chunks by alloc_chunk() + Chunk format: + [ block ][ block ] ... [ block ][ block terminator ] + + All blocks and the block terminator is started with block_header. The block + header contains the size of the previous and the next block. These sizes + can also contain special values. + Block size: + 0 - The block is a free_block, with a different size member. + 1 - The block is a block terminator. + n - The block is used at the moment, and the value contains its size. + Previous block size: + 0 - This is the first block of the memory chunk. + n - The size of the previous block. + + Using these size values we can go forward or backward on the block chain. + The unused blocks are stored in a chain list pointed by free_blocks. This + list is useful if we need to find a suitable memory area when the allocator + is called. + + When a block is freed, the new free block is connected to its adjacent free + blocks if possible. + + [ free block ][ used block ][ free block ] + and "used block" is freed, the three blocks are connected together: + [ one big free block ] +*/ + +/* --------------------------------------------------------------------- */ +/* System (OS) functions */ +/* --------------------------------------------------------------------- */ + +/* 64 KByte. */ +#define CHUNK_SIZE 0x10000 + +struct chunk_header { + void *executable; +}; + +/* + alloc_chunk / free_chunk : + * allocate executable system memory chunks + * the size is always divisible by CHUNK_SIZE + SLJIT_ALLOCATOR_LOCK / SLJIT_ALLOCATOR_UNLOCK : + * provided as part of sljitUtils + * only the allocator requires this lock, sljit is fully thread safe + as it only uses local variables +*/ + +#ifndef __NetBSD__ +#include +#include +#include +#include + +#ifndef O_NOATIME +#define O_NOATIME 0 +#endif + +/* this is a linux extension available since kernel 3.11 */ +#ifndef O_TMPFILE +#define O_TMPFILE 020200000 +#endif + +#ifndef _GNU_SOURCE +char *secure_getenv(const char *name); +int mkostemp(char *template, int flags); +#endif + +static SLJIT_INLINE int create_tempfile(void) +{ + int fd; + char tmp_name[256]; + size_t tmp_name_len = 0; + char *dir; + struct stat st; +#if defined(SLJIT_SINGLE_THREADED) && SLJIT_SINGLE_THREADED + mode_t mode; +#endif + +#ifdef HAVE_MEMFD_CREATE + /* this is a GNU extension, make sure to use -D_GNU_SOURCE */ + fd = memfd_create("sljit", MFD_CLOEXEC); + if (fd != -1) { + fchmod(fd, 0); + return fd; + } +#endif + + dir = secure_getenv("TMPDIR"); + + if (dir) { + tmp_name_len = strlen(dir); + if (tmp_name_len > 0 && tmp_name_len < sizeof(tmp_name)) { + if ((stat(dir, &st) == 0) && S_ISDIR(st.st_mode)) + strcpy(tmp_name, dir); + } + } + +#ifdef P_tmpdir + if (!tmp_name_len) { + tmp_name_len = strlen(P_tmpdir); + if (tmp_name_len > 0 && tmp_name_len < sizeof(tmp_name)) + strcpy(tmp_name, P_tmpdir); + } +#endif + if (!tmp_name_len) { + strcpy(tmp_name, "/tmp"); + tmp_name_len = 4; + } + + SLJIT_ASSERT(tmp_name_len > 0 && tmp_name_len < sizeof(tmp_name)); + + if (tmp_name[tmp_name_len - 1] == '/') + tmp_name[--tmp_name_len] = '\0'; + +#ifdef __linux__ + /* + * the previous trimming might had left an empty string if TMPDIR="/" + * so work around the problem below + */ + fd = open(tmp_name_len ? tmp_name : "/", + O_TMPFILE | O_EXCL | O_RDWR | O_NOATIME | O_CLOEXEC, 0); + if (fd != -1) + return fd; +#endif + + if (tmp_name_len + 7 >= sizeof(tmp_name)) + return -1; + + strcpy(tmp_name + tmp_name_len, "/XXXXXX"); +#if defined(SLJIT_SINGLE_THREADED) && SLJIT_SINGLE_THREADED + mode = umask(0777); +#endif + fd = mkostemp(tmp_name, O_CLOEXEC | O_NOATIME); +#if defined(SLJIT_SINGLE_THREADED) && SLJIT_SINGLE_THREADED + umask(mode); +#else + fchmod(fd, 0); +#endif + + if (fd == -1) + return -1; + + if (unlink(tmp_name)) { + close(fd); + return -1; + } + + return fd; +} + +static SLJIT_INLINE struct chunk_header* alloc_chunk(sljit_uw size) +{ + struct chunk_header *retval; + int fd; + + fd = create_tempfile(); + if (fd == -1) + return NULL; + + if (ftruncate(fd, size)) { + close(fd); + return NULL; + } + + retval = (struct chunk_header *)mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0); + + if (retval == MAP_FAILED) { + close(fd); + return NULL; + } + + retval->executable = mmap(NULL, size, PROT_READ | PROT_EXEC, MAP_SHARED, fd, 0); + + if (retval->executable == MAP_FAILED) { + munmap((void *)retval, size); + close(fd); + return NULL; + } + + close(fd); + return retval; +} +#else +/* + * MAP_REMAPDUP is a NetBSD extension available sinde 8.0, make sure to + * adjust your feature macros (ex: -D_NETBSD_SOURCE) as needed + */ +static SLJIT_INLINE struct chunk_header* alloc_chunk(sljit_uw size) +{ + struct chunk_header *retval; + + retval = (struct chunk_header *)mmap(NULL, size, + PROT_READ | PROT_WRITE | PROT_MPROTECT(PROT_EXEC), + MAP_ANON | MAP_SHARED, -1, 0); + + if (retval == MAP_FAILED) + return NULL; + + retval->executable = mremap(retval, size, NULL, size, MAP_REMAPDUP); + if (retval->executable == MAP_FAILED) { + munmap((void *)retval, size); + return NULL; + } + + if (mprotect(retval->executable, size, PROT_READ | PROT_EXEC) == -1) { + munmap(retval->executable, size); + munmap((void *)retval, size); + return NULL; + } + + return retval; +} +#endif /* NetBSD */ + +static SLJIT_INLINE void free_chunk(void *chunk, sljit_uw size) +{ + struct chunk_header *header = ((struct chunk_header *)chunk) - 1; + + munmap(header->executable, size); + munmap((void *)header, size); +} + +/* --------------------------------------------------------------------- */ +/* Common functions */ +/* --------------------------------------------------------------------- */ + +#define CHUNK_MASK (~(CHUNK_SIZE - 1)) + +struct block_header { + sljit_uw size; + sljit_uw prev_size; + sljit_sw executable_offset; +}; + +struct free_block { + struct block_header header; + struct free_block *next; + struct free_block *prev; + sljit_uw size; +}; + +#define AS_BLOCK_HEADER(base, offset) \ + ((struct block_header*)(((sljit_u8*)base) + offset)) +#define AS_FREE_BLOCK(base, offset) \ + ((struct free_block*)(((sljit_u8*)base) + offset)) +#define MEM_START(base) ((void*)((base) + 1)) +#define ALIGN_SIZE(size) (((size) + sizeof(struct block_header) + 7) & ~7) + +static struct free_block* free_blocks; +static sljit_uw allocated_size; +static sljit_uw total_size; + +static SLJIT_INLINE void sljit_insert_free_block(struct free_block *free_block, sljit_uw size) +{ + free_block->header.size = 0; + free_block->size = size; + + free_block->next = free_blocks; + free_block->prev = NULL; + if (free_blocks) + free_blocks->prev = free_block; + free_blocks = free_block; +} + +static SLJIT_INLINE void sljit_remove_free_block(struct free_block *free_block) +{ + if (free_block->next) + free_block->next->prev = free_block->prev; + + if (free_block->prev) + free_block->prev->next = free_block->next; + else { + SLJIT_ASSERT(free_blocks == free_block); + free_blocks = free_block->next; + } +} + +SLJIT_API_FUNC_ATTRIBUTE void* sljit_malloc_exec(sljit_uw size) +{ + struct chunk_header *chunk_header; + struct block_header *header; + struct block_header *next_header; + struct free_block *free_block; + sljit_uw chunk_size; + sljit_sw executable_offset; + + SLJIT_ALLOCATOR_LOCK(); + if (size < (64 - sizeof(struct block_header))) + size = (64 - sizeof(struct block_header)); + size = ALIGN_SIZE(size); + + free_block = free_blocks; + while (free_block) { + if (free_block->size >= size) { + chunk_size = free_block->size; + if (chunk_size > size + 64) { + /* We just cut a block from the end of the free block. */ + chunk_size -= size; + free_block->size = chunk_size; + header = AS_BLOCK_HEADER(free_block, chunk_size); + header->prev_size = chunk_size; + header->executable_offset = free_block->header.executable_offset; + AS_BLOCK_HEADER(header, size)->prev_size = size; + } + else { + sljit_remove_free_block(free_block); + header = (struct block_header*)free_block; + size = chunk_size; + } + allocated_size += size; + header->size = size; + SLJIT_ALLOCATOR_UNLOCK(); + return MEM_START(header); + } + free_block = free_block->next; + } + + chunk_size = sizeof(struct chunk_header) + sizeof(struct block_header); + chunk_size = (chunk_size + size + CHUNK_SIZE - 1) & CHUNK_MASK; + + chunk_header = alloc_chunk(chunk_size); + if (!chunk_header) { + SLJIT_ALLOCATOR_UNLOCK(); + return NULL; + } + + executable_offset = (sljit_sw)((sljit_u8*)chunk_header->executable - (sljit_u8*)chunk_header); + + chunk_size -= sizeof(struct chunk_header) + sizeof(struct block_header); + total_size += chunk_size; + + header = (struct block_header *)(chunk_header + 1); + + header->prev_size = 0; + header->executable_offset = executable_offset; + if (chunk_size > size + 64) { + /* Cut the allocated space into a free and a used block. */ + allocated_size += size; + header->size = size; + chunk_size -= size; + + free_block = AS_FREE_BLOCK(header, size); + free_block->header.prev_size = size; + free_block->header.executable_offset = executable_offset; + sljit_insert_free_block(free_block, chunk_size); + next_header = AS_BLOCK_HEADER(free_block, chunk_size); + } + else { + /* All space belongs to this allocation. */ + allocated_size += chunk_size; + header->size = chunk_size; + next_header = AS_BLOCK_HEADER(header, chunk_size); + } + next_header->size = 1; + next_header->prev_size = chunk_size; + next_header->executable_offset = executable_offset; + SLJIT_ALLOCATOR_UNLOCK(); + return MEM_START(header); +} + +SLJIT_API_FUNC_ATTRIBUTE void sljit_free_exec(void* ptr) +{ + struct block_header *header; + struct free_block* free_block; + + SLJIT_ALLOCATOR_LOCK(); + header = AS_BLOCK_HEADER(ptr, -(sljit_sw)sizeof(struct block_header)); + header = AS_BLOCK_HEADER(header, -header->executable_offset); + allocated_size -= header->size; + + /* Connecting free blocks together if possible. */ + + /* If header->prev_size == 0, free_block will equal to header. + In this case, free_block->header.size will be > 0. */ + free_block = AS_FREE_BLOCK(header, -(sljit_sw)header->prev_size); + if (SLJIT_UNLIKELY(!free_block->header.size)) { + free_block->size += header->size; + header = AS_BLOCK_HEADER(free_block, free_block->size); + header->prev_size = free_block->size; + } + else { + free_block = (struct free_block*)header; + sljit_insert_free_block(free_block, header->size); + } + + header = AS_BLOCK_HEADER(free_block, free_block->size); + if (SLJIT_UNLIKELY(!header->size)) { + free_block->size += ((struct free_block*)header)->size; + sljit_remove_free_block((struct free_block*)header); + header = AS_BLOCK_HEADER(free_block, free_block->size); + header->prev_size = free_block->size; + } + + /* The whole chunk is free. */ + if (SLJIT_UNLIKELY(!free_block->header.prev_size && header->size == 1)) { + /* If this block is freed, we still have (allocated_size / 2) free space. */ + if (total_size - free_block->size > (allocated_size * 3 / 2)) { + total_size -= free_block->size; + sljit_remove_free_block(free_block); + free_chunk(free_block, free_block->size + + sizeof(struct chunk_header) + + sizeof(struct block_header)); + } + } + + SLJIT_ALLOCATOR_UNLOCK(); +} + +SLJIT_API_FUNC_ATTRIBUTE void sljit_free_unused_memory_exec(void) +{ + struct free_block* free_block; + struct free_block* next_free_block; + + SLJIT_ALLOCATOR_LOCK(); + + free_block = free_blocks; + while (free_block) { + next_free_block = free_block->next; + if (!free_block->header.prev_size && + AS_BLOCK_HEADER(free_block, free_block->size)->size == 1) { + total_size -= free_block->size; + sljit_remove_free_block(free_block); + free_chunk(free_block, free_block->size + + sizeof(struct chunk_header) + + sizeof(struct block_header)); + } + free_block = next_free_block; + } + + SLJIT_ASSERT((total_size && free_blocks) || (!total_size && !free_blocks)); + SLJIT_ALLOCATOR_UNLOCK(); +} + +SLJIT_API_FUNC_ATTRIBUTE sljit_sw sljit_exec_offset(void* ptr) +{ + return ((struct block_header *)(ptr))[-1].executable_offset; +} diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitUtils.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitUtils.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitUtils.c 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitUtils.c 2022-01-25 17:23:44.135496323 +0000 @@ -28,131 +28,50 @@ /* Locks */ /* ------------------------------------------------------------------------ */ -#if (defined SLJIT_EXECUTABLE_ALLOCATOR && SLJIT_EXECUTABLE_ALLOCATOR) || (defined SLJIT_UTIL_GLOBAL_LOCK && SLJIT_UTIL_GLOBAL_LOCK) +/* Executable Allocator */ +#if (defined SLJIT_EXECUTABLE_ALLOCATOR && SLJIT_EXECUTABLE_ALLOCATOR) \ + && !(defined SLJIT_WX_EXECUTABLE_ALLOCATOR && SLJIT_WX_EXECUTABLE_ALLOCATOR) #if (defined SLJIT_SINGLE_THREADED && SLJIT_SINGLE_THREADED) - -#if (defined SLJIT_EXECUTABLE_ALLOCATOR && SLJIT_EXECUTABLE_ALLOCATOR) - -static SLJIT_INLINE void allocator_grab_lock(void) -{ - /* Always successful. */ -} - -static SLJIT_INLINE void allocator_release_lock(void) -{ - /* Always successful. */ -} - -#endif /* SLJIT_EXECUTABLE_ALLOCATOR */ - -#if (defined SLJIT_UTIL_GLOBAL_LOCK && SLJIT_UTIL_GLOBAL_LOCK) - -SLJIT_API_FUNC_ATTRIBUTE void SLJIT_FUNC sljit_grab_lock(void) -{ - /* Always successful. */ -} - -SLJIT_API_FUNC_ATTRIBUTE void SLJIT_FUNC sljit_release_lock(void) -{ - /* Always successful. */ -} - -#endif /* SLJIT_UTIL_GLOBAL_LOCK */ - -#elif defined(_WIN32) /* SLJIT_SINGLE_THREADED */ - -#include "windows.h" - -#if (defined SLJIT_EXECUTABLE_ALLOCATOR && SLJIT_EXECUTABLE_ALLOCATOR) - -static HANDLE allocator_mutex = 0; - -static SLJIT_INLINE void allocator_grab_lock(void) -{ - /* No idea what to do if an error occures. Static mutexes should never fail... */ - if (!allocator_mutex) - allocator_mutex = CreateMutex(NULL, TRUE, NULL); - else - WaitForSingleObject(allocator_mutex, INFINITE); -} - -static SLJIT_INLINE void allocator_release_lock(void) -{ - ReleaseMutex(allocator_mutex); -} - -#endif /* SLJIT_EXECUTABLE_ALLOCATOR */ - -#if (defined SLJIT_UTIL_GLOBAL_LOCK && SLJIT_UTIL_GLOBAL_LOCK) - -static HANDLE global_mutex = 0; - -SLJIT_API_FUNC_ATTRIBUTE void SLJIT_FUNC sljit_grab_lock(void) -{ - /* No idea what to do if an error occures. Static mutexes should never fail... */ - if (!global_mutex) - global_mutex = CreateMutex(NULL, TRUE, NULL); - else - WaitForSingleObject(global_mutex, INFINITE); -} - -SLJIT_API_FUNC_ATTRIBUTE void SLJIT_FUNC sljit_release_lock(void) -{ - ReleaseMutex(global_mutex); -} - -#endif /* SLJIT_UTIL_GLOBAL_LOCK */ - -#else /* _WIN32 */ - -#if (defined SLJIT_EXECUTABLE_ALLOCATOR && SLJIT_EXECUTABLE_ALLOCATOR) - +#define SLJIT_ALLOCATOR_LOCK() +#define SLJIT_ALLOCATOR_UNLOCK() +#elif !(defined _WIN32) #include -static pthread_mutex_t allocator_mutex = PTHREAD_MUTEX_INITIALIZER; - -static SLJIT_INLINE void allocator_grab_lock(void) -{ - pthread_mutex_lock(&allocator_mutex); -} +static pthread_mutex_t allocator_lock = PTHREAD_MUTEX_INITIALIZER; -static SLJIT_INLINE void allocator_release_lock(void) -{ - pthread_mutex_unlock(&allocator_mutex); -} +#define SLJIT_ALLOCATOR_LOCK() pthread_mutex_lock(&allocator_lock) +#define SLJIT_ALLOCATOR_UNLOCK() pthread_mutex_unlock(&allocator_lock) +#else /* windows */ +static HANDLE allocator_lock; -#endif /* SLJIT_EXECUTABLE_ALLOCATOR */ - -#if (defined SLJIT_UTIL_GLOBAL_LOCK && SLJIT_UTIL_GLOBAL_LOCK) - -#include - -static pthread_mutex_t global_mutex = PTHREAD_MUTEX_INITIALIZER; - -SLJIT_API_FUNC_ATTRIBUTE void SLJIT_FUNC sljit_grab_lock(void) -{ - pthread_mutex_lock(&global_mutex); -} - -SLJIT_API_FUNC_ATTRIBUTE void SLJIT_FUNC sljit_release_lock(void) +static SLJIT_INLINE void allocator_grab_lock(void) { - pthread_mutex_unlock(&global_mutex); + HANDLE lock; + if (SLJIT_UNLIKELY(!allocator_lock)) { + lock = CreateMutex(NULL, FALSE, NULL); + if (InterlockedCompareExchangePointer(&allocator_lock, lock, NULL)) + CloseHandle(lock); + } + WaitForSingleObject(allocator_lock, INFINITE); } -#endif /* SLJIT_UTIL_GLOBAL_LOCK */ - -#endif /* _WIN32 */ +#define SLJIT_ALLOCATOR_LOCK() allocator_grab_lock() +#define SLJIT_ALLOCATOR_UNLOCK() ReleaseMutex(allocator_lock) +#endif /* thread implementation */ +#endif /* SLJIT_EXECUTABLE_ALLOCATOR && !SLJIT_WX_EXECUTABLE_ALLOCATOR */ /* ------------------------------------------------------------------------ */ /* Stack */ /* ------------------------------------------------------------------------ */ -#if (defined SLJIT_UTIL_STACK && SLJIT_UTIL_STACK) || (defined SLJIT_EXECUTABLE_ALLOCATOR && SLJIT_EXECUTABLE_ALLOCATOR) +#if ((defined SLJIT_UTIL_STACK && SLJIT_UTIL_STACK) \ + && !(defined SLJIT_UTIL_SIMPLE_STACK_ALLOCATION && SLJIT_UTIL_SIMPLE_STACK_ALLOCATION)) \ + || ((defined SLJIT_EXECUTABLE_ALLOCATOR && SLJIT_EXECUTABLE_ALLOCATOR) \ + && !((defined SLJIT_PROT_EXECUTABLE_ALLOCATOR && SLJIT_PROT_EXECUTABLE_ALLOCATOR) \ + || (defined SLJIT_WX_EXECUTABLE_ALLOCATOR && SLJIT_WX_EXECUTABLE_ALLOCATOR))) -#ifdef _WIN32 -#include "windows.h" -#else /* !_WIN32 */ +#ifndef _WIN32 /* Provides mmap function. */ #include #include @@ -163,56 +82,84 @@ #endif /* MAP_ANONYMOUS */ #endif /* !MAP_ANON */ -#ifndef MADV_DONTNEED -#ifdef POSIX_MADV_DONTNEED -#define MADV_DONTNEED POSIX_MADV_DONTNEED -#endif /* POSIX_MADV_DONTNEED */ -#endif /* !MADV_DONTNEED */ - -/* For detecting the page size. */ -#include - #ifndef MAP_ANON #include -/* Some old systems does not have MAP_ANON. */ -static sljit_s32 dev_zero = -1; +#ifdef O_CLOEXEC +#define SLJIT_CLOEXEC O_CLOEXEC +#else /* !O_CLOEXEC */ +#define SLJIT_CLOEXEC 0 +#endif /* O_CLOEXEC */ + +/* Some old systems do not have MAP_ANON. */ +static int dev_zero = -1; #if (defined SLJIT_SINGLE_THREADED && SLJIT_SINGLE_THREADED) -static SLJIT_INLINE sljit_s32 open_dev_zero(void) +static SLJIT_INLINE int open_dev_zero(void) { - dev_zero = open("/dev/zero", O_RDWR); + dev_zero = open("/dev/zero", O_RDWR | SLJIT_CLOEXEC); + return dev_zero < 0; } -#else /* SLJIT_SINGLE_THREADED */ +#else /* !SLJIT_SINGLE_THREADED */ #include static pthread_mutex_t dev_zero_mutex = PTHREAD_MUTEX_INITIALIZER; -static SLJIT_INLINE sljit_s32 open_dev_zero(void) +static SLJIT_INLINE int open_dev_zero(void) { pthread_mutex_lock(&dev_zero_mutex); - /* The dev_zero might be initialized by another thread during the waiting. */ - if (dev_zero < 0) { - dev_zero = open("/dev/zero", O_RDWR); - } + if (SLJIT_UNLIKELY(dev_zero < 0)) + dev_zero = open("/dev/zero", O_RDWR | SLJIT_CLOEXEC); + pthread_mutex_unlock(&dev_zero_mutex); return dev_zero < 0; } #endif /* SLJIT_SINGLE_THREADED */ - +#undef SLJIT_CLOEXEC #endif /* !MAP_ANON */ +#endif /* !_WIN32 */ +#endif /* open_dev_zero */ -#endif /* _WIN32 */ +#if (defined SLJIT_UTIL_STACK && SLJIT_UTIL_STACK) \ + || (defined SLJIT_EXECUTABLE_ALLOCATOR && SLJIT_EXECUTABLE_ALLOCATOR) -#endif /* SLJIT_UTIL_STACK || SLJIT_EXECUTABLE_ALLOCATOR */ +#ifdef _WIN32 -#endif /* SLJIT_EXECUTABLE_ALLOCATOR || SLJIT_UTIL_GLOBAL_LOCK */ +static SLJIT_INLINE sljit_sw get_page_alignment(void) { + SYSTEM_INFO si; + static sljit_sw sljit_page_align; + if (!sljit_page_align) { + GetSystemInfo(&si); + sljit_page_align = si.dwPageSize - 1; + } + return sljit_page_align; +} + +#else + +#include + +static SLJIT_INLINE sljit_sw get_page_alignment(void) { + static sljit_sw sljit_page_align; + if (!sljit_page_align) { + sljit_page_align = sysconf(_SC_PAGESIZE); + /* Should never happen. */ + if (sljit_page_align < 0) + sljit_page_align = 4096; + sljit_page_align--; + } + return sljit_page_align; +} + +#endif /* _WIN32 */ + +#endif /* get_page_alignment() */ #if (defined SLJIT_UTIL_STACK && SLJIT_UTIL_STACK) @@ -264,16 +211,6 @@ #ifdef _WIN32 -SLJIT_INLINE static sljit_sw get_page_alignment(void) { - SYSTEM_INFO si; - static sljit_sw sljit_page_align; - if (!sljit_page_align) { - GetSystemInfo(&si); - sljit_page_align = si.dwPageSize - 1; - } - return sljit_page_align; -} - SLJIT_API_FUNC_ATTRIBUTE void SLJIT_FUNC sljit_free_stack(struct sljit_stack *stack, void *allocator_data) { SLJIT_UNUSED_ARG(allocator_data); @@ -281,19 +218,7 @@ SLJIT_FREE(stack, allocator_data); } -#else /* ! defined _WIN32 */ - -SLJIT_INLINE static sljit_sw get_page_alignment(void) { - static sljit_sw sljit_page_align; - if (!sljit_page_align) { - sljit_page_align = sysconf(_SC_PAGESIZE); - /* Should never happen. */ - if (sljit_page_align < 0) - sljit_page_align = 4096; - sljit_page_align--; - } - return sljit_page_align; -} +#else /* !_WIN32 */ SLJIT_API_FUNC_ATTRIBUTE void SLJIT_FUNC sljit_free_stack(struct sljit_stack *stack, void *allocator_data) { @@ -302,7 +227,7 @@ SLJIT_FREE(stack, allocator_data); } -#endif /* defined _WIN32 */ +#endif /* _WIN32 */ SLJIT_API_FUNC_ATTRIBUTE struct sljit_stack* SLJIT_FUNC sljit_allocate_stack(sljit_uw start_size, sljit_uw max_size, void *allocator_data) { @@ -342,11 +267,9 @@ #ifdef MAP_ANON ptr = mmap(NULL, max_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); #else /* !MAP_ANON */ - if (dev_zero < 0) { - if (open_dev_zero() != 0) { - SLJIT_FREE(stack, allocator_data); - return NULL; - } + if (SLJIT_UNLIKELY((dev_zero < 0) && open_dev_zero())) { + SLJIT_FREE(stack, allocator_data); + return NULL; } ptr = mmap(NULL, max_size, PROT_READ | PROT_WRITE, MAP_PRIVATE, dev_zero, 0); #endif /* MAP_ANON */ @@ -365,7 +288,7 @@ SLJIT_API_FUNC_ATTRIBUTE sljit_u8 *SLJIT_FUNC sljit_stack_resize(struct sljit_stack *stack, sljit_u8 *new_start) { -#if defined _WIN32 || defined(MADV_DONTNEED) +#if defined _WIN32 || defined(POSIX_MADV_DONTNEED) sljit_uw aligned_old_start; sljit_uw aligned_new_start; sljit_sw page_align; @@ -389,15 +312,19 @@ return NULL; } } -#elif defined(MADV_DONTNEED) +#elif defined(POSIX_MADV_DONTNEED) if (stack->start < new_start) { page_align = get_page_alignment(); aligned_new_start = (sljit_uw)new_start & ~page_align; aligned_old_start = ((sljit_uw)stack->start) & ~page_align; - /* If madvise is available, we release the unnecessary space. */ - if (aligned_new_start > aligned_old_start) - madvise((void*)aligned_old_start, aligned_new_start - aligned_old_start, MADV_DONTNEED); + + if (aligned_new_start > aligned_old_start) { + posix_madvise((void*)aligned_old_start, aligned_new_start - aligned_old_start, POSIX_MADV_DONTNEED); +#ifdef MADV_FREE + madvise((void*)aligned_old_start, aligned_new_start - aligned_old_start, MADV_FREE); +#endif /* MADV_FREE */ + } } #endif /* _WIN32 */ diff -Naur a/qtbase/src/3rdparty/pcre2/src/sljit/sljitWXExecAllocator.c b/qtbase/src/3rdparty/pcre2/src/sljit/sljitWXExecAllocator.c --- a/qtbase/src/3rdparty/pcre2/src/sljit/sljitWXExecAllocator.c 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/src/3rdparty/pcre2/src/sljit/sljitWXExecAllocator.c 2022-01-25 17:23:44.135496323 +0000 @@ -0,0 +1,225 @@ +/* + * Stack-less Just-In-Time compiler + * + * Copyright Zoltan Herczeg (hzmester@freemail.hu). All rights reserved. + * + * Redistribution and use in source and binary forms, with or without modification, are + * permitted provided that the following conditions are met: + * + * 1. Redistributions of source code must retain the above copyright notice, this list of + * conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright notice, this list + * of conditions and the following disclaimer in the documentation and/or other materials + * provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) AND CONTRIBUTORS ``AS IS'' AND ANY + * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT + * SHALL THE COPYRIGHT HOLDER(S) OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED + * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +/* + This file contains a simple W^X executable memory allocator for POSIX + like systems and Windows + + In *NIX, MAP_ANON is required (that is considered a feature) so make + sure to set the right availability macros for your system or the code + will fail to build. + + If your system doesn't support mapping of anonymous pages (ex: IRIX) it + is also likely that it doesn't need this allocator and should be using + the standard one instead. + + It allocates a separate map for each code block and may waste a lot of + memory, because whatever was requested, will be rounded up to the page + size (minimum 4KB, but could be even bigger). + + It changes the page permissions (RW <-> RX) as needed and therefore, if you + will be updating the code after it has been generated, need to make sure to + block any concurrent execution, or could result in a SIGBUS, that could + even manifest itself at a different address than the one that was being + modified. + + Only use if you are unable to use the regular allocator because of security + restrictions and adding exceptions to your application or the system are + not possible. +*/ + +#define SLJIT_UPDATE_WX_FLAGS(from, to, enable_exec) \ + sljit_update_wx_flags((from), (to), (enable_exec)) + +#ifndef _WIN32 +#include +#include + +#ifdef __NetBSD__ +#if defined(PROT_MPROTECT) +#define check_se_protected(ptr, size) (0) +#define SLJIT_PROT_WX PROT_MPROTECT(PROT_EXEC) +#else /* !PROT_MPROTECT */ +#ifdef _NETBSD_SOURCE +#include +#else /* !_NETBSD_SOURCE */ +typedef unsigned int u_int; +#define devmajor_t sljit_s32 +#endif /* _NETBSD_SOURCE */ +#include +#include + +#define check_se_protected(ptr, size) netbsd_se_protected() + +static SLJIT_INLINE int netbsd_se_protected(void) +{ + int mib[3]; + int paxflags; + size_t len = sizeof(paxflags); + + mib[0] = CTL_PROC; + mib[1] = getpid(); + mib[2] = PROC_PID_PAXFLAGS; + + if (SLJIT_UNLIKELY(sysctl(mib, 3, &paxflags, &len, NULL, 0) < 0)) + return -1; + + return (paxflags & CTL_PROC_PAXFLAGS_MPROTECT) ? -1 : 0; +} +#endif /* PROT_MPROTECT */ +#else /* POSIX */ +#define check_se_protected(ptr, size) generic_se_protected(ptr, size) + +static SLJIT_INLINE int generic_se_protected(void *ptr, sljit_uw size) +{ + if (SLJIT_LIKELY(!mprotect(ptr, size, PROT_EXEC))) + return mprotect(ptr, size, PROT_READ | PROT_WRITE); + + return -1; +} +#endif /* NetBSD */ + +#if defined SLJIT_SINGLE_THREADED && SLJIT_SINGLE_THREADED +#define SLJIT_SE_LOCK() +#define SLJIT_SE_UNLOCK() +#else /* !SLJIT_SINGLE_THREADED */ +#include +#define SLJIT_SE_LOCK() pthread_mutex_lock(&se_lock) +#define SLJIT_SE_UNLOCK() pthread_mutex_unlock(&se_lock) +#endif /* SLJIT_SINGLE_THREADED */ + +#ifndef SLJIT_PROT_WX +#define SLJIT_PROT_WX 0 +#endif /* !SLJIT_PROT_WX */ + +SLJIT_API_FUNC_ATTRIBUTE void* sljit_malloc_exec(sljit_uw size) +{ +#if !(defined SLJIT_SINGLE_THREADED && SLJIT_SINGLE_THREADED) + static pthread_mutex_t se_lock = PTHREAD_MUTEX_INITIALIZER; +#endif + static int se_protected = !SLJIT_PROT_WX; + sljit_uw* ptr; + + if (SLJIT_UNLIKELY(se_protected < 0)) + return NULL; + + size += sizeof(sljit_uw); + ptr = (sljit_uw*)mmap(NULL, size, PROT_READ | PROT_WRITE | SLJIT_PROT_WX, + MAP_PRIVATE | MAP_ANON, -1, 0); + + if (ptr == MAP_FAILED) + return NULL; + + if (SLJIT_UNLIKELY(se_protected > 0)) { + SLJIT_SE_LOCK(); + se_protected = check_se_protected(ptr, size); + SLJIT_SE_UNLOCK(); + if (SLJIT_UNLIKELY(se_protected < 0)) { + munmap((void *)ptr, size); + return NULL; + } + } + + *ptr++ = size; + return ptr; +} + +#undef SLJIT_PROT_WX +#undef SLJIT_SE_UNLOCK +#undef SLJIT_SE_LOCK + +SLJIT_API_FUNC_ATTRIBUTE void sljit_free_exec(void* ptr) +{ + sljit_uw *start_ptr = ((sljit_uw*)ptr) - 1; + munmap((void*)start_ptr, *start_ptr); +} + +static void sljit_update_wx_flags(void *from, void *to, sljit_s32 enable_exec) +{ + sljit_uw page_mask = (sljit_uw)get_page_alignment(); + sljit_uw start = (sljit_uw)from; + sljit_uw end = (sljit_uw)to; + int prot = PROT_READ | (enable_exec ? PROT_EXEC : PROT_WRITE); + + SLJIT_ASSERT(start < end); + + start &= ~page_mask; + end = (end + page_mask) & ~page_mask; + + mprotect((void*)start, end - start, prot); +} + +#else /* windows */ + +SLJIT_API_FUNC_ATTRIBUTE void* sljit_malloc_exec(sljit_uw size) +{ + sljit_uw *ptr; + + size += sizeof(sljit_uw); + ptr = (sljit_uw*)VirtualAlloc(NULL, size, + MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); + + if (!ptr) + return NULL; + + *ptr++ = size; + + return ptr; +} + +SLJIT_API_FUNC_ATTRIBUTE void sljit_free_exec(void* ptr) +{ + sljit_uw start = (sljit_uw)ptr - sizeof(sljit_uw); +#if defined(SLJIT_DEBUG) && SLJIT_DEBUG + sljit_uw page_mask = (sljit_uw)get_page_alignment(); + + SLJIT_ASSERT(!(start & page_mask)); +#endif + VirtualFree((void*)start, 0, MEM_RELEASE); +} + +static void sljit_update_wx_flags(void *from, void *to, sljit_s32 enable_exec) +{ + DWORD oldprot; + sljit_uw page_mask = (sljit_uw)get_page_alignment(); + sljit_uw start = (sljit_uw)from; + sljit_uw end = (sljit_uw)to; + DWORD prot = enable_exec ? PAGE_EXECUTE : PAGE_READWRITE; + + SLJIT_ASSERT(start < end); + + start &= ~page_mask; + end = (end + page_mask) & ~page_mask; + + VirtualProtect((void*)start, end - start, prot, &oldprot); +} + +#endif /* !windows */ + +SLJIT_API_FUNC_ATTRIBUTE void sljit_free_unused_memory_exec(void) +{ + /* This allocator does not keep unused memory for future allocations. */ +} diff -Naur a/qtbase/src/android/jar/src/org/qtproject/qt5/android/accessibility/QtAccessibilityDelegate.java b/qtbase/src/android/jar/src/org/qtproject/qt5/android/accessibility/QtAccessibilityDelegate.java --- a/qtbase/src/android/jar/src/org/qtproject/qt5/android/accessibility/QtAccessibilityDelegate.java 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/android/jar/src/org/qtproject/qt5/android/accessibility/QtAccessibilityDelegate.java 2022-01-25 17:23:44.137496316 +0000 @@ -191,6 +191,23 @@ return true; } + public void notifyLocationChange() + { + invalidateVirtualViewId(m_focusedVirtualViewId); + } + + public void notifyObjectHide(int viewId) + { + invalidateVirtualViewId(viewId); + } + + public void notifyObjectFocus(int viewId) + { + m_view.invalidate(); + sendEventForVirtualViewId(viewId, + AccessibilityEvent.TYPE_VIEW_ACCESSIBILITY_FOCUSED); + } + public boolean sendEventForVirtualViewId(int virtualViewId, int eventType) { if ((virtualViewId == INVALID_ID) || !m_manager.isEnabled()) { @@ -211,7 +228,8 @@ public void invalidateVirtualViewId(int virtualViewId) { - sendEventForVirtualViewId(virtualViewId, AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED); + if (virtualViewId != INVALID_ID) + sendEventForVirtualViewId(virtualViewId, AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED); } private void setHoveredVirtualViewId(int virtualViewId) @@ -336,9 +354,6 @@ node.addAction(AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS); } - int[] ids = QtNativeAccessibility.childIdListForAccessibleObject(virtualViewId); - for (int i = 0; i < ids.length; ++i) - node.addChild(m_view, ids[i]); return node; } diff -Naur a/qtbase/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java b/qtbase/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java --- a/qtbase/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java 2022-01-25 17:23:44.136496319 +0000 @@ -231,6 +231,8 @@ public static final int ApplicationInactive = 0x2; public static final int ApplicationActive = 0x4; + private QtAccessibilityDelegate m_accessibilityDelegate = null; + public boolean setKeyboardVisibility(boolean visibility, long timeStamp) { @@ -859,10 +861,30 @@ m_splashScreen.startAnimation(fadeOut); } + public void notifyAccessibilityLocationChange() + { + if (m_accessibilityDelegate == null) + return; + m_accessibilityDelegate.notifyLocationChange(); + } + + public void notifyObjectHide(int viewId) + { + if (m_accessibilityDelegate == null) + return; + m_accessibilityDelegate.notifyObjectHide(viewId); + } + + public void notifyObjectFocus(int viewId) + { + if (m_accessibilityDelegate == null) + return; + m_accessibilityDelegate.notifyObjectFocus(viewId); + } public void initializeAccessibility() { - new QtAccessibilityDelegate(m_activity, m_layout, this); + m_accessibilityDelegate = new QtAccessibilityDelegate(m_activity, m_layout, this); } public void onWindowFocusChanged(boolean hasFocus) { diff -Naur a/qtbase/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/qtbase/src/android/jar/src/org/qtproject/qt5/android/QtNative.java --- a/qtbase/src/android/jar/src/org/qtproject/qt5/android/QtNative.java 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/android/jar/src/org/qtproject/qt5/android/QtNative.java 2022-01-25 17:23:44.180496161 +0000 @@ -43,6 +43,7 @@ import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; +import java.util.Objects; import java.util.concurrent.Semaphore; import java.io.IOException; import java.util.HashMap; @@ -111,9 +112,9 @@ private static Boolean m_tabletEventSupported = null; private static boolean m_usePrimaryClip = false; public static QtThread m_qtThread = new QtThread(); - private static Method m_addItemMethod = null; private static HashMap m_cachedUris = new HashMap(); private static ArrayList m_knownDirs = new ArrayList(); + private static final String NoPermissionErrorMessage = "No permissions to open Uri"; private static final Runnable runPendingCppRunnablesRunnable = new Runnable() { @Override @@ -191,11 +192,10 @@ return iterUri; } - // Android 6 and earlier could still manage to open the file so we can return the - // parsed uri here - if (Build.VERSION.SDK_INT < 24) - return parsedUri; - return null; + // if we only have transient permissions on uri all the above will fail, + // but we will be able to read the file anyway, so continue with uri here anyway + // and check for SecurityExceptions later + return parsedUri; } catch (SecurityException e) { e.printStackTrace(); return null; @@ -242,7 +242,7 @@ int error = -1; if (uri == null) { - Log.e(QtTAG, "openFdForContentUrl(): No permissions to open Uri"); + Log.e(QtTAG, "openFdForContentUrl(): " + NoPermissionErrorMessage); return error; } @@ -252,12 +252,13 @@ return fdDesc.detachFd(); } catch (FileNotFoundException e) { e.printStackTrace(); - return error; } catch (IllegalArgumentException e) { Log.e(QtTAG, "openFdForContentUrl(): Invalid Uri"); e.printStackTrace(); - return error; + } catch (SecurityException e) { + Log.e(QtTAG, NoPermissionErrorMessage); } + return error; } public static long getSize(Context context, String contentUrl) @@ -268,10 +269,10 @@ uri = getUriWithValidPermission(context, contentUrl, "r"); if (uri == null) { - Log.e(QtTAG, "getSize(): No permissions to open Uri"); + Log.e(QtTAG, NoPermissionErrorMessage); return size; - } else { - m_cachedUris.putIfAbsent(contentUrl, uri); + } else if (!m_cachedUris.containsKey(contentUrl)) { + m_cachedUris.put(contentUrl, uri); } try { @@ -286,12 +287,13 @@ } catch (IllegalArgumentException e) { Log.e(QtTAG, "getSize(): Invalid Uri"); e.printStackTrace(); - return size; } catch (UnsupportedOperationException e) { Log.e(QtTAG, "getSize(): Unsupported operation for given Uri"); e.printStackTrace(); - return size; + } catch (SecurityException e) { + Log.e(QtTAG, NoPermissionErrorMessage); } + return size; } public static boolean checkFileExists(Context context, String contentUrl) @@ -301,7 +303,7 @@ if (uri == null) uri = getUriWithValidPermission(context, contentUrl, "r"); if (uri == null) { - Log.e(QtTAG, "checkFileExists(): No permissions to open Uri"); + Log.e(QtTAG, NoPermissionErrorMessage); return exists; } else { if (!m_cachedUris.containsKey(contentUrl)) @@ -319,12 +321,13 @@ } catch (IllegalArgumentException e) { Log.e(QtTAG, "checkFileExists(): Invalid Uri"); e.printStackTrace(); - return exists; } catch (UnsupportedOperationException e) { Log.e(QtTAG, "checkFileExists(): Unsupported operation for given Uri"); e.printStackTrace(); - return false; + } catch (SecurityException e) { + Log.e(QtTAG, NoPermissionErrorMessage); } + return exists; } public static boolean checkIfWritable(Context context, String contentUrl) @@ -342,7 +345,7 @@ uri = getUriWithValidPermission(context, contentUrl, "r"); } if (uri == null) { - Log.e(QtTAG, "isDir(): No permissions to open Uri"); + Log.e(QtTAG, NoPermissionErrorMessage); return isDir; } else { if (!m_cachedUris.containsKey(contentUrl)) @@ -372,12 +375,13 @@ } catch (IllegalArgumentException e) { Log.e(QtTAG, "checkIfDir(): Invalid Uri"); e.printStackTrace(); - return false; } catch (UnsupportedOperationException e) { Log.e(QtTAG, "checkIfDir(): Unsupported operation for given Uri"); e.printStackTrace(); - return false; + } catch (SecurityException e) { + Log.e(QtTAG, NoPermissionErrorMessage); } + return false; } public static String[] listContentsFromTreeUri(Context context, String contentUrl) { @@ -709,7 +713,7 @@ } if (action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_POINTER_DOWN && index == event.getActionIndex()) { return 0; - } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_POINTER_UP && index == event.getActionIndex()) { + } else if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_POINTER_UP && index == event.getActionIndex()) { return 3; } return 2; @@ -929,6 +933,42 @@ }); } + private static void notifyAccessibilityLocationChange() + { + runAction(new Runnable() { + @Override + public void run() { + if (m_activityDelegate != null) { + m_activityDelegate.notifyAccessibilityLocationChange(); + } + } + }); + } + + private static void notifyObjectHide(final int viewId) + { + runAction(new Runnable() { + @Override + public void run() { + if (m_activityDelegate != null) { + m_activityDelegate.notifyObjectHide(viewId); + } + } + }); + } + + private static void notifyObjectFocus(final int viewId) + { + runAction(new Runnable() { + @Override + public void run() { + if (m_activityDelegate != null) { + m_activityDelegate.notifyObjectFocus(viewId); + } + } + }); + } + private static void registerClipboardManager() { if (m_service == null || m_activity != null) { // Avoid freezing if only service @@ -958,9 +998,8 @@ private static void clearClipData() { - if (Build.VERSION.SDK_INT >= 28 && m_clipboardManager != null && m_usePrimaryClip) + if (Build.VERSION.SDK_INT >= 28 && m_clipboardManager != null) m_clipboardManager.clearPrimaryClip(); - m_usePrimaryClip = false; } private static void setClipboardText(String text) { @@ -1006,25 +1045,9 @@ if (m_usePrimaryClip) { ClipData clip = m_clipboardManager.getPrimaryClip(); if (Build.VERSION.SDK_INT >= 26) { - if (m_addItemMethod == null) { - Class[] cArg = new Class[2]; - cArg[0] = ContentResolver.class; - cArg[1] = ClipData.Item.class; - try { - m_addItemMethod = m_clipboardManager.getClass().getMethod("addItem", cArg); - } catch (Exception e) { - e.printStackTrace(); - } - } - } - if (m_addItemMethod != null) { - try { - m_addItemMethod.invoke(m_activity.getContentResolver(), clipData.getItemAt(0)); - } catch (Exception e) { - e.printStackTrace(); - } + Objects.requireNonNull(clip).addItem(m_activity.getContentResolver(), clipData.getItemAt(0)); } else { - clip.addItem(clipData.getItemAt(0)); + Objects.requireNonNull(clip).addItem(clipData.getItemAt(0)); } m_clipboardManager.setPrimaryClip(clip); } else { @@ -1049,7 +1072,7 @@ try { if (m_clipboardManager != null && m_clipboardManager.hasPrimaryClip()) { ClipData primaryClip = m_clipboardManager.getPrimaryClip(); - for (int i = 0; i < primaryClip.getItemCount(); ++i) + for (int i = 0; i < Objects.requireNonNull(primaryClip).getItemCount(); ++i) if (primaryClip.getItemAt(i).getHtmlText() != null) return true; } diff -Naur a/qtbase/src/android/java/java.pro b/qtbase/src/android/java/java.pro --- a/qtbase/src/android/java/java.pro 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/android/java/java.pro 2022-01-25 17:23:44.092496477 +0000 @@ -1,5 +1,7 @@ -CONFIG += single_arch +TEMPLATE = aux +TARGET = dummy +CONFIG += single_arch CONFIG -= qt android_install javaresources.files = \ @@ -11,6 +13,8 @@ INSTALLS += javaresources !prefix_build:!equals(OUT_PWD, $$PWD) { + COPIES += javaresources + RETURN = $$escape_expand(\\n\\t) equals(QMAKE_HOST.os, Windows) { RETURN = $$escape_expand(\\r\\n\\t) diff -Naur a/qtbase/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java b/qtbase/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java --- a/qtbase/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java 2022-01-25 17:23:44.137496316 +0000 @@ -1121,4 +1121,19 @@ { QtNative.activityDelegate().setFullScreen(enterFullScreen); } + + public void notifyAccessibilityLocationChange() + { + QtNative.activityDelegate().notifyAccessibilityLocationChange(); + } + + public void notifyObjectHide(int viewId) + { + QtNative.activityDelegate().notifyObjectHide(viewId); + } + + public void notifyObjectFocus(int viewId) + { + QtNative.activityDelegate().notifyObjectFocus(viewId); + } } diff -Naur a/qtbase/src/android/templates/templates.pro b/qtbase/src/android/templates/templates.pro --- a/qtbase/src/android/templates/templates.pro 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/android/templates/templates.pro 2022-01-25 17:23:44.092496477 +0000 @@ -1,17 +1,23 @@ -CONFIG += single_arch +TEMPLATE = aux +TARGET = dummy +CONFIG += single_arch CONFIG -= qt android_install templates.files = \ $$PWD/AndroidManifest.xml \ - $$PWD/build.gradle \ - $$PWD/res + $$PWD/build.gradle + +templates_dirs.files += $$PWD/res templates.path = $$[QT_INSTALL_PREFIX]/src/android/templates +templates_dirs.path = $${templates.path} -INSTALLS += templates +INSTALLS += templates templates_dirs !prefix_build:!equals(OUT_PWD, $$PWD) { + COPIES += templates templates_dirs + RETURN = $$escape_expand(\\n\\t) equals(QMAKE_HOST.os, Windows) { RETURN = $$escape_expand(\\r\\n\\t) diff -Naur a/qtbase/src/concurrent/qtconcurrentthreadengine.h b/qtbase/src/concurrent/qtconcurrentthreadengine.h --- a/qtbase/src/concurrent/qtconcurrentthreadengine.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/concurrent/qtconcurrentthreadengine.h 2022-01-25 17:23:44.151496265 +0000 @@ -247,8 +247,8 @@ class ThreadEngineStarter : public ThreadEngineStarterBase { public: - ThreadEngineStarter(ThreadEngine *_threadEngine) - :ThreadEngineStarterBase(_threadEngine) {} + ThreadEngineStarter(ThreadEngine *_threadEngine) + : ThreadEngineStarterBase(_threadEngine) {} void startBlocking() { diff -Naur a/qtbase/src/corelib/animation/qvariantanimation.cpp b/qtbase/src/corelib/animation/qvariantanimation.cpp --- a/qtbase/src/corelib/animation/qvariantanimation.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/animation/qvariantanimation.cpp 2022-01-25 17:23:44.197496100 +0000 @@ -276,7 +276,9 @@ const qreal startProgress = currentInterval.start.first; const qreal endProgress = currentInterval.end.first; - const qreal localProgress = (progress - startProgress) / (endProgress - startProgress); + const qreal localProgress = + qIsNull(progress - startProgress) ? 0.0 // avoid 0/0 below + /* else */ : (progress - startProgress) / (endProgress - startProgress); QVariant ret = q->interpolated(currentInterval.start.second, currentInterval.end.second, diff -Naur a/qtbase/src/corelib/configure.json b/qtbase/src/corelib/configure.json --- a/qtbase/src/corelib/configure.json 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/configure.json 2022-01-25 17:23:44.091496481 +0000 @@ -727,8 +727,8 @@ }, "pcre2": { "label": "PCRE2", - "disable": "input.pcre == 'no' || input.pcre == 'system'", - "enable": "input.pcre == 'qt'", + "disable": "input.pcre == 'no'", + "enable": "input.pcre == 'qt' || features.system-pcre2", "output": [ "privateConfig" ] }, "system-pcre2": { diff -Naur a/qtbase/src/corelib/doc/snippets/code/src_corelib_tools_qstring.cpp b/qtbase/src/corelib/doc/snippets/code/src_corelib_tools_qstring.cpp --- a/qtbase/src/corelib/doc/snippets/code/src_corelib_tools_qstring.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/doc/snippets/code/src_corelib_tools_qstring.cpp 2022-01-25 17:23:44.122496370 +0000 @@ -48,12 +48,6 @@ ** ****************************************************************************/ -//! [0] -DEFINES += QT_NO_CAST_FROM_ASCII \ - QT_NO_CAST_TO_ASCII -//! [0] - - //! [1] QString url = QLatin1String("http://www.unicode.org/"); //! [1] diff -Naur a/qtbase/src/corelib/global/qendian.h b/qtbase/src/corelib/global/qendian.h --- a/qtbase/src/corelib/global/qendian.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/global/qendian.h 2022-01-25 17:23:44.144496291 +0000 @@ -1,7 +1,7 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. -** Copyright (C) 2016 Intel Corporation. +** Copyright (C) 2021 The Qt Company Ltd. +** Copyright (C) 2021 Intel Corporation. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtCore module of the Qt Toolkit. @@ -44,6 +44,8 @@ #include #include +#include + // include stdlib.h and hope that it defines __GLIBC__ for glibc-based systems #include #include diff -Naur a/qtbase/src/corelib/global/qfloat16.h b/qtbase/src/corelib/global/qfloat16.h --- a/qtbase/src/corelib/global/qfloat16.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/global/qfloat16.h 2022-01-25 17:23:44.144496291 +0000 @@ -43,6 +43,7 @@ #include #include +#include #include #if defined(QT_COMPILER_SUPPORTS_F16C) && defined(__AVX2__) && !defined(__F16C__) diff -Naur a/qtbase/src/corelib/global/qglobal.cpp b/qtbase/src/corelib/global/qglobal.cpp --- a/qtbase/src/corelib/global/qglobal.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/global/qglobal.cpp 2022-01-25 17:23:44.118496384 +0000 @@ -4224,9 +4224,8 @@ \list \li \c Q_PRIMITIVE_TYPE specifies that \a Type is a POD (plain old - data) type with no constructor or destructor, or else a type where - every bit pattern is a valid object and memcpy() creates a valid - independent copy of the object. + data) type with no constructor or destructor, and for which memcpy()ing + creates a valid independent copy of the object. \li \c Q_MOVABLE_TYPE specifies that \a Type has a constructor and/or a destructor but can be moved in memory using \c memcpy(). Note: despite the name, this has nothing to do with move diff -Naur a/qtbase/src/corelib/global/qglobal.h b/qtbase/src/corelib/global/qglobal.h --- a/qtbase/src/corelib/global/qglobal.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/global/qglobal.h 2022-01-25 17:23:44.119496380 +0000 @@ -378,11 +378,19 @@ # define QT_DEPRECATED_VERSION_5_15 #endif +#if QT_DEPRECATED_WARNINGS_SINCE >= QT_VERSION_CHECK(6, 0, 0) +# define QT_DEPRECATED_VERSION_X_6_0(text) QT_DEPRECATED_X(text) +# define QT_DEPRECATED_VERSION_6_0 QT_DEPRECATED +#else +# define QT_DEPRECATED_VERSION_X_6_0(text) +# define QT_DEPRECATED_VERSION_6_0 +#endif + #define QT_DEPRECATED_VERSION_X_5(minor, text) QT_DEPRECATED_VERSION_X_5_##minor(text) -#define QT_DEPRECATED_VERSION_X(major, minor, text) QT_DEPRECATED_VERSION_X_##major(minor, text) +#define QT_DEPRECATED_VERSION_X(major, minor, text) QT_DEPRECATED_VERSION_X_##major##_##minor(text) #define QT_DEPRECATED_VERSION_5(minor) QT_DEPRECATED_VERSION_5_##minor -#define QT_DEPRECATED_VERSION(major, minor) QT_DEPRECATED_VERSION_##major(minor) +#define QT_DEPRECATED_VERSION(major, minor) QT_DEPRECATED_VERSION_##major##_##minor #ifdef __cplusplus // A tag to help mark stuff deprecated (cf. QStringViewLiteral) @@ -632,7 +640,7 @@ //defines the type for the WNDPROC on windows //the alignment needs to be forced for sse2 to not crash with mingw #if defined(Q_OS_WIN) -# if defined(Q_CC_MINGW) && !defined(Q_OS_WIN64) +# if defined(Q_CC_MINGW) && defined(Q_PROCESSOR_X86_32) # define QT_ENSURE_STACK_ALIGNED_FOR_SSE __attribute__ ((force_align_arg_pointer)) # else # define QT_ENSURE_STACK_ALIGNED_FOR_SSE @@ -1180,19 +1188,6 @@ #endif // QT_NO_TRANSLATION -/* - When RTTI is not available, define this macro to force any uses of - dynamic_cast to cause a compile failure. -*/ - -#if defined(QT_NO_DYNAMIC_CAST) && !defined(dynamic_cast) -# define dynamic_cast QT_PREPEND_NAMESPACE(qt_dynamic_cast_check) - - template - T qt_dynamic_cast_check(X, T* = 0) - { return T::dynamic_cast_will_always_fail_because_rtti_is_disabled; } -#endif - #ifdef Q_QDOC diff -Naur a/qtbase/src/corelib/global/qlibraryinfo.cpp b/qtbase/src/corelib/global/qlibraryinfo.cpp --- a/qtbase/src/corelib/global/qlibraryinfo.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/global/qlibraryinfo.cpp 2022-01-25 17:23:44.171496194 +0000 @@ -333,8 +333,10 @@ # define COMPILER_STRING "MSVC 2015" # elif _MSC_VER < 1917 # define COMPILER_STRING "MSVC 2017" -# elif _MSC_VER < 2000 +# elif _MSC_VER < 1930 # define COMPILER_STRING "MSVC 2019" +# elif _MSC_VER < 2000 +# define COMPILER_STRING "MSVC 2022" # else # define COMPILER_STRING "MSVC _MSC_VER " QT_STRINGIFY(_MSC_VER) # endif diff -Naur a/qtbase/src/corelib/global/qrandom.cpp b/qtbase/src/corelib/global/qrandom.cpp --- a/qtbase/src/corelib/global/qrandom.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/global/qrandom.cpp 2022-01-25 17:23:44.151496265 +0000 @@ -383,7 +383,6 @@ constexpr SystemAndGlobalGenerators g = {}; Q_UNUSED(g); - Q_STATIC_ASSERT(std::is_literal_type::value); #endif } diff -Naur a/qtbase/src/corelib/io/qabstractfileengine.cpp b/qtbase/src/corelib/io/qabstractfileengine.cpp --- a/qtbase/src/corelib/io/qabstractfileengine.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/io/qabstractfileengine.cpp 2022-01-25 17:23:44.191496122 +0000 @@ -101,7 +101,7 @@ \sa QAbstractFileEngine, QAbstractFileEngine::create() */ -static bool qt_file_engine_handlers_in_use = false; +static QBasicAtomicInt qt_file_engine_handlers_in_use = Q_BASIC_ATOMIC_INITIALIZER(false); /* All application-wide handlers are stored in this list. The mutex must be @@ -132,7 +132,7 @@ QAbstractFileEngineHandler::QAbstractFileEngineHandler() { QWriteLocker locker(fileEngineHandlerMutex()); - qt_file_engine_handlers_in_use = true; + qt_file_engine_handlers_in_use.storeRelaxed(true); fileEngineHandlers()->prepend(this); } @@ -148,7 +148,7 @@ QAbstractFileEngineHandlerList *handlers = fileEngineHandlers(); handlers->removeOne(this); if (handlers->isEmpty()) - qt_file_engine_handlers_in_use = false; + qt_file_engine_handlers_in_use.storeRelaxed(false); } } @@ -161,7 +161,7 @@ { QAbstractFileEngine *engine = nullptr; - if (qt_file_engine_handlers_in_use) { + if (qt_file_engine_handlers_in_use.loadRelaxed()) { QReadLocker locker(fileEngineHandlerMutex()); // check for registered handlers that can load the file diff -Naur a/qtbase/src/corelib/io/qdiriterator.cpp b/qtbase/src/corelib/io/qdiriterator.cpp --- a/qtbase/src/corelib/io/qdiriterator.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/io/qdiriterator.cpp 2022-01-25 17:23:44.091496481 +0000 @@ -125,7 +125,7 @@ { public: QDirIteratorPrivate(const QFileSystemEntry &entry, const QStringList &nameFilters, - QDir::Filters filters, QDirIterator::IteratorFlags flags, bool resolveEngine = true); + QDir::Filters _filters, QDirIterator::IteratorFlags flags, bool resolveEngine = true); void advance(); @@ -164,10 +164,10 @@ \internal */ QDirIteratorPrivate::QDirIteratorPrivate(const QFileSystemEntry &entry, const QStringList &nameFilters, - QDir::Filters filters, QDirIterator::IteratorFlags flags, bool resolveEngine) + QDir::Filters _filters, QDirIterator::IteratorFlags flags, bool resolveEngine) : dirEntry(entry) , nameFilters(nameFilters.contains(QLatin1String("*")) ? QStringList() : nameFilters) - , filters(QDir::NoFilter == filters ? QDir::AllEntries : filters) + , filters(QDir::NoFilter == _filters ? QDir::AllEntries : _filters) , iteratorFlags(flags) { #if defined(QT_BOOTSTRAPPED) diff -Naur a/qtbase/src/corelib/io/qfilesystemengine_unix.cpp b/qtbase/src/corelib/io/qfilesystemengine_unix.cpp --- a/qtbase/src/corelib/io/qfilesystemengine_unix.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/io/qfilesystemengine_unix.cpp 2022-01-25 17:23:44.200496089 +0000 @@ -312,7 +312,7 @@ static int qt_real_statx(int fd, const char *pathname, int flags, struct statx *statxBuffer) { unsigned mask = STATX_BASIC_STATS | STATX_BTIME; - int ret = statx(fd, pathname, flags, mask, statxBuffer); + int ret = statx(fd, pathname, flags | AT_NO_AUTOMOUNT, mask, statxBuffer); return ret == -1 ? -errno : 0; } diff -Naur a/qtbase/src/corelib/io/qfilesystemwatcher_inotify.cpp b/qtbase/src/corelib/io/qfilesystemwatcher_inotify.cpp --- a/qtbase/src/corelib/io/qfilesystemwatcher_inotify.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/io/qfilesystemwatcher_inotify.cpp 2022-01-25 17:23:44.151496265 +0000 @@ -366,7 +366,9 @@ // qDebug("QInotifyFileSystemWatcherEngine::readFromInotify"); int buffSize = 0; - ioctl(inotifyFd, FIONREAD, (char *) &buffSize); + if (ioctl(inotifyFd, FIONREAD, (char *) &buffSize) == -1 || buffSize == 0) + return; + QVarLengthArray buffer(buffSize); buffSize = read(inotifyFd, buffer.data(), buffSize); char *at = buffer.data(); diff -Naur a/qtbase/src/corelib/io/qiodevice.cpp b/qtbase/src/corelib/io/qiodevice.cpp --- a/qtbase/src/corelib/io/qiodevice.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/io/qiodevice.cpp 2022-01-25 17:23:44.063496582 +0000 @@ -1480,10 +1480,12 @@ } else readBytes = readLine(result.data(), result.size()); - if (readBytes <= 0) + if (readBytes <= 0) { result.clear(); - else + } else { result.resize(readBytes); + result.squeeze(); + } return result; } diff -Naur a/qtbase/src/corelib/io/qsettings.cpp b/qtbase/src/corelib/io/qsettings.cpp --- a/qtbase/src/corelib/io/qsettings.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/io/qsettings.cpp 2022-01-25 17:23:44.070496556 +0000 @@ -2245,7 +2245,7 @@ \endlist \note If XDG_CONFIG_DIRS is unset, the default value of \c{/etc/xdg} is used. - On \macos versions 10.2 and 10.3, these files are used by + On \macos and iOS, if the file format is NativeFormat, these files are used by default: \list 1 diff -Naur a/qtbase/src/corelib/io/qstandardpaths_android.cpp b/qtbase/src/corelib/io/qstandardpaths_android.cpp --- a/qtbase/src/corelib/io/qstandardpaths_android.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/io/qstandardpaths_android.cpp 2022-01-25 17:23:44.122496370 +0000 @@ -86,51 +86,6 @@ } /* - * The root of the external storage - * - */ -static QString getExternalStorageDirectory() -{ - QString &path = (*androidDirCache)[QStringLiteral("EXT_ROOT")]; - if (!path.isEmpty()) - return path; - - QJNIObjectPrivate file = QJNIObjectPrivate::callStaticObjectMethod("android/os/Environment", - "getExternalStorageDirectory", - "()Ljava/io/File;"); - if (!file.isValid()) - return QString(); - - return (path = getAbsolutePath(file)); -} - -/* - * Locations where applications can place user files (public). - * E.g., /storage/Music - */ -static QString getExternalStoragePublicDirectory(const char *directoryField) -{ - QString &path = (*androidDirCache)[QLatin1String(directoryField)]; - if (!path.isEmpty()) - return path; - - QJNIObjectPrivate dirField = QJNIObjectPrivate::getStaticObjectField("android/os/Environment", - directoryField, - "Ljava/lang/String;"); - if (!dirField.isValid()) - return QString(); - - QJNIObjectPrivate file = QJNIObjectPrivate::callStaticObjectMethod("android/os/Environment", - "getExternalStoragePublicDirectory", - "(Ljava/lang/String;)Ljava/io/File;", - dirField.object()); - if (!file.isValid()) - return QString(); - - return (path = getAbsolutePath(file)); -} - -/* * Locations where applications can place persistent files it owns. * E.g., /storage/org.app/Music */ @@ -145,7 +100,7 @@ return QString(); QJNIObjectPrivate dirField = QJNIObjectPrivate::fromString(QLatin1String("")); - if (directoryField) { + if (directoryField && strlen(directoryField) > 0) { dirField = QJNIObjectPrivate::getStaticObjectField("android/os/Environment", directoryField, "Ljava/lang/String;"); @@ -233,21 +188,21 @@ { switch (type) { case QStandardPaths::MusicLocation: - return getExternalStoragePublicDirectory("DIRECTORY_MUSIC"); + return getExternalFilesDir("DIRECTORY_MUSIC"); case QStandardPaths::MoviesLocation: - return getExternalStoragePublicDirectory("DIRECTORY_MOVIES"); + return getExternalFilesDir("DIRECTORY_MOVIES"); case QStandardPaths::PicturesLocation: - return getExternalStoragePublicDirectory("DIRECTORY_PICTURES"); + return getExternalFilesDir("DIRECTORY_PICTURES"); case QStandardPaths::DocumentsLocation: - return getExternalStoragePublicDirectory("DIRECTORY_DOCUMENTS"); + return getExternalFilesDir("DIRECTORY_DOCUMENTS"); case QStandardPaths::DownloadLocation: - return getExternalStoragePublicDirectory("DIRECTORY_DOWNLOADS"); + return getExternalFilesDir("DIRECTORY_DOWNLOADS"); case QStandardPaths::GenericConfigLocation: case QStandardPaths::ConfigLocation: case QStandardPaths::AppConfigLocation: return getFilesDir() + testDir() + QLatin1String("/settings"); case QStandardPaths::GenericDataLocation: - return getExternalStorageDirectory() + testDir(); + return getExternalFilesDir() + testDir(); case QStandardPaths::AppDataLocation: case QStandardPaths::AppLocalDataLocation: return getFilesDir() + testDir(); @@ -273,11 +228,8 @@ if (type == MusicLocation) { return QStringList() << writableLocation(type) << getExternalFilesDir("DIRECTORY_MUSIC") - << getExternalStoragePublicDirectory("DIRECTORY_PODCASTS") << getExternalFilesDir("DIRECTORY_PODCASTS") - << getExternalStoragePublicDirectory("DIRECTORY_NOTIFICATIONS") << getExternalFilesDir("DIRECTORY_NOTIFICATIONS") - << getExternalStoragePublicDirectory("DIRECTORY_ALARMS") << getExternalFilesDir("DIRECTORY_ALARMS"); } diff -Naur a/qtbase/src/corelib/io/qstandardpaths_unix.cpp b/qtbase/src/corelib/io/qstandardpaths_unix.cpp --- a/qtbase/src/corelib/io/qstandardpaths_unix.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/io/qstandardpaths_unix.cpp 2022-01-25 17:23:44.115496395 +0000 @@ -94,6 +94,30 @@ } #endif +static QByteArray unixPermissionsText(QFile::Permissions permissions) +{ + mode_t perms = 0; + if (permissions & QFile::ReadOwner) + perms |= S_IRUSR; + if (permissions & QFile::WriteOwner) + perms |= S_IWUSR; + if (permissions & QFile::ExeOwner) + perms |= S_IXUSR; + if (permissions & QFile::ReadGroup) + perms |= S_IRGRP; + if (permissions & QFile::WriteGroup) + perms |= S_IWGRP; + if (permissions & QFile::ExeGroup) + perms |= S_IXGRP; + if (permissions & QFile::ReadOther) + perms |= S_IROTH; + if (permissions & QFile::WriteOther) + perms |= S_IWOTH; + if (permissions & QFile::ExeOther) + perms |= S_IXOTH; + return '0' + QByteArray::number(perms, 8); +} + static bool checkXdgRuntimeDir(const QString &xdgRuntimeDir) { auto describeMetaData = [](const QFileSystemMetaData &metaData) -> QByteArray { @@ -113,27 +137,7 @@ else description += "a block device"; - // convert QFileSystemMetaData permissions back to Unix - mode_t perms = 0; - if (metaData.permissions() & QFile::ReadOwner) - perms |= S_IRUSR; - if (metaData.permissions() & QFile::WriteOwner) - perms |= S_IWUSR; - if (metaData.permissions() & QFile::ExeOwner) - perms |= S_IXUSR; - if (metaData.permissions() & QFile::ReadGroup) - perms |= S_IRGRP; - if (metaData.permissions() & QFile::WriteGroup) - perms |= S_IWGRP; - if (metaData.permissions() & QFile::ExeGroup) - perms |= S_IXGRP; - if (metaData.permissions() & QFile::ReadOther) - perms |= S_IROTH; - if (metaData.permissions() & QFile::WriteOther) - perms |= S_IWOTH; - if (metaData.permissions() & QFile::ExeOther) - perms |= S_IXOTH; - description += " permissions 0" + QByteArray::number(perms, 8); + description += " permissions " + unixPermissionsText(metaData.permissions()); return description + " owned by UID " + QByteArray::number(metaData.userId()) @@ -186,14 +190,11 @@ // "and he MUST be the only one having read and write access to it. Its Unix access mode MUST be 0700." if (metaData.permissions() != wantedPerms) { - // attempt to correct: - QSystemError error; - if (!QFileSystemEngine::setPermissions(entry, wantedPerms, error)) { - qErrnoWarning("QStandardPaths: could not set correct permissions on runtime directory " - "'%ls', which is %s", qUtf16Printable(xdgRuntimeDir), - describeMetaData(metaData).constData()); - return false; - } + qWarning("QStandardPaths: wrong permissions on runtime directory %ls, %s instead of %s", + qUtf16Printable(xdgRuntimeDir), + unixPermissionsText(metaData.permissions()).constData(), + unixPermissionsText(wantedPerms).constData()); + return false; } return true; diff -Naur a/qtbase/src/corelib/io/qurl.cpp b/qtbase/src/corelib/io/qurl.cpp --- a/qtbase/src/corelib/io/qurl.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/io/qurl.cpp 2022-01-25 17:23:44.139496309 +0000 @@ -1267,10 +1267,16 @@ zoneId = decoded.mid(zoneIdPosition + zoneIdIdentifier.size()); endBeforeZoneId = decoded.constBegin() + zoneIdPosition; + // was there anything after the zone ID separator? if (zoneId.isEmpty()) return end; } + // did the address become empty after removing the zone ID? + // (it might have always been empty) + if (decoded.constBegin() == endBeforeZoneId) + return end; + const QChar *ret = QIPAddressUtils::parseIp6(address, decoded.constBegin(), endBeforeZoneId); if (ret) return begin + (ret - decoded.constBegin()); diff -Naur a/qtbase/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp b/qtbase/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp --- a/qtbase/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/itemmodels/qconcatenatetablesproxymodel.cpp 2022-01-25 17:23:44.149496273 +0000 @@ -313,8 +313,8 @@ int QConcatenateTablesProxyModel::rowCount(const QModelIndex &parent) const { Q_D(const QConcatenateTablesProxyModel); - Q_ASSERT(checkIndex(parent, QAbstractItemModel::CheckIndexOption::ParentIsInvalid)); // flat model - Q_UNUSED(parent); + if (parent.isValid()) + return 0; // flat model return d->m_rowCount; } @@ -622,9 +622,14 @@ Q_Q(QConcatenateTablesProxyModel); Q_ASSERT(from.isValid()); Q_ASSERT(to.isValid()); + if (from.column() >= m_columnCount) + return; + QModelIndex adjustedTo = to; + if (to.column() >= m_columnCount) + adjustedTo = to.siblingAtColumn(m_columnCount - 1); const QModelIndex myFrom = q->mapFromSource(from); Q_ASSERT(q->checkIndex(myFrom, QAbstractItemModel::CheckIndexOption::IndexIsValid)); - const QModelIndex myTo = q->mapFromSource(to); + const QModelIndex myTo = q->mapFromSource(adjustedTo); Q_ASSERT(q->checkIndex(myTo, QAbstractItemModel::CheckIndexOption::IndexIsValid)); emit q->dataChanged(myFrom, myTo, roles); } diff -Naur a/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp --- a/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/itemmodels/qsortfilterproxymodel.cpp 2022-01-25 17:23:44.154496255 +0000 @@ -307,6 +307,8 @@ QHash::const_iterator create_mapping( const QModelIndex &source_parent) const; + QHash::const_iterator create_mapping_recursive( + const QModelIndex &source_parent) const; QModelIndex proxy_to_source(const QModelIndex &proxyIndex) const; QModelIndex source_to_proxy(const QModelIndex &sourceIndex) const; bool can_create_mapping(const QModelIndex &source_parent) const; @@ -533,6 +535,29 @@ return it; } +// Go up the tree, creating mappings, unless of course the parent is filtered out +IndexMap::const_iterator QSortFilterProxyModelPrivate::create_mapping_recursive(const QModelIndex &source_parent) const +{ + if (source_parent.isValid()) { + const QModelIndex source_grand_parent = source_parent.parent(); + IndexMap::const_iterator it = source_index_mapping.constFind(source_grand_parent); + IndexMap::const_iterator end = source_index_mapping.constEnd(); + if (it == end) { + it = create_mapping_recursive(source_grand_parent); + end = source_index_mapping.constEnd(); + if (it == end) + return end; + } + Mapping *gm = it.value(); + if (gm->proxy_rows.at(source_parent.row()) == -1 || + gm->proxy_columns.at(source_parent.column()) == -1) { + // Can't do, parent is filtered + return end; + } + } + return create_mapping(source_parent); +} + QModelIndex QSortFilterProxyModelPrivate::proxy_to_source(const QModelIndex &proxy_index) const { if (!proxy_index.isValid()) @@ -751,8 +776,10 @@ { Q_Q(QSortFilterProxyModel); QModelIndex proxy_parent = q->mapFromSource(source_parent); - if (!proxy_parent.isValid() && source_parent.isValid()) + if (!proxy_parent.isValid() && source_parent.isValid()) { + proxy_to_source.clear(); return; // nothing to do (already removed) + } const auto proxy_intervals = proxy_intervals_for_source_items( source_to_proxy, source_items); @@ -912,8 +939,9 @@ q->beginInsertColumns(proxy_parent, proxy_start, proxy_end); } - for (int i = 0; i < source_items.size(); ++i) - proxy_to_source.insert(proxy_start + i, source_items.at(i)); + // TODO: use the range QList::insert() overload once it is implemented (QTBUG-58633). + proxy_to_source.insert(proxy_start, source_items.size(), 0); + std::copy(source_items.cbegin(), source_items.cend(), proxy_to_source.begin() + proxy_start); build_source_to_proxy_mapping(proxy_to_source, source_to_proxy); @@ -1404,11 +1432,20 @@ const QModelIndex &source_bottom_right = data_changed.bottomRight; const QModelIndex source_parent = source_top_left.parent(); + bool change_in_unmapped_parent = false; IndexMap::const_iterator it = source_index_mapping.constFind(source_parent); if (it == source_index_mapping.constEnd()) { - // Don't care, since we don't have mapping for this index - continue; + // We don't have mapping for this index, so we cannot know how things + // changed (in case the change affects filtering) in order to forward + // the change correctly. + // But we can at least forward the signal "as is", if the row isn't + // filtered out, this is better than nothing. + it = create_mapping_recursive(source_parent); + if (it == source_index_mapping.constEnd()) + continue; + change_in_unmapped_parent = true; } + Mapping *m = it.value(); // Figure out how the source changes affect us @@ -1418,7 +1455,7 @@ QVector source_rows_resort; int end = qMin(source_bottom_right.row(), m->proxy_rows.count() - 1); for (int source_row = source_top_left.row(); source_row <= end; ++source_row) { - if (dynamic_sortfilter) { + if (dynamic_sortfilter && !change_in_unmapped_parent) { if (m->proxy_rows.at(source_row) != -1) { if (!filterAcceptsRowInternal(source_row, source_parent)) { // This source row no longer satisfies the filter, so it must be removed @@ -1489,15 +1526,19 @@ while (source_left_column < source_bottom_right.column() && m->proxy_columns.at(source_left_column) == -1) ++source_left_column; - const QModelIndex proxy_top_left = create_index( - proxy_start_row, m->proxy_columns.at(source_left_column), it); - int source_right_column = source_bottom_right.column(); - while (source_right_column > source_top_left.column() - && m->proxy_columns.at(source_right_column) == -1) - --source_right_column; - const QModelIndex proxy_bottom_right = create_index( - proxy_end_row, m->proxy_columns.at(source_right_column), it); - emit q->dataChanged(proxy_top_left, proxy_bottom_right, roles); + if (m->proxy_columns.at(source_left_column) != -1) { + const QModelIndex proxy_top_left = create_index( + proxy_start_row, m->proxy_columns.at(source_left_column), it); + int source_right_column = source_bottom_right.column(); + while (source_right_column > source_top_left.column() + && m->proxy_columns.at(source_right_column) == -1) + --source_right_column; + if (m->proxy_columns.at(source_right_column) != -1) { + const QModelIndex proxy_bottom_right = create_index( + proxy_end_row, m->proxy_columns.at(source_right_column), it); + emit q->dataChanged(proxy_top_left, proxy_bottom_right, roles); + } + } } } @@ -1629,8 +1670,8 @@ const bool toplevel = !source_parent.isValid(); const bool recursive_accepted = filter_recursive && !toplevel && filterAcceptsRowInternal(source_parent.row(), source_parent.parent()); - //Force the creation of a mapping now, even if its empty. - //We need it because the proxy can be acessed at the moment it emits rowsAboutToBeInserted in insert_source_items + //Force the creation of a mapping now, even if it's empty. + //We need it because the proxy can be accessed at the moment it emits rowsAboutToBeInserted in insert_source_items if (!filter_recursive || toplevel || recursive_accepted) { if (can_create_mapping(source_parent)) create_mapping(source_parent); @@ -1749,8 +1790,8 @@ { Q_UNUSED(start); Q_UNUSED(end); - //Force the creation of a mapping now, even if its empty. - //We need it because the proxy can be acessed at the moment it emits columnsAboutToBeInserted in insert_source_items + //Force the creation of a mapping now, even if it's empty. + //We need it because the proxy can be accessed at the moment it emits columnsAboutToBeInserted in insert_source_items if (can_create_mapping(source_parent)) create_mapping(source_parent); } @@ -1797,7 +1838,10 @@ source_sort_column = -1; } - proxy_sort_column = q->mapFromSource(model->index(0,source_sort_column, source_parent)).column(); + if (source_sort_column >= 0) + proxy_sort_column = q->mapFromSource(model->index(0,source_sort_column, source_parent)).column(); + else + proxy_sort_column = -1; } void QSortFilterProxyModelPrivate::_q_sourceColumnsAboutToBeMoved( @@ -3080,8 +3124,9 @@ if (d->filter_data.isEmpty()) return true; + + int column_count = d->model->columnCount(source_parent); if (d->filter_column == -1) { - int column_count = d->model->columnCount(source_parent); for (int column = 0; column < column_count; ++column) { QModelIndex source_index = d->model->index(source_row, column, source_parent); QString key = d->model->data(source_index, d->filter_role).toString(); @@ -3090,9 +3135,10 @@ } return false; } - QModelIndex source_index = d->model->index(source_row, d->filter_column, source_parent); - if (!source_index.isValid()) // the column may not exist + + if (d->filter_column >= column_count) // the column may not exist return true; + QModelIndex source_index = d->model->index(source_row, d->filter_column, source_parent); QString key = d->model->data(source_index, d->filter_role).toString(); return d->filter_data.hasMatch(key); } diff -Naur a/qtbase/src/corelib/kernel/qcoreapplication.cpp b/qtbase/src/corelib/kernel/qcoreapplication.cpp --- a/qtbase/src/corelib/kernel/qcoreapplication.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/kernel/qcoreapplication.cpp 2022-01-25 17:23:44.103496438 +0000 @@ -398,10 +398,11 @@ #endif #if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) -// Check whether the command line arguments match those passed to main() -// by comparing to the global __argv/__argc (MS extension). -// Deep comparison is required since argv/argc is rebuilt by WinMain for -// GUI apps or when using MinGW due to its globbing. +// Check whether the command line arguments passed to QCoreApplication +// match those passed into main(), to see if the user has modified them +// before passing them on to us. We do this by comparing to the global +// __argv/__argc (MS extension). Deep comparison is required since +// argv/argc is rebuilt by our WinMain entrypoint. static inline bool isArgvModified(int argc, char **argv) { if (__argc != argc || !__argv /* wmain() */) @@ -1251,8 +1252,8 @@ /*! - Processes all pending events for the calling thread according to - the specified \a flags until there are no more events to process. + Processes some pending events for the calling thread according to + the specified \a flags. You can call this function occasionally when your program is busy performing a long operation (e.g. copying a file). @@ -1299,6 +1300,9 @@ \note Unlike the \l{QCoreApplication::processEvents(QEventLoop::ProcessEventsFlags flags)}{processEvents()} overload, this function also processes events that are posted while the function runs. + \note All events that were queued before the timeout will be processed, + however long it takes. + \threadsafe \sa exec(), QTimer, QEventLoop::processEvents() @@ -2430,32 +2434,46 @@ qWarning("QCoreApplication::arguments: Please instantiate the QApplication object first"); return list; } - const int ac = self->d_func()->argc; - char ** const av = self->d_func()->argv; - list.reserve(ac); - -#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) - // On Windows, it is possible to pass Unicode arguments on - // the command line. To restore those, we split the command line - // and filter out arguments that were deleted by derived application - // classes by index. - QString cmdline = QString::fromWCharArray(GetCommandLine()); const QCoreApplicationPrivate *d = self->d_func(); - if (d->origArgv) { - const QStringList allArguments = qWinCmdArgs(cmdline); - Q_ASSERT(allArguments.size() == d->origArgc); - for (int i = 0; i < d->origArgc; ++i) { - if (contains(ac, av, d->origArgv[i])) - list.append(allArguments.at(i)); + + const int argc = d->argc; + char ** const argv = d->argv; + list.reserve(argc); + +#if defined(Q_OS_WIN) && !defined(Q_OS_WINRT) + const bool argsModifiedByUser = d->origArgv == nullptr; + if (!argsModifiedByUser) { + // On Windows, it is possible to pass Unicode arguments on + // the command line, but we don't implement any of the wide + // entry-points (wmain/wWinMain), so get the arguments from + // the Windows API instead of using argv. Note that we only + // do this when argv were not modified by the user in main(). + QString cmdline = QString::fromWCharArray(GetCommandLine()); + QStringList commandLineArguments = qWinCmdArgs(cmdline); + + // Even if the user didn't modify argv before passing them + // on to QCoreApplication, derived QApplications might have. + // If that's the case argc will differ from origArgc. + if (argc != d->origArgc) { + // Note: On MingGW the arguments from GetCommandLine are + // not wildcard expanded (if wildcard expansion is enabled), + // as opposed to the arguments in argv. This means we can't + // compare commandLineArguments to argv/origArgc, but + // must remove elements by value, based on whether they + // were filtered out from argc. + for (int i = 0; i < d->origArgc; ++i) { + if (!contains(argc, argv, d->origArgv[i])) + commandLineArguments.removeAll(QString::fromLocal8Bit(d->origArgv[i])); + } } - return list; + + return commandLineArguments; } // Fall back to rebuilding from argv/argc when a modified argv was passed. #endif // defined(Q_OS_WIN) && !defined(Q_OS_WINRT) - for (int a = 0; a < ac; ++a) { - list << QString::fromLocal8Bit(av[a]); - } + for (int a = 0; a < argc; ++a) + list << QString::fromLocal8Bit(argv[a]); return list; } diff -Naur a/qtbase/src/corelib/kernel/qcore_mac.mm b/qtbase/src/corelib/kernel/qcore_mac.mm --- a/qtbase/src/corelib/kernel/qcore_mac.mm 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/kernel/qcore_mac.mm 2022-01-25 17:23:44.135496323 +0000 @@ -654,7 +654,7 @@ KeyValueObserver *QMacKeyValueObserver::observer = [[KeyValueObserver alloc] init]; QT_END_NAMESPACE -@implementation KeyValueObserver +@implementation QT_MANGLE_NAMESPACE(KeyValueObserver) - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { diff -Naur a/qtbase/src/corelib/kernel/qelapsedtimer_generic.cpp b/qtbase/src/corelib/kernel/qelapsedtimer_generic.cpp --- a/qtbase/src/corelib/kernel/qelapsedtimer_generic.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/kernel/qelapsedtimer_generic.cpp 2022-01-25 17:23:44.125496359 +0000 @@ -81,7 +81,8 @@ } /*! - Restarts the timer and returns the time elapsed since the previous start. + Restarts the timer and returns the number of milliseconds elapsed since + the previous start. This function is equivalent to obtaining the elapsed time with elapsed() and then starting the timer again with start(), but it does so in one single operation, avoiding the need to obtain the clock value twice. diff -Naur a/qtbase/src/corelib/kernel/qeventdispatcher_cf.mm b/qtbase/src/corelib/kernel/qeventdispatcher_cf.mm --- a/qtbase/src/corelib/kernel/qeventdispatcher_cf.mm 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/kernel/qeventdispatcher_cf.mm 2022-01-25 17:23:44.135496323 +0000 @@ -89,7 +89,7 @@ QT_NAMESPACE_ALIAS_OBJC_CLASS(RunLoopModeTracker); -@implementation RunLoopModeTracker { +@implementation QT_MANGLE_NAMESPACE(RunLoopModeTracker) { QStack m_runLoopModes; } diff -Naur a/qtbase/src/corelib/kernel/qeventloop.cpp b/qtbase/src/corelib/kernel/qeventloop.cpp --- a/qtbase/src/corelib/kernel/qeventloop.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/kernel/qeventloop.cpp 2022-01-25 17:23:44.082496513 +0000 @@ -118,8 +118,8 @@ /*! - Processes pending events that match \a flags until there are no - more events to process. Returns \c true if pending events were handled; + Processes some pending events that match \a flags. + Returns \c true if pending events were handled; otherwise returns \c false. This function is especially useful if you have a long running diff -Naur a/qtbase/src/corelib/kernel/qmetatype_p.h b/qtbase/src/corelib/kernel/qmetatype_p.h --- a/qtbase/src/corelib/kernel/qmetatype_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/kernel/qmetatype_p.h 2022-01-25 17:23:44.138496312 +0000 @@ -108,6 +108,11 @@ #define QT_DECLARE_WIDGETS_MODULE_TYPES_ITER(TypeName, TypeId, Name) \ QT_ASSIGN_TYPE_TO_MODULE(Name, QModulesPrivate::Widgets); +QT_WARNING_PUSH +#if defined(Q_CC_CLANG) && Q_CC_CLANG >= 900 +QT_WARNING_DISABLE_CLANG("-Wconstant-logical-operand") +#endif + QT_FOR_EACH_STATIC_PRIMITIVE_TYPE(QT_DECLARE_CORE_MODULE_TYPES_ITER) QT_FOR_EACH_STATIC_PRIMITIVE_POINTER(QT_DECLARE_CORE_MODULE_TYPES_ITER) QT_FOR_EACH_STATIC_CORE_CLASS(QT_DECLARE_CORE_MODULE_TYPES_ITER) @@ -115,6 +120,8 @@ QT_FOR_EACH_STATIC_CORE_TEMPLATE(QT_DECLARE_CORE_MODULE_TYPES_ITER) QT_FOR_EACH_STATIC_GUI_CLASS(QT_DECLARE_GUI_MODULE_TYPES_ITER) QT_FOR_EACH_STATIC_WIDGETS_CLASS(QT_DECLARE_WIDGETS_MODULE_TYPES_ITER) + +QT_WARNING_POP } // namespace QModulesPrivate #undef QT_DECLARE_CORE_MODULE_TYPES_ITER diff -Naur a/qtbase/src/corelib/kernel/qobject.cpp b/qtbase/src/corelib/kernel/qobject.cpp --- a/qtbase/src/corelib/kernel/qobject.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/kernel/qobject.cpp 2022-01-25 17:23:44.196496104 +0000 @@ -4223,7 +4223,7 @@ qDebug(" SIGNALS OUT"); QObjectPrivate::ConnectionData *cd = d->connections.loadRelaxed(); - if (cd && cd->signalVectorCount()) { + if (cd && cd->signalVectorCount() > 0) { QObjectPrivate::SignalVector *signalVector = cd->signalVector.loadRelaxed(); for (int signal_index = 0; signal_index < signalVector->count(); ++signal_index) { const QObjectPrivate::Connection *c = signalVector->at(signal_index).first.loadRelaxed(); diff -Naur a/qtbase/src/corelib/kernel/qtranslator.cpp b/qtbase/src/corelib/kernel/qtranslator.cpp --- a/qtbase/src/corelib/kernel/qtranslator.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/kernel/qtranslator.cpp 2022-01-25 17:23:44.121496373 +0000 @@ -647,7 +647,6 @@ QString realname; realname += path + filename + prefix; // using += in the hope for some reserve capacity const int realNameBaseSize = realname.size(); - QStringList fuzzyLocales; // see http://www.unicode.org/reports/tr35/#LanguageMatching for inspiration @@ -661,32 +660,12 @@ } #endif - // try explicit locales names first for (QString localeName : qAsConst(languages)) { localeName.replace(QLatin1Char('-'), QLatin1Char('_')); - realname += localeName + suffixOrDotQM; - if (is_readable_file(realname)) - return realname; - - realname.truncate(realNameBaseSize + localeName.size()); - if (is_readable_file(realname)) - return realname; - - realname.truncate(realNameBaseSize); - fuzzyLocales.append(localeName); - } - - // start guessing - for (const QString &fuzzyLocale : qAsConst(fuzzyLocales)) { - QStringRef localeName(&fuzzyLocale); + // try the complete locale name first and progressively truncate from + // the end until a matching language tag is found (with or without suffix) for (;;) { - int rightmost = localeName.lastIndexOf(QLatin1Char('_')); - // no truncations? fail - if (rightmost <= 0) - break; - localeName.truncate(rightmost); - realname += localeName + suffixOrDotQM; if (is_readable_file(realname)) return realname; @@ -696,6 +675,11 @@ return realname; realname.truncate(realNameBaseSize); + + int rightmost = localeName.lastIndexOf(QLatin1Char('_')); + if (rightmost <= 0) + break; // no truncations anymore, break + localeName.truncate(rightmost); } } @@ -754,10 +738,10 @@ \li \c /opt/foolib/foo.es \li \c /opt/foolib/foo.fr_CA.qm \li \c /opt/foolib/foo.fr_CA - \li \c /opt/foolib/foo.de.qm - \li \c /opt/foolib/foo.de \li \c /opt/foolib/foo.fr.qm \li \c /opt/foolib/foo.fr + \li \c /opt/foolib/foo.de.qm + \li \c /opt/foolib/foo.de \li \c /opt/foolib/foo.qm \li \c /opt/foolib/foo. \li \c /opt/foolib/foo diff -Naur a/qtbase/src/corelib/mimetypes/mime/packages/freedesktop.org.xml b/qtbase/src/corelib/mimetypes/mime/packages/freedesktop.org.xml --- a/qtbase/src/corelib/mimetypes/mime/packages/freedesktop.org.xml 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/mimetypes/mime/packages/freedesktop.org.xml 2022-01-25 17:23:44.169496201 +0000 @@ -1,183 +1,177 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + - Atari 2600 - Atari 2600 - Atari 2600 - Atari 2600 - Atari 2600 - Atari 2600 - Atari 2600 - Atari 2600 - Atari 2600 - Atari 2600 - Atari 2600 - Atari 2600 - אטארי 2600 - Atari 2600 - Atari 2600 - Atari 2600 - Atari 2600 - Atari 2600 - Atari 2600 - Atari 2600 - Atari 2600 - Atari 2600 - Atari 2600 - Atari 2600 - Атари 2600 - Atari 2600 - Atari 2600 - Atari 2600 - 雅达利 2600 - Atari 2600 + Atari 2600 ROM + ROM — Atari 2600 + ROM d'Atari 2600 + Atari 2600-ROM + Atari 2600 ROM + Atari 2600 ROM + ROM de Atari 2600 + Atari 2600 ROMa + Atari 2600 ROM + ROM Atari 2600 + ROM Atari 2600 + Atari 2600 ROM + Atari 2600 ROM + Atari 2600 ROM + ROM Atari 2600 + Atari 2600 ROM + 아타리 2600 롬 + Plik ROM konsoli Atari 2600 + ROM Atari 2600 + ROM do Atari 2600 + Atari 2600 ROM + Atari 2600-rom + Atari 2600 ROM + Atari 2600 ROM + 雅达利 2600 ROM + 雅達利 2600 ROM - Atari 7800 - Atari 7800 - Atari 7800 - Atari 7800 - Atari 7800 - Atari 7800 - Atari 7800 - Atari 7800 - Atari 7800 - Atari 7800 - Atari 7800 - Atari 7800 - אטארי 7800 - Atari 7800 - Atari 7800 - Atari 7800 - Atari 7800 - Atari 7800 - Atari 7800 - Atari 7800 - Atari 7800 - Atari 7800 - Atari 7800 - Atari 7800 - Атари 7800 - Atari 7800 - Atari 7800 - Atari 7800 - 雅达利 7800 - Atari 7800 + Atari 7800 ROM + ROM — Atari 7800 + ROM d'Atari 7800 + Atari 7800-ROM + Atari 7800 ROM + Atari 7800 ROM + ROM de Atari 7800 + Atari 7800 ROMa + Atari 7800 ROM + ROM Atari 7800 + ROM Atari 7800 + Atari 7800 ROM + Atari 7800 ROM + Atari 7800 ROM + ROM Atari 7800 + Atari 7800 ROM + 아타리 7800 롬 + Plik ROM konsoli Atari 7800 + ROM Atari 7800 + ROM do Atari 7800 + Atari 7800 ROM + Atari 7800-rom + Atari 7800 ROM + Atari 7800 ROM + 雅达利 7800 ROM + 雅達利 7800 ROM - + - Atari Lynx - Atari Lynx - Atari Lynx - Atari Lynx - Atari Lynx - Atari Lynx - Atari Lynx - Atari Lynx - Atari Lynx - Atari Lynx - Atari Lynx - Atari Lynx - Atari Lynx - Atari Lynx - Atari Lynx - Atari Lynx - Atari Lynx - Atari Lynx - Atari Lynx - Atari Lynx - 雅达利 Lynx - Atari Lynx + Atari Lynx ROM + ROM — Atari Lynx + ROM d'Atari Lynx + Atari Lynx-ROM + Atari Lynx ROM + Atari Lynx ROM + ROM de Atari Lynx + Atari Lynx ROMa + Atari Lynx ROM + ROM Atari Lynx + ROM Atari Lynx + Atari Lynx ROM + Atari Lynx ROM + Atari Lynx ROM + ROM Atari Lynx + Atari Lynx ROM + 아타리 링스 롬 + Plik ROM konsoli Atari Lynx + ROM Atari Lynx + ROM do Atari Lynx + Atari Lynx ROM + Atari Lynx-rom + Atari Lynx ROM + Atari Lynx ROM + 雅达利 Lynx ROM + 雅達利 Lynx ROM - + ATK inset شكل ATK - Ustaŭka ATK - Сбор — ATK + Ustaŭka ATK + Притурка — ATK ATK inset vložka ATK ATK-indsættelse ATK-Inset Ένθετο ATK - ATK inset + ATK inset inserción ATK ATK sartzapena ATK-osio ATK innskot encart ATK + inset ATK intlis ATK conxunto ATK תוספת ATK @@ -197,7 +191,7 @@ encart ATK Wstawka ATK Suplemento ATK - Conjunto de entrada do ATK + Conjunto de entrada do ATK Inset ATK Вкладка ATK Vložka ATK @@ -208,8 +202,8 @@ ATK iç metni вкладка ATK Bộ dát ATK - ATK 嵌入对象 - ATK 內嵌 + ATK 嵌入对象 + ATK 內嵌 ATK Andrew Toolkit @@ -217,21 +211,23 @@ electronic book document + elektronieseboekdokument مستند كتاب إلكتروني documentu de llibru electrónicu - elektronnaja kniha + elektronnaja kniha Документ — електронна книга document de llibre electrònic dokument elektronické knihy elektronisk bogdokument Elektronisches Buch Έγγραφο ηλεκτρονικού βιβλίου - electronic book document + electronic book document documento de libro electrónico liburu elektronikoaren dokumentua elektroninen kirja elektroniskbóka skjal document livre électronique + document libri eletronic leabhar leictreonach documento de libro electrónico מסמך מסוג ספר אלקטרוני @@ -250,7 +246,7 @@ document libre electronic Dokument książki elektronicznej documento de livro eletrónico - Documento de livro eletrônico + Documento de livro eletrônico document carte electronică Электронная книга Dokument elektronickej knihy @@ -261,45 +257,77 @@ elektronik kitap belgesi документ електронної книги tài liệu cuốn sách điện tử - 电子书文档 - 電子書文件 + 电子书文档 + 電子書文件 - - - - + + + + + + Kindle book document + document de llibre Kindle + Kindle-bogdokument + Kindle-Buch-Dokument + Kindle book document + documento de libro de Kindle + Kindle book -asiakirja + document livre Kindle + Dokument Kindle knjige + Kindle könyvdokumentum + Dokumen buku Kindle + Documento libro Kindle + Kindle кітап құжаты + Kindle 책 문서 + Kindle knygos dokumentas + Dokument książki Kindle + documento de livro eletrónico do Kindle + Documento livro do Kindle + Электронная книга Kindle + Kindle-bokdokument + Kindle kitap belgesi + документ книги Kindle + Kindle 电子书文档 + Kindle 書文件 + + + + + Adobe Illustrator document + Adobe Illustrator-dokument مستند أدوبي المصور Documentu d'Adobe Illustrator - Dakument Adobe Illustrator + Dakument Adobe Illustrator Документ — Adobe Illustrator document d'Adobe Illustrator dokument Adobe Illustrator Adobe Illustrator-dokument Adobe-Illustrator-Dokument Έγγραφο Adobe Illustrator - Adobe Illustrator document + Adobe Illustrator document dokumento de Adobe Illustrator documento de Adobe Illustrator Adobe Illustrator dokumentua Adobe Illustrator -asiakirja Adobe Illustrator skjal document Adobe Illustrator + document Adobe Illustrator cáipéis Adobe Illustrator documento de Adobe Ilustrator מסמך Adobe Ill Adobe Illustrator dokument Adobe Illustrator-dokumentum Documento Adobe Illustrator - dokumen Adobe Illustrator + Dokumen Adobe Illustrator Documento Adobe Illustrator Adobe Illustrator ドキュメント Adobe Illustrator-ის დოკუმენტი @@ -314,7 +342,7 @@ document Adobe Illustrator Dokument Adobe Illustrator documento Adobe Illustrator - Documento do Adobe Illustrator + Documento do Adobe Illustrator Document Adobe Illustrator Документ Adobe Illustrator Dokument Adobe Illustrator @@ -325,18 +353,19 @@ Adobe Illustrator belgesi документ Adobe Illustrator Tài liệu Adobe Illustrator - Adobe Illustrator 文档 - Adobe Illustrator 文件 + Adobe Illustrator 文档 + Adobe Illustrator 文件 Macintosh BinHex-encoded file + Macintosh BinHex-geënkodeerde lêer ملف Macintosh BinHex مشفر Ficheru codificáu en BinHex de Machintosh Macintosh BinHex-kodlanmış fayl - Fajł Macintosh, BinHex-zakadavany + Fajł Macintosh, BinHex-zakadavany Файл — кодиран във формат BinHex за Macintosh fitxer amb codificació BinHex de Macintosh soubor kódovaný pomocí Macintosh BinHex @@ -344,20 +373,21 @@ Macintosh BinHex-kodet fil Macintosh-Datei (BinHex-kodiert) Αρχείο Macintosh κωδικοποίησης BinHex - Macintosh BinHex-encoded file + Macintosh BinHex-encoded file dosiero kodigita laŭ Macintosh BinHex archivo Macintosh codificado con BinHex Macintosh BinHex-ekin kodetutako fitxategia Macintosh BinHex -koodattu tiedosto Macintosh BinHex-bronglað fíla fichier codé Macintosh BinHex + file di Macintosh codificât BinHex comhad ionchódaithe le Macintosh BinHex ficheiro de Macintosh codificado con BinHex קובץ בקידוד Macintosh BinHex Macintosh BinHex-kôdirana datoteka Macintosh BinHex kódolású fájl File codificate in BinHex de Macintosh - berkas tersandi Macintosh BinHex + Berkas tersandi Macintosh BinHex File Macintosh codificato BinHex Macintosh BinHex エンコードファイル Macintosh BinHex кодталған файлы @@ -371,7 +401,7 @@ fichièr encodat Macintosh BinHex Zakodowany w BinHex plik Macintosh ficheiro codificado em BinHex de Macintosh - Arquivo do Macintosh codificado com BinHex + Arquivo do Macintosh codificado com BinHex Fișier codat Macintosh BinHex Файл (закодированный Macintosh BinHex) Súbor kódovaný pomocou Macintosh BinHex @@ -382,61 +412,40 @@ Macintosh BinHex-şifreli dosya файл закодований Macintosh BinHex Tập tin đã mã hoá BinHex của Macintosh - Macintosh BinHex 编码的文件 - Macintosh BinHex 編碼檔 + Macintosh BinHex 编码的文件 + Macintosh BinHex 編碼檔 - + - Mathematica Notebook - مذكرة رياضيات - Natatnik Mathematica - Тетрадка — Mathematica - llibreta de notes de Mathematica - sešit Mathematica - Mathematica Notebook - Mathematica-Dokument - Σημειωματάριο Mathematica - Mathematica Notebook - libreta de Mathematica - Mathematica Notebook - Mathematica-muistilehtiö - Mathematica skriviblokkur - carnet de notes Mathematica - leabhar nótaí Mathematica - notebook de Mathematica - מחברת מתמטיקה - Matematička bilježnica - Mathematica notesz - Carnet de notas Mathematica - Mathematica Notebook - Notebook Mathematica - Mathematica ノートブック - Mathematica Notebook - Mathematica 노트북 - Mathematica užrašinė - Mathematica bloknots - Mathematica notisblokk - Mathematica-notitieboek - Mathematica-notatbok - quasernet de nòtas Mathematica - Notatnik Mathematica - Bloco notas Mathematica - Caderno do Mathematica - Carnețel Mathematica - Mathematica Notebook - Zošit programu Mathematica - Datoteka dokumenta Mathematica - Notebook matematike - бележница Математике - Mathematica Notebook-dokument - Mathematica Defteri - математичний записник - Cuốn vở Mathematica - Mathematica 笔记本 - Mathematica Notebook + Mathematica Notebook file + Скицник — Mathematica + llibreta de Mathematica Notebook + Mathematica Notebook-fil + Mathematica-Notebook-Datei + Mathematica Notebook file + archivo de Mathematica Notebook + Mathematica Notebook fitxategia + Mathematica Notebook -tiedosto + fichier carnet Mathematica + Mathematica Notebook datoteka + Mathematica munkafüzetfájl + Berkas Mathematica Notebook + File Mathematica Notebook + Mathematica блокнот файлы + 매쓰매티카 기록장 파일 + Plik notatnika Mathematica + ficheiro de Mathematica Notebook do Wolfram + Arquivo Notebook do Mathematica + Файл Mathematica Notebook + Datoteka Mathematica Notebook + Mathematica-anteckningsboksfil + Mathematica Notebook dosyası + файл нотатника Mathematica + Mathematica 笔记本文件 + Mathematica 筆記本檔案 @@ -449,10 +458,11 @@ MathML document + MathML-dokument مستند MathML Documentu MathML MathML sənədi - Dakument MathML + Dakument MathML Документ — MathML document MathML dokument MathML @@ -460,20 +470,21 @@ MathML-dokument MathML-Dokument Έγγραφο MathML - MathML document + MathML document MathML-dokumento documento MathML MathML dokumentua MathML-asiakirja MathML skjal document MathML + document MathML cáipéis MathML documento de MathML מסמך MathML MathML dokument MathML-dokumentum Documento MathML - dokumen MathML + Dokumen MathML Documento MathML MathML ドキュメント MathML-ის დოკუმენტი @@ -488,7 +499,7 @@ document MathML Dokument MathML documento MathML - Documento do MathML + Documento do MathML Document MathML Документ MathML Dokument MathML @@ -499,8 +510,8 @@ MathML belgesi документ MathML Tài liệu MathML - MathML 文档 - MathML 文件 + MathML 文档 + MathML 文件 MathML Mathematical Markup Language @@ -510,20 +521,22 @@ mailbox file + mailbox-lêer ملف صندوق البريد - fajł paštovaj skryni + fajł paštovaj skryni Файл — Mailbox fitxer mailbox soubor mailbox postkassefil Mailbox-Datei Αρχείο mailbox - mailbox file + mailbox file archivo de buzón de correo mailbox fitxategia mailbox-tiedosto postkassafíla fichier boîte aux lettres + file mailbox comhad bhosca poist ficheiro de caixa de correo קובץ תיבת-דואר @@ -543,7 +556,7 @@ fichièr bóstia de letras Plik poczty (Mailbox) ficheiro de caixa de correio - Arquivo de caixa de correio + Arquivo de caixa de correio fișier căsuță poștală Файл почтового ящика Súbor mailbox @@ -551,20 +564,21 @@ File mailbox датотека поштанског сандучета brevlådefil - posta kutusu dosyası + mailbox dosyası файл поштової скриньки tập tin hộp thư - 邮箱文件 - 郵箱檔 + 邮箱文件 + 郵箱檔 - + Metalink file + Metalink-lêer ملف ميتالنك Ficheru d'enllaz meta Изтегляне — Metalink @@ -573,20 +587,21 @@ Metahenvisningsfil Metalink-Datei Αρχείο Metalink - Metalink file + Metalink file Metalink-dosiero archivo de Metalink Metaestekaren fitxategia Metalink-tiedosto Metalink fíla fichier metalink + file Metalink comhad Metalink ficheiro Metalink קובץ Metalink Datoteka meta poveznice Metalink fájl File Metalink - berkas Metalink + Berkas Metalink File Metalink Metalink ファイル Metalink файлы @@ -597,7 +612,7 @@ fichièr metalink Plik Metalink ficheiro Metalink - Arquivo Metalink + Arquivo Metalink Fișier Metalink Файл Metalink Súbor Metalink @@ -606,17 +621,18 @@ Metalink-fil Metalink dosyası файл метапосилання - Metalink 文件 - Metalink 檔案 + Metalink 文件 + Metalink 檔案 - + Metalink file + Metalink-lêer ملف ميتالنك Ficheru d'enllaz meta Изтегляне — Metalink @@ -625,20 +641,21 @@ Metahenvisningsfil Metalink-Datei Αρχείο Metalink - Metalink file + Metalink file Metalink-dosiero archivo de Metalink Metaestekaren fitxategia Metalink-tiedosto Metalink fíla fichier metalink + file Metalink comhad Metalink ficheiro Metalink קובץ Metalink Datoteka meta poveznice Metalink fájl File Metalink - berkas Metalink + Berkas Metalink File Metalink Metalink ファイル Metalink файлы @@ -649,7 +666,7 @@ fichièr metalink Plik Metalink ficheiro Metalink - Arquivo Metalink + Arquivo Metalink Fișier Metalink Файл Metalink Súbor Metalink @@ -658,33 +675,35 @@ Metalink-fil Metalink dosyası файл метапосилання - Metalink 文件 - Metalink 檔案 + Metalink 文件 + Metalink 檔案 - + unknown + onbekend مجهول desconozse - nieviadomy + nieviadomy Неизвестен тип desconegut neznámý ukendt unbekannt Άγνωστο - unknown + unknown nekonate desconocido ezezaguna tuntematon ókent inconnu + no cognossût anaithnid descoñecido לא ידוע @@ -706,7 +725,7 @@ desconegut Nieznany typ desconhecido - Desconhecido + Desconhecido necunoscut Неизвестно Neznámy @@ -717,22 +736,25 @@ bilinmeyen невідомо không rõ - 未知 - 不明 + 未知 + 不明 Partially downloaded file + Gedeeltelik afgelaaide lêer Ficheru baxáu parcialmente + Частично изтеглен файл fitxer baixat parcialment částečně stažený soubor - Delvist hentet fil + Delvist downloadet fil Teilweise heruntergeladene Datei Μερικώς ληφθέντο αρχείο - Partially downloaded file + Partially downloaded file archivo descargado parcialmente Partzialki deskargatutako fitxategia Osittain ladattu tiedosto fichier partiellement téléchargé + file no discjariât dal dut Comhad leath-íoslódáilte Ficheiro descargado parcialmente קובץ שהתקבל חלקית @@ -743,10 +765,11 @@ File parzialmente scaricato Жартылай жүктелген файл 일부 다운로드한 파일 + Dalinai atsiųstas failas fichièr parcialament telecargat Częściowo pobrany plik - Ficheiro parcialmente transferido - Arquivo baixado parcialmente + ficheiro descarregado parcialmente + Arquivo baixado parcialmente Частично загруженный файл Čiastočne stiahnutý súbor Delno prenesena datoteka @@ -754,8 +777,8 @@ Delvis hämtad fil Kısmen indirilmiş dosya частково отриманий файл - 部分下载的文件 - 已部份下載的檔案 + 部分下载的文件 + 已部份下載的檔案 @@ -763,10 +786,11 @@ ODA document + ODA-dokument مستند ODA Documentu ODA ODA sənədi - Dakument ODA + Dakument ODA Документ — ODA document ODA dokument ODA @@ -774,13 +798,14 @@ ODA-dokument ODA-Dokument Έγγραφο ODA - ODA document + ODA document ODA-dokumento documento ODA ODA dokumentua ODA-asiakirja ODA skjal document ODA + document ODA cáipéis ODA documento ODA מסמך ODA @@ -802,7 +827,7 @@ document ODA Dokument ODA documento ODA - Documento ODA + Documento ODA Document ODA Документ ODA Dokument ODA @@ -813,8 +838,8 @@ ODA belgesi документ ODA Tài liệu ODA - ODA 文档 - ODA 文件 + ODA 文档 + ODA 文件 ODA Office Document Architecture @@ -822,6 +847,7 @@ WWF document + WWF-dokument Documentu WWF Документ — WWF document WWF @@ -829,12 +855,13 @@ WWF-dokument WWF-Dokument Έγγραφο WWF - WWF document + WWF document WWF-dokumento documento WWF WWF dokumentua WWF-asiakirja document WWF + document WWF cáipéis WWF documento de WWF מסמך WWF @@ -847,12 +874,13 @@ WWF დოკუმენტი WWF құжаты WWF 문서 + WWF dokumentas WWF dokuments WWF document document WWF Dokument WWF documento WWF - Documento WWF + Documento WWF Документ WWF Dokument WWF Dokument WWF @@ -860,8 +888,8 @@ WWF-dokument WWF belgesi документ WWF - WWF - WWF 文件 + WWF + WWF 文件 @@ -869,9 +897,10 @@ PDF document + PDF-dokument مستند PDF Documentu PDF - Dakument PDF + Dakument PDF Документ — PDF document PDF dokument PDF @@ -879,13 +908,14 @@ PDF-dokument PDF-Dokument Έγγραφο PDF - PDF document + PDF document PDF-dokumento documento PDF PDF dokumentua PDF-asiakirja PDF skjal document PDF + document PDF cáipéis PDF documento PDF מסמך PDF @@ -906,7 +936,7 @@ document PDF Dokument PDF documento PDF - Documento PDF + Documento PDF Document PDF Документ PDF Dokument PDF @@ -917,13 +947,13 @@ PDF belgesi документ PDF Tài liệu PDF - PDF 文档 - PDF 文件 + PDF 文档 + PDF 文件 PDF Portable Document Format - + @@ -933,22 +963,24 @@ XSPF playlist + XSPF-speellys قائمة تشغيل XSPF Llista de reproducción XSPF - Śpis piesień XSPF + Śpis piesień XSPF Списък за изпълнение — XSPF llista de reproducció XSPF seznam k přehrání XSPF XSPF-afspilningsliste XSPF-Wiedergabeliste Λίστα αναπαραγωγής XSPF - XSPF playlist + XSPF playlist XSPF-ludlisto lista de reproducción XSPF XSPF erreprodukzio-zerrenda XSPF-soittolista XSPF avspælingarlisti liste de lecture XSPF + liste di riproduzion XSPF seinmliosta XSPF lista de reprodución XSPF רשימת נגינה XSPF @@ -968,7 +1000,7 @@ lista de lectura XSPF Lista odtwarzania XSPF lista de reprodução XSPF - Lista de reprodução XSPF + Lista de reprodução XSPF Listă XSPF Список воспроизведения XSPF Zoznam skladieb XSPF @@ -979,15 +1011,15 @@ XSPF çalma listesi список програвання XSPF Danh mục nhạc XSPF - XSPF 播放列表 - XSPF 播放清單 + XSPF 播放列表 + XSPF 播放清單 XSPF XML Shareable Playlist Format - - + + @@ -995,6 +1027,7 @@ Microsoft Windows theme pack + Microsoft Windows-temapak حزمة سمات Microsoft Works Paquete de temes de Microsoft Windows Пакет с тема — Microsoft Windows @@ -1003,12 +1036,13 @@ Microsoft Windows-temapakke Microsoft-Windows-Themenpaket Πακέτο θέματος Microsoft Windows - Microsoft Windows theme pack + Microsoft Windows theme pack paquete de tema para Microsoft Windows Microsoft Windows-en gaiaren paketea Microsoft Windows -teemapaketti Microsoft Windows tema pakki paquet de thèmes Microsoft Windows + pachet temis di Microsoft Windows paca téamaí Microsoft Windows paquete de tema de Microsoft Windows חבילת ערכות נושא של Microsoft Windows @@ -1027,7 +1061,7 @@ paquet de tèmas Microsoft Windows Pakiet motywu Microsoft Windows pacote de tema Microsoft Windows - Pacote de temas do Microsoft Windows + Pacote de temas do Microsoft Windows Pachet de teme Microsoft Windows Пакет темы Microsoft Windows Balík tém Microsoft Windows @@ -1036,24 +1070,28 @@ Microsoft Windows-temapaket Microsoft Windows tema paketi пакунок з темою Microsoft Windows - Microsoft Windows 主题包 - 微軟視窗佈景主題包 + Microsoft Windows 主题包 + 微軟視窗佈景主題包 AmazonMP3 download file + AmazonMP3-aflaailêer Ficheru de descarga AmazonMP3 + Файл за изтегляне — AmazonMP3 fitxer baixat d'AmazonMP3 soubor stahování AmazonMP3 AmazonMP3-downloadfil AmazonMP3-Herunterladedatei Αρχείο λήψης AmazonMP3 - AmazonMP3 download file + AmazonMP3 download file archivo de descarga de AmazonMP3 AmazonMP3 deskarga fitxategia + AmazonMP3-lataustiedosto fichier téléchargé AmazonMP3 + file discjariât AmazonMP3 comhad íoslódáilte AmazonMP3 Ficheiro de descarga de AmazonMP3 קובץ הורדת AmazonMP3 @@ -1069,7 +1107,7 @@ fichièr telecargat AmazonMP3 Pobrany plik AmazonMP3 ficheiro transferido AmazonMP3 - Arquivo de download AmazonMP3 + Arquivo de download AmazonMP3 Файл загрузки AmazonMP3 Stiahnutý súbor AmazonMP3 Datoteka prenosa AmazonMP3 @@ -1077,12 +1115,13 @@ AmazonMP3-hämtningsfil AmazonMP3 indirme dosyası файл завантаження AmazonMP3 - AmazonMP3 下载文件 - AmazonMP3 下載檔 + AmazonMP3 下载文件 + AmazonMP3 下載檔 GSM 06.10 audio + GSM 06.10-oudio GSM 06.10 سمعي Audiu GSM 6.10 Аудио — GSM 06.10 @@ -1091,12 +1130,13 @@ GSM 06.10-lyd GSM-06.10-Audio Ήχος GSM 06.10 - GSM 06.10 audio - sonido GSM 06.10 + GSM 06.10 audio + audio GSM 06.10 GSM 06.10 audioa GSM 06.10 -ääni GSM 06.10 ljóður audio GSM 06.10 + audio GSM 06.10 fuaim GSM 06.10 son de GSM 06.10 שמע GSM 06.10 @@ -1115,7 +1155,7 @@ àudio GSM 06.10 Plik dźwiękowy GSM 06.10 áudio GSM 06.10 - Áudio GSM 06.10 + Áudio GSM 06.10 GSM 06.10 audio Аудио GSM 06.10 Zvuk GSM 06.10 @@ -1125,85 +1165,65 @@ GSM 06.10 ses dosyası звук GSM 06.10 Âm thanh GSM 06.10 - GSM 06.10 音频 - GSM 06.10 音訊 + GSM 06.10 音频 + GSM 06.10 音訊 GSM Global System for Mobile communications - iRiver Playlist - قائمة تشغيل iRiver - Llista de reproducción iRiver - Śpis piesień iRiver + iRiver playlist Списък за изпълнение — iRiver llista de reproducció iRiver - seznam k přehrání iRiver iRiver-afspilningsliste iRiver-Wiedergabeliste - Λίστα αναπαραγωγής iRiver - iRiver Playlist - iRiver-ludlisto + iRiver playlist lista de reproducción de iRiver iRiver erreprodukzio-zerrenda iRiver-soittolista - iRiver avspælingarlisti liste de lecture iRiver - seinmliosta iRiver - lista de reprodución de iRiver - רשימת נגינה של iRiver iRiver popis izvođenja iRiver lejátszólista - Lista de selection iRiver - iRiver Playlist + daftar putar iRiver Playlist iRiver - iRiver 再生リスト iRiver ойнау тізімі - iRiver 재생 목록 - iRiver grojaraštis - iRiver repertuārs - iRiver-spilleliste - iRiver-afspeellijst - iRiver speleliste - lista de lectura iRiver + 아이리버 재생 목록 Lista odtwarzania iRiver - lista de reprodução iRiver - Lista de reprodução do iRiver - Listă iRiver + lista de reprodução do iRiver + Lista de reprodução do iRiver Список воспроизведения iRiver Zoznam skladieb iRiver Seznam predvajanja iRiver - Listë titujsh iRiver - иРивер списак нумера iRiver-spellista - iRiver Çalma Listesini - список програвання iRiver - danh mục nhạc iRiver - iRiver 播放列表 - iRiver 播放清單 + iRiver çalma listesi + список відтворення iRiver + iRiver 播放列表 + iRiver 播放清單 - + PGP/MIME-encrypted message header + Kop van PGP/MIME-geënkripteerde boodskap ترويسة رسالة PGP/MIME-مشفرة Testera de mensaxe cifrada en PGP/MIME - Zahałovak paviedamleńnia, zašyfravany ŭ PGP/MIME + Zahałovak paviedamleńnia, zašyfravany ŭ PGP/MIME Заглавна част на шифрирано съобщение — PGP/MIME capçalera de missatge amb xifrat PGP/MIME záhlaví zprávy zašifrované pomocí PGP/MIME PGP-/MIME-krypteret meddelelseshoved PGP/MIME-verschlüsselter Nachrichtenkopf Κεφαλίδα μηνύματος κρυπτογραφημένου κατά PGP/MIME - PGP/MIME-encrypted message header + PGP/MIME-encrypted message header PGP/MIME-ĉifrita ĉapo de mesaĝo cabecera de mensaje cifrado PGP/MIME - PGP/MIME enkriptatutako mezu-goiburua + PGP/MIME zifratutako mezu-goiburua PGP/MIME-salattu viestiotsikko PGP/MIME-encrypted boð tekshøvd en-tête de message codé PGP/MIME + intestazion messaç cifrât in PGP/MIME ceanntásc teachtaireachta ionchódaithe le PGP/MIME cabeceira de mensaxe cifrado PGP/MIME כותר של קובץ מוצפן מסוג PGP/MIME @@ -1224,7 +1244,7 @@ entèsta de messatge encodat PGP/MIME Nagłówek listu zaszyfrowanego PGP/MIME cabeçalho de mensagem encriptada com PGP/MIME - Cabeçalho de mensagem criptografada PGP/MIME + Cabeçalho de mensagem criptografada PGP/MIME Antet de mesaj encriptat PGP/MIME Заголовок сообщения, зашифрованный PGP/MIME Hlavičke správy zašifrovaná pomocou PGP/MIME @@ -1235,24 +1255,25 @@ PGP/MIME-şifreli ileti başlığı заголовок шифрованого PGP/MIME повідомлення Phần đầu thông điệp đã mật mã bằng PGP/MIME - PGP/MIME 加密的信件头 - PGP/MIME 加密訊息標頭 + PGP/MIME 加密的信件头 + PGP/MIME 加密訊息標頭 - + - + PGP keys + PGP-sleutels مفاتيح PGP Claves PGP PGP açarları - Klučy PGP + Klučy PGP Ключове — PGP claus PGP klíče PGP @@ -1260,13 +1281,14 @@ PGP-nøgler PGP-Schlüssel Κλειδιά PGP - PGP keys + PGP keys PGP-ŝlosiloj claves PGP PGP giltzak PGP-avainrengas PGP lyklar clés PGP + clâfs PGP eochracha PGP Chaves PGP מפתחות PGP @@ -1287,7 +1309,7 @@ claus PGP Klucze PGP chaves PGP - Chaves PGP + Chaves PGP Chei PGP Ключи PGP Kľúče PGP @@ -1298,43 +1320,46 @@ PGP anahtarları ключі PGP Khoá PGP - PGP 密钥 - PGP 鑰匙 + PGP 密钥 + PGP 金鑰 PGP Pretty Good Privacy - - - - - - + + + + + + - + + detached OpenPGP signature + losstaande OpenPGP-handtekening إمضاء OpenPGP مفصول - adłučany podpis OpenPGP - Отделен подпис — OpenPGP + adłučany podpis OpenPGP + Отделѐн подпис — OpenPGP signatura OpenPGP abstreta oddělený podpis OpenPGP frigjort OpenPGP-signatur isolierte OpenPGP-Signatur Αποκομμένη υπογραφή OpenPGP - detached OpenPGP signature + detached OpenPGP signature dekroĉa OpenPGP-subskribo firma OpenPGP separada desuzturtako OpenPGP sinadura erillinen OpenPGP-allekirjoitus skild OpenPGP undirskrift signature OpenPGP détachée + firme OpenPGP distacade síniú OpenPGP scartha sinatura de OpenPGP independente חתימת OpenPGP מנותקת @@ -1355,7 +1380,7 @@ signatura OpenPGP destacada Oddzielony podpis OpenPGP assinatura OpenPGP solta - Assinatura OpenPGP destacada + Assinatura OpenPGP destacada semnătură OpenPGP detașată Отсоединённая подпись OpenPGP Oddelený podpis OpenPGP @@ -1366,57 +1391,48 @@ müstakil OpenPGP imzası відокремлений OpenPGP підпис chữ ký OpenPGP tách rời - 分离的 OpenPGP 签名 - 分離的 OpenPGP 簽章 + 分离的 OpenPGP 签名 + 分離的 OpenPGP 簽章 - + - + - + - PKCS#7 Message or Certificate - Mensaxe o certificáu PKCS#7 - missatge o certificat PKCS#7 - zpráva nebo certifikát PKCS#7 - PKCS#7-besked eller certifikat - PKCS#7 Nachricht oder Zertifikat - Μήνυμα ή πιστοποιητικό PKCS#7 - PKCS#7 Message or Certificate - mensaje o certificado PKCS#7 - PKCS#7 mezu edo zertifikazioa - PKCS#7-viesti tai -varmenne - Message ou certificat PKCS#7 - Teachtaireacht nó Teastas PKCS#7 - Mensaxe ou certificado PKCS#7 - הודעה או אישור מסוג PKCS#7 - PKCS#7 poruka ili vjerodajnica - PKCS#7 üzenet vagy tanúsítvány - Message o certificato PKCS#7 - Sertifikat atau Pesan PKCS#7 - Messaggio o certificato PKCS#7 - PKCS#7 メッセージまたは証明書 - PKCS#7 хабарламасы не сертификаты - PKCS#7 메시지 또는 인증서 - PKCS#7 ziņojums vai sertifikāts - Messatge o certificat PKCS#7 - Wiadomość lub certyfikat PKCS#7 - Mensagem ou certificado PKCS#7 - Certificado ou Mensagem PKCS#7 - Сообщение или сертификат PKCS#7 - Správa alebo certifikát PKCS#7 - Sporočilo ali dovoljenje PKCS#7 - ПКЦС#7 порука или уверење - PKCS#7-meddelande eller -certifikat - PKCS#7 İletisi veya Sertifikası - повідомлення або сертифікат PKCS#7 - PKCS#7 消息或证书 - PKCS#7 訊息或憑證 + PKCS#7 file + Файл за PKCS#7 + fitxer PKCS#7 + PKCS#7-fil + PKCS#7-Datei + PKCS#7 file + archivo PKCS#7 + PKCS#7 fitxategia + PKCS#7-tiedosto + fichier PKCS#7 + PKCS#7 datoteka + PKCS#7 fájl + Berkas PKCS#7 + File PKCS#7 + PKCS#7 файлы + PKCS#7 파일 + PKCS#7 failas + Plik PKCS#7 + ficheiro PKCS#7 + Arquivo PKCS#7 + Файл PKCS#7 + Súbor PKCS#7 + Datoteka PKCS#7 + PKCS#7-fil + PKCS#7 dosyası + файл PKCS#7 + PKCS#7 文件 + PKCS#7 檔案 PKCS Public-Key Cryptography Standards @@ -1425,21 +1441,23 @@ detached S/MIME signature + losstaande S/MIME-handtekening إمضاء S/MIME مفصول - adłučany podpis S/MIME - Отделен подпис — S/MIME + adłučany podpis S/MIME + Отделѐн подпис — S/MIME signatura S/MIME abstreta oddělený podpis S/MIME frigjort S/MIME-signatur isolierte S/MIME-Signatur Αποκομμένη υπογραφή S/MIME - detached S/MIME signature + detached S/MIME signature dekroĉa S/MIME-subskribo firma S/MIME separada desuzturtako S/MIME sinadura erillinen S/MIME-allekirjoitus skild S/MIME undirskrift signature S/MIME détachée + firme S/MIME distacade síniú S/MIME scartha sinatura S/MIME independente חתימת S/MIME מנותקת @@ -1460,7 +1478,7 @@ signatura S/MIME destacada Oddzielony podpis S/MIME assinatura S/MIME solta - Assinatura S/MIME destacada + Assinatura S/MIME destacada semnătură S/MIME detașată Отсоединённая подпись S/MIME Oddelený podpis S/MIME @@ -1471,8 +1489,8 @@ müstakil S/MIME imzası відокремлений S/MIME підпис chữ ký S/MIME tách rời - 分离的 S/MIME 签名 - 分離的 S/MIME 簽章 + 分离的 S/MIME 签名 + 分離的 S/MIME 簽章 S/MIME Secure/Multipurpose Internet Mail Extensions @@ -1481,19 +1499,21 @@ PKCS#8 private key + PKCS#8- private sleutel رزمة الشهادة PKCS#8 - Ключ, частен — PKCS#8 + Ключ — PKCS#8, частен clau privada PKCS#8 soukromý klíč PKCS#8 PKCS#8-privat nøgle - PKCS#8 Geheimer Schlüssel + PKCS#8 privater Schlüssel Ιδιωτικό κλειδί PKCS#8 - PKCS#8 private key + PKCS#8 private key clave privada PCKS#8 PKCS#8 gako pribatua PKCS#8 yksityinen avain PKCS#8 privatur lykil clé privée PKCS#8 + clâf privade PKCS#8 eochair phríobháideach PKCS#8 Chave privada PKCS#8 מפתח פרטי של PKCS#8 @@ -1511,7 +1531,7 @@ clau privada PKCS#8 Klucz prywatny PKCS#8 chave privada PKCS#8 - Chave privada PKCS#8 + Chave privada PKCS#8 Cheie privată PKCS#8 Личный ключ PKCS#8 Súkromný kľúč PKCS#8 @@ -1520,34 +1540,66 @@ Privat PKCS#8-nyckel PKCS#8 özel anahtarı закритий ключ PKCS#8 - PKCS#8 私钥 - PKCS#8 私人金鑰 + PKCS#8 私钥 + PKCS#8 私人金鑰 PKCS Public-Key Cryptography Standards PKCS#8 private key (encrypted) + PKCS#8- private sleutel (geënkripteer) + Ключ — PKCS#8, частен, шифриран + clau privada PKCS#8 (xifrada) + soukromý klíč PKCS#8 (zašifrovaný) + PKCS#8-privat nøgle (krypteret) + PKCS#8 privater Schlüssel (verschlüsselt) + PKCS#8 private key (encrypted) + clave privada PKCS#8 (cifrada) + PKCS#8 gako pribatua (zifratua) + PKCS#8 yksityinen avain (salattu) + clé privée PKCS#8 (chiffrée) + clâf privade PKCS#8 (cifrade) + eochair phríobháideach PKCS#8 (criptithe) + PKCS#8 privatni ključ (šifriran) + PKCS#8 személyes kulcs (titkosított) + Kunci privat PKCS#8 (terenkripsi) + Chiave privata PKCS#8 (cifrata) + PKCS#8 жеке кілті (шифрленген) + PKCS#8 개인 키(암호화됨) + Klucz prywatny PKCS#8 (zaszyfrowany) + chave privada PKCS#8 (encriptada) + Chave privada PKCS#8 (criptografada) + Личный ключ PKCS#8 (зашифрованный) + Súkromný kľúč PKCS#8 (šifrovaný) + Zasebni ključ PKCS#8 (širfirano) + Privat PKCS#8-nyckel (krypterad) + PKCS#8 özel anahtar (şifrelenmiş) + закритий ключ PKCS#8 (зашифрований) + PKCS#8 私钥(已加密) + PKCS#8 私人金鑰 (加密) PKCS Public-Key Cryptography Standards PKCS#10 certification request + PKCS#10-sertifiseringsversoek طلب شهادة PKCS#10 - Zapyt sertyfikacyi PKCS#10 + Zapyt sertyfikacyi PKCS#10 Заявка за сертификат — PKCS#10 sol·licitud de certificació PKCS#10 žádost o certifikát PKCS#10 PKCS#10-certifikatanmodning PKCS#10-Zertifikatanfrage Αίτηση πιστοποίησης PKCS#10 - PKCS#10 certification request + PKCS#10 certification request petición de certificados PKCS#10 PKCS#10 ziurtagirien eskaera PKCS#10-varmennepyyntö PKCS#10 váttanarumbøn requête de certification PKCS#10 + richieste certificazion PKCS#10 iarratas dheimhniúchán PKCS#10 Solicitude de certificado PKCS#10 בקשה מוסמכת PLCS#10 @@ -1567,7 +1619,7 @@ requèsta de certificacion PKCS#10 Żądanie certyfikatu PKCS#10 pedido de certificação PKCS#10 - Pedido de certificação PKCS#12 + Pedido de certificação PKCS#12 Cerere de certificat PKCS#10 Запрос сертификации PKCS#10 Požiadavka na certifikát PKCS#10 @@ -1578,8 +1630,8 @@ PKCS#10 sertifika isteği комплект сертифікатів PKCS#10 Yêu cầu chứng nhận PKCS#10 - PKCS#10 认证请求 - PKCS#10 憑證請求 + PKCS#10 认证请求 + PKCS#10 憑證請求 PKCS Public-Key Cryptography Standards @@ -1587,6 +1639,7 @@ X.509 certificate + X.509-sertifikaat شهادة X.509 Certificáu X.509 Сертификат — X.509 @@ -1595,12 +1648,13 @@ X.509-certifikat X.509-Zertifikat Πιστοποιητικό X.509 - X.509 certificate + X.509 certificate certificado X.509 X.509 ziurtagiria X.509-varmenne X.509 prógv certificat X.509 + certificât X.509 teastas X.509 Certificado X.509 אישור X.509 @@ -1618,7 +1672,7 @@ certificat X.509 Certyfikat X.509 certificado X.509 - Certificado X.509 + Certificado X.509 Certificat X.509 Сертификат X.509 Certifikát X.509 @@ -1627,58 +1681,41 @@ X.509-certifikat X.509 sertifikası сертифікат X.509 - X.509 证书 - X.509 憑證 + X.509 证书 + X.509 憑證 - Certificate revocation list - قائمة إبطال الشهادات - Llistáu de revocación de certificaos + certificate revocation list Списък с отхвърлени сертификати llista de revocació de certificats - seznam odvolaných certifikátů - Certifikattilbagekaldelsesliste - Liste widerrufener Zertifikate - Λίστα ανάκλησης πιστοποιητικού - Certificate revocation list + certifikat tilbagetrækkelsesliste + Zertifikatsperrliste + certificate revocation list lista de revocación de certificados - Ziurtagiri-errebokatzeen zerrenda + ziurtagiri-errebokatzeen zerrenda Varmenteiden sulkulista - Prógv afturtøkulisti liste de révocation de certificat - Liosta teastas cúlghairmthe - lista de certificados de revogación - רשימת אישורים מבוטלים Popis opozvanih vjerodajnica - Tanúsítvány-visszavonási lista - Lista de revocation de certificatos - Daftar pencabutan sertificat (CRL) + tanúsítvány visszavonási lista + daftar pencabutan sertifikat Elenco certificati di revoca - 証明書失効リスト - Сертификатты қайта шақыру тізімі + сертификатты қайта шақыру тізімі 인증서 철회 목록 - Panaikintų liudijimų sąrašas - Sertifikātu atsaukšanu saraksts - Certificaat revocation lijst - lista de revocacion de certificat Lista unieważnień certyfikatów lista de revogação de certificados - Lista de revogação de certificado - Listă de revocare a certificatelor - Список аннулирования сертификатов - Zoznam zrušených certifikátov - Datoteka seznama preklica potrdil - списак повлачења уверења - Spärrlista för certifikat - Sertifika iptal listesi + Lista de revogação de certificados + список аннулирования сертификатов + certifikatåterkallningslista + sertifika iptal listesi список відкликання сертифікатів - 证书吊销列表 - 憑證撤銷清單 + 证书吊销列表 + 憑證撤銷清單 PkiPath certification path + PkiPath-sertifiseringspad مسار شهادة PkiPath Camín de certificación PkiPath Сертификационна верига — PkiPath @@ -1687,12 +1724,13 @@ PkiPath-certifikationssti PkiPath-Zertifikatspfad Διαδρομή πιστοποιητικού PkiPath - PkiPath certification path + PkiPath certification path ruta de certificación PkiPath PkiPath ziurtagirien bide-izena PkiPath-varmennepolku PkiPath váttanleið chemin de certification PkiPath + percors di certificazion PkiPath conair dheimhniúcháin PkiPath Ruta de certificación PkiPath נתיב מאושר של PkiPath @@ -1710,7 +1748,7 @@ camin de certificacion PkiPath Ścieżka certyfikacji PkiPath caminho de certificação PkiPath - Pedido de certificação PkiPath + Pedido de certificação PkiPath Cale certificare PkiPath Путь сертификации PkiPath Cesta k certifikátu PkiPath @@ -1720,88 +1758,67 @@ PkiPath sertifika yolu шлях сертифікації PkiPath Đường dẫn cấp chứng nhận PkiPath - PkiPath 证书目录 - PkiPath 憑證路徑 + PkiPath 证书目录 + PkiPath 憑證路徑 - PS document - مستند PS - Documentu PS - Dakument PS - Документ — PS - document PS - dokument PS - PS-dokument - PS-Dokument - Έγγραφο PS - PS document - PS-dokumento - documento PS - PS dokumentua - PS-asiakirja - PS skjal - document PS - cáipéis PS - documento PS - מסמך PS - PS dokument - PS dokumentum - Documento PS - Dokumen PS - Documento PS - PS ドキュメント - PS құжаты - PS 문서 - PS dokumentas - PS dokuments - PS-dokument - PS-document - PS-dokument - document PS - Dokument PS - documento PS - Documento PS - Document PS - Документ PS - Dokument PS - Dokument PS - Dokument PS - ПС документ - PS-dokument - PS belgesi - документ PS - Tài liệu PS - PS 文档 - Ps 文件 - PS - PostScript + PostScript document + Документ — PostScrip + document PostScript + PostScript-dokument + PostScript-Dokument + PostScript document + documento PostScript + PostScript dokumentua + PostScript-asiakirja + document PostScript + PostScript dokument + PostScript dokumentum + Dokumen PostScript + Documento PostScript + PostScript құжаты + 포스트스크립트 문서 + PostScript dokumentas + Dokument PostScript + documento PostScript + Documento PostScript + Документ PostScript + Dokument PostScript + Dokument PostScript + Postscript-dokument + PostScript belgesi + документ PostScript + PostScript 文档 + PostScript 文件 - - + + Plucker document + Plucker-dokument مستند Plucker Documentu Plucker - Dakument Plucker + Dakument Plucker Документ — Plucker document Plucker dokument Plucker Pluckerdokument Plucker-Dokument Έγγραφο Plucker - Plucker document + Plucker document Plucker-dokumento documento de Plucker Plucker dokumentua Plucker-asiakirja Plucker skjal document Plucker + document Plucker cáipéis Plucker documento de Plucker מסמך של Plucker @@ -1821,7 +1838,7 @@ document Plucker Dokument Plucker documento Plucker - Documento do Plucker + Documento do Plucker Document Plucker Документ Plucker Dokument Plucker @@ -1832,54 +1849,61 @@ Plucker belgesi документ Plucker Tài liệu Plucker - Plucker 文档 - Plucker 文件 + Plucker 文档 + Plucker 文件 - + RAML document + RAML-dokument Documentu RAML + Документ — RAML document RAML dokument RAML RAML-dokument RAML-Dokument - RAML document + RAML document documento RAML RAML dokumentua RAML-asiakirja document RAML + document RAML cáipéis RAML מסמך RAML RAML dokument RAML dokumentum - dokumen RAML + Dokumen RAML Documento RAML RAML құжаты RAML 문서 + RAML dokumentas Document RAML Dokument RAML - Documento RAML + documento RAML + Documento RAML Документ RAML Dokument RAML + Dokument RAML РАМЛ документ RAML-dokument RAML belgesi документ RAML - RAML 文档 - RAML 文件 + RAML 文档 + RAML 文件 RAML RESTful API Modeling Language - + RELAX NG XML schema + RELAX NG XML-skema مخطط RELAX NG XML Схема за XML — RELAX NG esquema XML en RELAX NG @@ -1887,11 +1911,12 @@ RELAX NG XML-skema RELAX NG XML-Schema Σχήμα RELAX NG XML - RELAX NG XML schema + RELAX NG XML schema esquema XML RELAX NG RELAX NG XML eskema RELAX NG XML-skeema schéma XML RELAX NG + scheme XML RELAX NG scéimre XML RELAX NG Esquema XML RELAX NG סכנת RELAX NG XML @@ -1909,7 +1934,7 @@ esquèma XML RELAX NG Schemat XML RELAX NG Esquema RELAX NG XML - Esquema XML de RELAX NG + Esquema XML de RELAX NG Schemă RELAX NG XML XML-схема RELAX NG XML schéma RELAX NG @@ -1918,8 +1943,8 @@ RELAX NG XML-schema RELAX NG XML şeması XML-схема RELAX NG - RELAX NG XML 模式 - RELAX NG XML schema + RELAX NG XML 模式 + RELAX NG XML 綱要 RELAX NG REgular LAnguage for XML Next Generation @@ -1929,22 +1954,24 @@ RTF document + RTF-dokument مستند RTF Documentu RTF - Dakument RTF + Dakument RTF Документ — RTF document RTF dokument RTF RTF-dokument RTF-Dokument Έγγραφο RTF - RTF document + RTF document RTF-dokumento documento RTF RTF dokumentua RTF-asiakirja RTF skjal document RTF + document RTF cáipéis RTF documento RTF מסמך RTF @@ -1964,7 +1991,7 @@ document RTF Dokument RTF documento RTF - Documento RTF + Documento RTF Document RTF Документ RTF Dokument RTF @@ -1975,33 +2002,35 @@ RTF belgesi документ RTF Tài liệu RTF - RTF 文档 - RTF 文件 + RTF 文档 + RTF 文件 RTF Rich Text Format - + Sieve mail filter script + Sieve-posfiltreerskrip سكربت مرشح بريد Sieve - Skrypt filtravańnia pošty Sieve + Skrypt filtravańnia pošty Sieve Скрипт-филтър за пресяване на поща script de filtre de correu Sieve skript poštovního filtru Sieve Sieve e-post-filterprogram Sieve-E-Mail-Filterskript Δέσμη ενεργειών φιλτραρίσματος αλληλογραφίας Sieve - Sieve mail filter script + Sieve mail filter script secuencia de órdenes de filtro en Sieve Sieve posta-iragazki script-a Sieve-postinsuodatuskomentotiedosto script de filtrage de courriel Sieve + script filtri pueste Sieve script scagaire r-phost Sieve Script de filtro de correo Sieve תסריט סינון דואר של Sieve @@ -2021,7 +2050,7 @@ escript de filtratge de corrièr electronic Sieve Skrypt filtra poczty Sieve Script de filtragem de correio Sieve - Script de filtro de mensagens do Sieve + Script de filtro de mensagens do Sieve Script filtrare email Sieve Сценарий почтового фильтра Sieve Skript poštového filtra Sieve @@ -2029,33 +2058,35 @@ Script filtrim poste Sieve Сјев скрипта пропусника поште Sieve-epostfilterskript - Sieve posta filtre betiği + Sieve posta süzgeç betiği скрипт поштового фільтру Sieve Văn lệnh lọc thư Sieve - Sieve 邮件过滤脚本 - Sieve 郵件過濾指令稿 + Sieve 邮件过滤脚本 + Sieve 郵件篩選指令稿 SMIL document + SMIL-dokument مستند SMIL Documentu SMIL - Dakument SMIL + Dakument SMIL Документ — SMIL document SMIL dokument SMIL SMIL-dokument SMIL-Dokument Έγγραφο SMIL - SMIL document + SMIL document SMIL-dokumento documento SMIL SMIL dokumentua SMIL-asiakirja SMIL skjal document SMIL + document SMIL cáipéis SMIL documento SMIL מסמך SMIL @@ -2075,7 +2106,7 @@ document SMIL Dokument SMIL documento SMIL - Documento SMIL + Documento SMIL Document SMIL Документ SMIL Dokument SMIL @@ -2086,8 +2117,8 @@ SMIL belgesi документ SMIL Tài liệu SMIL - SMIL 文档 - SMIL 文件 + SMIL 文档 + SMIL 文件 SMIL Synchronized Multimedia Integration Language @@ -2098,7 +2129,7 @@ - + @@ -2106,6 +2137,7 @@ WPL playlist + WPL-speellys قائمة تشغيل WPL Списък за изпълнение — WPL llista de reproducció WPL @@ -2113,13 +2145,14 @@ WPL-afspilningsliste WPL-Wiedergabeliste Λίστα αναπαραγωγής WPL - WPL playlist + WPL playlist WPL-ludlisto lista de reproducción WPL WPL erreprodukzio-zerrenda WPL-soittolista WPL avspælingarlisti liste de lecture WPL + liste di riproduzion WPL seinmliosta WPL lista de reprodución WPL רשימת נגינה WPL @@ -2137,7 +2170,7 @@ lista de lectura WPL Lista odtwarzania WPL lista de reprodução WPL - Lista de reprodução do WPL + Lista de reprodução do WPL Listă redare WPL Список воспроизведения WPL Zoznam skladieb WPL @@ -2147,33 +2180,35 @@ WPL çalma listesi список відтворення WPL Danh mục nhạc WPL - WPL 播放列表 - WPL 播放清單 + WPL 播放列表 + WPL 播放清單 WPL Windows Media Player Playlist - + SQLite2 database + SQLite2-databasis قاعدة بيانات SQLite2 - Baza źviestak SQLite2 + Baza źviestak SQLite2 База от данни — SQLite2 base de dades SQLite2 databáze SQLite2 SQLite2-database SQLite2-Datenbank Βάση δεδομένων SQLite2 - SQLite2 database + SQLite2 database SQLite2-datumbazo base de datos SQLite2 SQLite2 datu-basea SQLite2-tietokanta SQLite2 dátustovnur base de données SQLite2 + base di dâts SQLite2 bunachar sonraí SQLite2 base de datos SQLite2 מסד נתונים מסוג SQLite2 @@ -2193,7 +2228,7 @@ banca de donadas SQLite2 Baza danych SQLite2 base de dados SQLite2 - Banco de dados SQLite2 + Banco de dados SQLite2 Bază de date SQLite2 База данных SQLite2 Databáza SQLite2 @@ -2201,33 +2236,35 @@ Bazë me të dhëna SQLite2 СКуЛајт2 база података SQLite2-databas - SQLite2 veritabanı + SQLite2 veri tabanı База даних SQLite2 Cơ sở dữ liệu SQLite2 - SQLite2 数据库 - SQLite2 資料庫 + SQLite2 数据库 + SQLite2 資料庫 - + SQLite3 database + SQLite3-databasis قاعدة بيانات SQLite3 - Baza źviestak SQLite3 + Baza źviestak SQLite3 База от данни — SQLite3 base de dades SQLite3 databáze SQLite3 SQLite3-database SQLite3-Datenbank Βάση δεδομένων SQLite3 - SQLite3 database + SQLite3 database SQLite3-datumbazo base de datos SQLite3 SQLite3 datu-basea SQLite3-tietokanta SQLite3 dátustovnur base de données SQLite3 + base di dâts SQLite3 bunachar sonraí SQLite3 base de datos SQLite3 מסד נתונים מסוג SQLite3 @@ -2247,7 +2284,7 @@ banca de donadas SQLite3 Baza danych SQLite3 base de dados SQLite3 - Banco de dados SQLite3 + Banco de dados SQLite3 Bază de date SQLite3 База данных SQLite3 Databáza SQLite3 @@ -2255,33 +2292,57 @@ Bazë me të dhëna SQLite3 СКуЛајт3 база података SQLite3-databas - SQLite3 veritabanı + SQLite3 veri tabanı база даних SQLite3 Cơ sở dữ liệu SQLite3 - SQLite3 数据库 - SQLite3 資料庫 + SQLite3 数据库 + SQLite3 資料庫 - + + + Apple System Profiler + System Profiler d'Apple + Apple System Profiler + Apple-Systeminformationen + Apple System Profiler + perfil del sistema de Apple + Applen järjestelmän profiloija + Apple profiler sustava + Profiler di sistema Apple + Profiler komputera Apple + Perfilador do sistema Apple + Apple Systeminformation + засіб профілювання системи Apple + Apple 系统概述 + + + + + + + GEDCOM family history + GEDCOM-familiegeskiedenis تاريخ عائلة GEDCOM - Siamiejnaja historyja GEDCOM + Siamiejnaja historyja GEDCOM Родословно дърво — GEDCOM antecedents familiars GEDCOM rodokmen GEDCOM GEDCOM-familiehistorie GEDCOM-Stammbaum Οικογενειακό ιστορικό GEDCOM - GEDCOM family history + GEDCOM family history historial familiar de GEDCOM GEDCOM famili historia GEDCOM-sukuhistoria GEDCOM familjusøga généalogie GEDCOM + gjenealogjie GEDCOM stair theaghlach GEDCOM historial de familia GEDCOM היסטוריה משפחתית של GEDCOM @@ -2302,7 +2363,7 @@ genealogia GEDCOM Plik historii rodziny GEDCOM história familiar GEDCOM - Histórico familiar do GEDCOM + Histórico familiar do GEDCOM Tablou genealogic GEDCOM История семьи GEDCOM Rodokmeň GEDCOM @@ -2313,13 +2374,13 @@ GEDCOM aile geçmişi історія родини GEDCOM Lịch sử gia đình GEDCOM - GEDCOM 家谱 - GEDCOM 家族史 + GEDCOM 家谱 + GEDCOM 族譜 GEDCOM GEnealogical Data COMmunication - + @@ -2327,22 +2388,24 @@ Flash video + Flash-video Flash مرئي Videu en Flash - Videa Flash + Videa Flash Видео — Flash vídeo de Flash video Flash Flashvideo Flash-Video Βίντεο Flash - Flash video + Flash video Flash-video vídeo Flash Flash bideoa Flash-video Flash video vidéo Flash + video Flash físeán Flash vídeo Flash וידאו של פלאש @@ -2363,7 +2426,7 @@ vidèo Flash Plik wideo Flash vídeo Flash - Vídeo Flash + Vídeo Flash Video Flash Видео Flash Video Flash @@ -2374,11 +2437,11 @@ Flash video відеокліп Flash Ảnh động Flash - Flash 视频 - Flash 視訊 + Flash 视频 + Flash 視訊 - + @@ -2387,6 +2450,7 @@ JavaFX video + JavaFX-video Videu en JavaFX Видео — JavaFX vídeo de JavaFX @@ -2394,13 +2458,14 @@ JavaFX-video JavaFX-Video Βίντεο JavaFX - JavaFX video + JavaFX video JavaFX-video vídeo JavaFX JavaFX bideoa JavaFX-video JavaFX video vidéo JavaFX + video JavaFX físeán JavaFX vídeo JavaFX וידאו JavaFX @@ -2412,12 +2477,13 @@ JavaFX 動画 JavaFX аудиосы JavaFX 동영상 + JavaFX vaizdo įrašas JavaFX video JavaFX video vidèo JavaFX Plik wideo JavaFX vídeo JavaFX - Vídeo JavaFX + Vídeo JavaFX Video JavaFX Видео JavaFX Video JavaFX @@ -2426,32 +2492,36 @@ JavaFX-video JavaFX video відеокліп JavaFX - JavaFX 视频 - JavaFX 視訊 + JavaFX 视频 + JavaFX 視訊 - + - + SGF record + SGF-rekord تسجيلة SGF - Zapisanaja hulnia SGF + Zapisanaja hulnia SGF Запис — SGF registre SGF nahrávka SGF SGF-optagelse SGF-Aufzeichnung Εγγραφή SGF - SGF record + SGF record grabación SGF SGF erregistroa SGF-nauhoitus SGF met partie SGF + regjistrazion SGF taifead SGF Grabación SGF הקלטת SGF @@ -2471,7 +2541,7 @@ partida SGF Zapis gry SGF gravação SGF - Gravação SGF + Gravação SGF Înregistrare SGF Запись SGF Záznam SGF @@ -2482,35 +2552,37 @@ SGF kaydı запис SGF Mục ghi SGF - SGF 记录 - SGF 紀錄 + SGF 记录 + SGF 紀錄 SGF Smart Game Format - - + + XLIFF translation file + XLIFF-vertaallêer ملف ترجمة XLIFF Ficheru de traducciones XLIFF - Fajł pierakładu XLIFF + Fajł pierakładu XLIFF Превод — XLIFF fitxer de traducció XLIFF soubor překladu XLIFF XLIFF-oversættelsesfil XLIFF-Übersetzung Αρχείο μετάφρασης XLIFF - XLIFF translation file + XLIFF translation file archivo de traducción XLIFF XLIFF itzulpen-fitxategia XLIFF-käännöstiedosto XLIFF týðingarfíla fichier de traduction XLIFF + file di traduzion XLIFF comhad aistriúcháin XLIFF ficheiro de tradución XLIFF קובץ תרגום CLIFF @@ -2530,7 +2602,7 @@ fichièr de traduccion XLIFF Plik tłumaczenia XLIFF ficheiro de tradução XLIFF - Arquivo de tradução XLIFF + Arquivo de tradução XLIFF Fișier de traducere XLIFF Файл перевода XLIFF Súbor prekladu XLIFF @@ -2541,8 +2613,8 @@ XLIFF çeviri dosyası файл перекладу XLIFF Tập tin dịch XLIFF - XLIFF 翻译文件 - XLIFF 翻譯檔 + XLIFF 翻译文件 + XLIFF 翻譯檔 XLIFF XML Localization Interchange File Format @@ -2550,13 +2622,14 @@ - + - + YAML document + YAML-dokument مستند YAML Documentu YAML Документ — YAML @@ -2565,13 +2638,14 @@ YAML-dokument YAML-Dokument Έγγραφο YAML - YAML document + YAML document YAML-dokumento documento YAML YAML dokumentua YAML-asiakirja YAML skjal document YAML + document YAML cáipéis YAML documento YAML מסמך YAML @@ -2589,7 +2663,7 @@ document YAML Dokument YAML documento YAML - Documento YAML + Documento YAML Document YAML Документ YAML Dokument YAML @@ -2598,14 +2672,14 @@ YAML-dokument YAML belgesi документ YAML - YAML 文档 - YAML 文件 + YAML 文档 + YAML 文件 YAML YAML Ain't Markup Language - + @@ -2614,10 +2688,11 @@ Corel Draw drawing + Corel Draw-tekening تصميم Corel Draw Dibuxu de Corel Draw Corel Draw çəkimi - Rysunak Corel Draw + Rysunak Corel Draw Чертеж — Corel Draw dibuix de Corel Draw kresba Corel Draw @@ -2625,13 +2700,14 @@ Corel Draw-tegning Corel-Draw-Zeichnung Σχέδιο Corel Draw - Corel Draw drawing + Corel Draw drawing grafikaĵo de Corel Draw dibujo de Corel Draw Corel Draw-eko marrazkia Corel Draw -piirros Corel Draw tekning dessin Corel Draw + dissen Corel Draw líníocht Corel Draw debuxo de Corel Draw ציור של Corel Draw @@ -2643,7 +2719,7 @@ Corel Draw ドロー Corel Draw-ის ნახაზი Corel Draw суреті - 코렐 드로우 드로잉 + Corel Draw 드로잉 Corel Draw piešinys Corel Draw zīmējums Lukisan Corel Draw @@ -2653,7 +2729,7 @@ dessenh Corel Draw Rysunek Corel Draw desenho Corel Drawdesenho Corel Draw - Desenho do Corel Draw + Desenho do Corel Draw Desen Corel Draw Рисунок Corel Draw Kresba Corel Draw @@ -2664,11 +2740,11 @@ Corel Draw çizimi малюнок Corel Draw Bản vẽ Corel Draw - Corel Draw 绘图 - Corel Draw 繪圖 + Corel Draw 绘图 + Corel Draw 繪圖 - + @@ -2681,22 +2757,24 @@ HPGL file + HPGL-lêer ملف HPGL Ficheru HPGL - Fajł HPGL + Fajł HPGL Файл — HPGL fitxer HPGL soubor HPGL HPGL-fil HPGL-Datei Αρχείο HPGL - HPGL file + HPGL file HPGL-dosiero archivo HPGL HPGL fitxategia HPGL-tiedosto HPGL fíla fichier HPGL + file HPGL comhad HPGL ficheiro HPGL קובץ HGPL @@ -2716,7 +2794,7 @@ fichièr HPGL Plik HPGL ficheiro HPGL - Arquivo HPGL + Arquivo HPGL Fișier HPGL Файл HPGL Súbor HPGL @@ -2727,8 +2805,8 @@ HPGL dosyası файл HPGL Tập tin HPGL - HPGL 文件 - HPGL 檔案 + HPGL 文件 + HPGL 檔案 HPGL HP Graphics Language @@ -2736,22 +2814,24 @@ PCL file + PCL-lêer ملف PCL FIcheru PCL - Fajł PCL + Fajł PCL Файл — PCL fitxer PCL soubor PCL PCL-fil PCL-Datei Αρχείο PCL - PCL file + PCL file PCL-dosiero archivo PCL PCL fitxategia PCL-tiedosto PCL fíla fichier PCL + file PCL comhad PCL ficheiro PCL קובץ PCL @@ -2771,7 +2851,7 @@ fichièr PCL Plik PCL ficheiro PCL - Arquivo PCL + Arquivo PCL Fișier PCL Файл PCL Súbor PCL @@ -2782,8 +2862,8 @@ PCL dosyası файл PCL Tập tin PCL - PCL 文件 - PCL 檔 + PCL 文件 + PCL 檔 PCL HP Printer Control Language @@ -2791,10 +2871,11 @@ Lotus 1-2-3 spreadsheet + Lotus 1-2-3 sigblad جدول Lotus 1-2-3 Fueya de cálculu de Lotus 1-2-3 Lotus 1-2-3 hesab cədvəli - Raźlikovy arkuš Lotus 1-2-3 + Raźlikovy arkuš Lotus 1-2-3 Таблица — Lotus 1-2-3 full de càlcul de Lotus 1-2-3 sešit Lotus 1-2-3 @@ -2802,13 +2883,14 @@ Lotus 1-2-3-regneark Lotus-1-2-3-Tabelle Λογιστικό φύλλο Lotus 1-2-3 - Lotus 1-2-3 spreadsheet + Lotus 1-2-3 spreadsheet Kalkultabelo de Lotus 1-2-3 hoja de cálculo de Lotus 1-2-3 Lotus 1-2-3 kalkulu-orria Lotus 1-2-3 -taulukko Lotus 1-2-3 rokniark feuille de calcul Lotus 1-2-3 + sfuei di calcul Lotus 1-2-3 scarbhileog Lotus 1-2-3 folla de cálculo de Lotus 1-2-3 גיליון נתונים של Lotus 1-2-3 @@ -2829,7 +2911,7 @@ fuèlh de calcul Lotus 1-2-3 Arkusz Lotus 1-2-3 folha de cálculo Lotus 1-2-3 - Planilha do Lotus 1-2-3 + Planilha do Lotus 1-2-3 Foaie de calcul Lotus 1-2-3 Электронная таблица Lotus 1-2-3 Zošit Lotus 1-2-3 @@ -2837,14 +2919,14 @@ Fletë llogaritjesh Lotus 1-2-3 Лотусова 1-2-3 табела Lotus 1-2-3-kalkylblad - Lotus 1-2-3 hesap tablosu + Lotus 1-2-3 hesap çizelgesi ел. таблиця Lotus 1-2-3 Bảng tính Lotus 1-2-3 - Lotus 1-2-3 电子表格 - Lotus 1-2-3 試算表 + Lotus 1-2-3 电子表格 + Lotus 1-2-3 試算表 - + @@ -2858,67 +2940,59 @@ - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Лотусов Писац Про - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro - Lotus Word Pro + Lotus Word Pro document + Документ — Lotus Word Pro + document de Lotus Word Pro + Lotus Word Pro-dokument + Lotus-Word-Pro-Dokument + Lotus Word Pro document + documento de Lotus Word Pro + Lotus Word Pro dokumentua + Lotus Word Pro -asiakirja + document Lotus Word Pro + Lotus Word Pro dokument + Lotus Word Pro dokumentum + Dokumen Lotus Word Pro + Documento Lotus Word Pro + Lotus Word Pro құжаты + 로투스 워드 프로 문서 + Dokument Lotus Word Pro + documento Lotus Word Pro + Documento do Lotus Word Pro + Документ Lotus Word Pro + Dokument Lotus Word Pro + Dokument Lotus Word Pro + Lotus Word Pro-dokument + Lotus Word Pro belgesi + документ Lotus Word Pro + Lotus Word Pro 文档 + Lotus Word Pro 文件 - + JET database + JET-databasis قاعدة بيانات JET Base de datos JETº - Baza źviestak JET + Baza źviestak JET База от данни — JET base de dades JET databáze JET JET-database JET-Datenbank Βάση δεδομένων JET - JET database + JET database JET-datumbazo base de datos JET JET datu-basea JET-tietokanta JET dátustovnur base de données JET + base di dâts JET bunachar sonraí JET base de datos JET מסד נתונים מסוג JET @@ -2938,7 +3012,7 @@ banca de donadas JET Baza Danych JET base de dados JET - Banco de dados JET + Banco de dados JET Bază de date JET База данных JET Databáza JET @@ -2946,19 +3020,18 @@ Bazë me të dhëna JET ЈЕТ база података JET-databas - JET veritabanı + JET veri tabanı База даних JET Cơ sở dữ liệu JET - JET 数据库 - JET 資料庫 + JET 数据库 + JET 資料庫 JET Joint Engine Technology - + - @@ -2968,6 +3041,7 @@ Microsoft Cabinet archive + Microsoft Cabinet-argief أرشيف Microsoft Cabinet Архив — Microsoft Cabinet arxiu de Microsoft Cabinet @@ -2975,12 +3049,13 @@ Microsoft Cabinet-arkiv Microsoft-Cabinet-Archiv Συμπιεσμένο αρχείο Microsoft Cabinet - Microsoft Cabinet archive + Microsoft Cabinet archive archivador Cabinet de Microsoft Microsoft Cabinet artxiboa Microsoft Cabinet -arkisto Microsoft Cabinet skjalasavn archive Cab Microsoft + archivi Cabinet Microsoft cartlann Microsoft Cabinet arquivo de Microsoft Cabinet ארכיון CAB (מיקרוסופט) @@ -2992,14 +3067,14 @@ Microsoft Cabinet アーカイブ Microsoft-ის Cabinet არქივი Microsoft Cabinet архиві - Microsoft Cabinte 압축 파일 + Microsoft Cabinet 압축 파일 Microsoft Cabinet archyvas Microsoft kabineta arhīvs Microsoft Cabinet-archief archiu Cab Microsoft Archiwum Microsoft Cabinet arquivo Microsoft Cabinet - Pacote Cabinet da Microsoft + Pacote Cabinet da Microsoft Arhivă Microsoft Cabinet Архив Microsoft Cabinet Archív Microsoft Cabinet @@ -3009,32 +3084,34 @@ Microsoft Cabinet arşivi архів Cabinet Microsoft Kho lưu Cabinet Microsoft - Microsoft Cabinet 归档文件 - 微軟 Cabinet 封存檔 + Microsoft Cabinet 归档文件 + 微軟 Cabinet 封存檔 - + Excel spreadsheet + Excel-sigblad جدول Excel - Raźlikovy akruš Excel + Raźlikovy akruš Excel Таблица — Excel full de càlcul d'Excel sešit Excel Excelregneark Excel-Tabelle Λογιστικό φύλλο Excel - Excel spreadsheet + Excel spreadsheet Excel-kalkultabelo hoja de cálculo de Excel Excel kalkulu-orria Excel-taulukko Excel rokniark feuille de calcul Excel + sfuei di calcul Excel scarbhileog Excel folla de cálculo de Excel גליון נתונים של Excel @@ -3055,7 +3132,7 @@ fuèlh de calcul Excel Arkusz Excel folha de cálculo Excel - Planilha do Excel + Planilha do Excel Foaie de calcul Excel Электронная таблица Excel Zošit Excel @@ -3063,14 +3140,14 @@ Fletë llogaritje Excel Екселова табела Excel-kalkylblad - Excel çalışma sayfası + Excel hesap çizelgesi ел. таблиця Excel Bảng tính Excel - Excel 电子表格 - Excel 試算表 + Excel 电子表格 + Excel 試算表 - + @@ -3086,17 +3163,19 @@ Excel add-in + Excel-byvoeging Приставка — Excel complement d'Excel doplněk aplikace Excel Excel-tilføjelse Excel Add-in Πρόσθετο Excel - Excel add-in + Excel add-in complemento de Excel Excel gehigarria Excel-lisäosa complément Excel + zonte Excel breiseán Excel complemento de Excel תוסף של Excel @@ -3114,7 +3193,7 @@ complement Excel Dodatek Excel Extensão Excel - Suplemento do Excel + Suplemento do Excel Дополнение Excel Doplnok aplikácie Excel Vstavek Excel @@ -3122,25 +3201,27 @@ Excel-tillägg Excel eklentisi додаток Excel - Excel 外接程序 - Excel 增益集 + Excel 外接程序 + Excel 增益集 Excel 2007 binary spreadsheet + Excel 2007 binêre sigblad Таблица — Excel 2007, двоична full de càlcul binari d'Excel 2007 binární formát sešitu Excel 2007 Binært Excel 2007-regneark Excel-2007-Tabelle (binär) Δυαδικό λογιστικό φύλλο Excel 2007 - Excel 2007 binary spreadsheet + Excel 2007 binary spreadsheet hoja de cálculo binaria de Excel 2007 Excel 2007 kalkulu-orri binarioa Excel 2007:n binaarinen taulukko feuille de calcul binaire Excel 2007 + sfuei di calcul binari Excel 2007 scarbhileog dhénártha Excel 2007 ficheiro binario de folla de cálculo Excel 2007 גיליון נתונים בינרי של Excel 2007 @@ -3158,37 +3239,39 @@ fuèlh de calcul binaire Excel 2007 Binarny arkusz Excel 2007 folha de cálculo binária Excel 2007 - Planilha binária do Excel 2007 + Planilha binária do Excel 2007 Двоичная электронная таблица Excel 2007 Binárny zošit Excel 2007 Binarna preglednica Excel 2007 Ексел 2007 бинарна табела Binärt Excel 2007-kalkylblad - Excel 2007 ikilik çalışma sayfası + Excel 2007 ikilik hesap çizelgesi бінарна електронна таблиця Excel 2007 - Excel 2007 二进制电子表格 - Excel 2007 二進位試算表 + Excel 2007 二进制电子表格 + Excel 2007 二進位試算表 Excel spreadsheet + Excel-sigblad جدول Excel - Raźlikovy akruš Excel + Raźlikovy akruš Excel Таблица — Excel full de càlcul d'Excel sešit Excel Excelregneark Excel-Tabelle Λογιστικό φύλλο Excel - Excel spreadsheet + Excel spreadsheet Excel-kalkultabelo hoja de cálculo de Excel Excel kalkulu-orria Excel-taulukko Excel rokniark feuille de calcul Excel + sfuei di calcul Excel scarbhileog Excel folla de cálculo de Excel גליון נתונים של Excel @@ -3209,7 +3292,7 @@ fuèlh de calcul Excel Arkusz Excel folha de cálculo Excel - Planilha do Excel + Planilha do Excel Foaie de calcul Excel Электронная таблица Excel Zošit Excel @@ -3217,27 +3300,30 @@ Fletë llogaritje Excel Екселова табела Excel-kalkylblad - Excel çalışma sayfası + Excel hesap çizelgesi ел. таблиця Excel Bảng tính Excel - Excel 电子表格 - Excel 試算表 + Excel 电子表格 + Excel 試算表 Excel spreadsheet template + Excel-sigbladsjabloon + Шаблон за таблица — Excel plantilla de full de càlcul d'Excel šablona tabulky Excel Excel-regnearksskabelon Excel-Tabellenvorlage Πρότυπο λογιστικού φύλλου Excel - Excel spreadsheet template - plantilla de libro de Excel + Excel spreadsheet template + plantilla de hoja de cálculo de Excel Excel kalkulu-orri txantiloia Excel-taulukkomalli modèle de feuille de calcul Excel + model sfuei di calcul Excel teimpléad scarbhileoige Excel תבנית גיליון נתונים של Excel Predložak Excel proračunske tablice @@ -3249,37 +3335,40 @@ Excel 스프레드시트 서식 Modèl de fuèlh de calcul Excel Szablon arkusza Excel - modelo de folha de cálculo Excel - Modelo de planilha do Excel + predefinição da folha de cálculo Excel + Modelo de planilha do Excel Шаблон таблицы Excel Šablóna tabuľky aplikácie Excel + Predloga preglednice Excel Екселов шаблон табеле Excel-kalkylarksmall - Excel hesap tablosu şablonu + Excel hesap çizelgesi şablonu шаблон електронної таблиці Excel - Excel 电子表格模板 - Excel 試算表範本 + Excel 电子表格模板 + Excel 試算表範本 PowerPoint presentation + PowerPoint-voorlegging عرض تقديمي PowerPoint - Prezentacyja PowerPoint + Prezentacyja PowerPoint Презентация — PowerPoint presentació de PowerPoint prezentace PowerPoint PowerPoint-præsentation PowerPoint-Präsentation Παρουσίαση PowerPoint - PowerPoint presentation + PowerPoint presentation PowerPoint-prezentaĵo presentación de PowerPoint PowerPoint aurkezpena PowerPoint-esitys PowerPoint framløga présentation PowerPoint + presentazion PowerPoint láithreoireacht PowerPoint presentación de PowerPoint מצגת PowerPoint @@ -3299,7 +3388,7 @@ presentacion PowerPoint Prezentacja PowerPoint apresentação PowerPoint - Apresentação do PowerPoint + Apresentação do PowerPoint Prezentare PowerPoint Презентация PowerPoint Prezentácia PowerPoint @@ -3310,8 +3399,8 @@ PowerPoint sunumu презентація PowerPoint Trình diễn PowerPoint - PowerPoint 演示文稿 - PowerPoint 簡報 + PowerPoint 演示文稿 + PowerPoint 簡報 @@ -3323,17 +3412,19 @@ PowerPoint add-in + PowerPoint-byvoeging Приставка — PowerPoint complement de PowerPoint doplněk PowerPoint PowerPoint-tilføjelse PowerPoint Add-in Πρόσθετο PowerPoint - PowerPoint add-in + PowerPoint add-in complemento de PowerPoint PowerPoint gehigarria PowerPoint-lisäosa complément PowerPoint + zonte PowerPoint breiseán PowerPoint complemento de PowerPoint תוסף של PowerPoint @@ -3351,7 +3442,7 @@ complement PowerPoint Dodatek PowerPoint extensão PowerPoint - Suplemento do PowerPoint + Suplemento do PowerPoint Дополнение PowerPoint Doplnok aplikácie PowerPoint Vstavek PowerPoint @@ -3359,28 +3450,30 @@ PowerPoint-tillägg PowerPoint eklentisi додаток PowerPoint - PowerPoint 外接程序 - PowerPoint 增益集 + PowerPoint 外接程序 + PowerPoint 增益集 PowerPoint presentation + PowerPoint-voorlegging عرض تقديمي PowerPoint - Prezentacyja PowerPoint + Prezentacyja PowerPoint Презентация — PowerPoint presentació de PowerPoint prezentace PowerPoint PowerPoint-præsentation PowerPoint-Präsentation Παρουσίαση PowerPoint - PowerPoint presentation + PowerPoint presentation PowerPoint-prezentaĵo presentación de PowerPoint PowerPoint aurkezpena PowerPoint-esitys PowerPoint framløga présentation PowerPoint + presentazion PowerPoint láithreoireacht PowerPoint presentación de PowerPoint מצגת PowerPoint @@ -3400,7 +3493,7 @@ presentacion PowerPoint Prezentacja PowerPoint apresentação PowerPoint - Apresentação do PowerPoint + Apresentação do PowerPoint Prezentare PowerPoint Презентация PowerPoint Prezentácia PowerPoint @@ -3411,25 +3504,28 @@ PowerPoint sunumu презентація PowerPoint Trình diễn PowerPoint - PowerPoint 演示文稿 - PowerPoint 簡報 + PowerPoint 演示文稿 + PowerPoint 簡報 PowerPoint slide + PowerPoint-skyfie Diapositiva de PowerPoint + Кадър — PowerPoint dispositiva de PowerPoint promítání PowerPoint PowerPoint-dias PowerPoint-Folie Διαφάνεια PowerPoint - PowerPoint slide + PowerPoint slide diapositiva de PowerPoint PowerPoint diapositiba PowerPoint-dia diapositive PowerPoint + diapositive PowerPoint sleamhnán PowerPoint שקופית של PowerPoint PowerPoint prezentacija @@ -3438,40 +3534,43 @@ Salindia PowerPoint Diapositiva PowerPoint PowerPoint слайды - 파워포인트 슬라이드 + PowerPoint 슬라이드 Diapositiva PowerPoint Slajd PowerPoint diapositivo PowerPoint - Slide do PowerPoint + Slide do PowerPoint Слайд PowerPoint Snímka aplikácie PowerPoint + Prosojnica PowerPoint Пауер поинт слајд PowerPoint-bildspel PowerPoint sunusu слайд PowerPoint - PowerPoint 幻灯片 - PowerPoint 投影片 + PowerPoint 幻灯片 + PowerPoint 投影片 PowerPoint presentation + PowerPoint-voorlegging عرض تقديمي PowerPoint - Prezentacyja PowerPoint + Prezentacyja PowerPoint Презентация — PowerPoint presentació de PowerPoint prezentace PowerPoint PowerPoint-præsentation PowerPoint-Präsentation Παρουσίαση PowerPoint - PowerPoint presentation + PowerPoint presentation PowerPoint-prezentaĵo presentación de PowerPoint PowerPoint aurkezpena PowerPoint-esitys PowerPoint framløga présentation PowerPoint + presentazion PowerPoint láithreoireacht PowerPoint presentación de PowerPoint מצגת PowerPoint @@ -3491,7 +3590,7 @@ presentacion PowerPoint Prezentacja PowerPoint apresentação PowerPoint - Apresentação do PowerPoint + Apresentação do PowerPoint Prezentare PowerPoint Презентация PowerPoint Prezentácia PowerPoint @@ -3502,25 +3601,28 @@ PowerPoint sunumu презентація PowerPoint Trình diễn PowerPoint - PowerPoint 演示文稿 - PowerPoint 簡報 + PowerPoint 演示文稿 + PowerPoint 簡報 PowerPoint presentation template + PowerPoint-voorleggingsjabloon Plantía de presentaciones de PowerPoint + Шаблон за презентация — PowerPoint plantilla de presentació de PowerPoint šablona prezentace PowerPoint PowerPoint-præsentationsskabelon PowerPoint-Präsentationsvorlage Πρότυπο παρουσίασης PowerPoint - PowerPoint presentation template + PowerPoint presentation template plantilla de presentación de PowerPoint PowerPoint aurkezpen txantiloia PowerPoint-esitysmalli modèle de présentation PowerPoint + model di presentazion PowerPoint teimpléad láithreoireachta PowerPoint תבנית מצגת PowerPoint Predložak PowerPoint prezentacije @@ -3529,255 +3631,230 @@ Templat presentasi PowerPoint Modello presentazione PowerPoint PowerPoint презентация үлгісі - PowerPoint 프리젠테이션 서식 + PowerPoint 프레젠테이션 서식 Modèl de presentacion PowerPoint Szablon prezentacji PowerPoint - modelo de apresentação PowerPoint - Modelo de apresentação do PowerPoint + predefinição de apresentação PowerPoint + Modelo de apresentação do PowerPoint Шаблон презентации PowerPoint Šablóna prezentácie aplikácie PowerPoint + Predloga predstavitve PowerPoint Шаблон презентације Пауер поинта PowerPoint-presentationsmall PowerPoint sunum şablonu шаблон презентації PowerPoint - PowerPoint 演示文稿模板 - PowerPoint 簡報範本 + PowerPoint 演示文稿模板 + PowerPoint 簡報範本 - Office Open XML Visio Drawing + Office Open XML Visio drawing + Чертеж — Office Open XML Visio dibuix en Office Open XML de Visio - kresba Office Open XML Visio Office Open XML Visio-tegning Office-Open-XML-Visio-Zeichnung - Σχέδιο Office Open XML Visio - Office Open XML Visio Drawing - dibujo en OOXML de Visio + Office Open XML Visio drawing + dibujo Office Open XML de Visio Office Open XML Visio marrazkia Office Open XML Visio -piirros dessin Visio Office Open XML - Líníocht Office Open XML Visio - ציור Visio ב־Open XML מבית Office Office Open XML Visio crtež Office Open XML Visio rajz - Designo Office Open XML Visio - Gambar Visio Office Open XML + Gambar Office Open XML Visio Disegno Visio Office Open XML Office Open XML Visio суреті 오피스 오픈 XML 비지오 드로잉 Rysunek Office Open XML Visio - desenho Office Open XML Visio - Desenho do Visio em Office Open XML + desenho Visio do Open Office XML + Desenho do Office Open XML Visio Рисунок Visio формата Office Open XML - Kresba aplikácie Visio Office Open XML - Офисов отворени ИксМЛ Визио цртеж - Office Open XML Visio-teckning - Office Open XML Visio Çizimi - схема VIisio у форматі Office Open XML - Office Open XML Visio 绘图 - Office Open XML Visio 繪圖 + Kresba aplikácie Office Open XML Visio + Risba Office Open XML Visio + Office Open XML Visio-ritning + Office Open XML Visio çizimi + малюнок Visio Office Open у XML + Office Open XML Visio 绘图 + Office Open XML Visio 繪圖 - Office Open XML Visio Template + Office Open XML Visio template + Шаблон за чертеж — Office Open XML Visio plantilla en Office Open XML de Visio - šablona Office Open XML Visio Office Open XML Visio-skabelon Office-Open-XML-Visio-Vorlage - Πρότυπο Office Open XML Visio - Office Open XML Visio Template - plantilla en OOXML de Visio + Office Open XML Visio template + plantilla Office Open XML de Visio Office Open XML Visio txantiloia Office Open XML Visio -malli modèle Visio Office Open XML - Teimpléad Office Open XML Visio - תבנית Visio ב־Open XML מבית Office - Predložak Office Open XML Visio + Office Open XML Visio predložak Office Open XML Visio sablon - Patrono Office Open XML Visio - Templat Visio Office Open XML + Templat Office Open XML Visio Modello Visio Office Open XML Office Open XML Visio үлгісі - 오피스 오픈 XML 비지오 서식 + 오피스 오픈 XML 비지오 양식 Szablon Office Open XML Visio - modelo Office Open XML Visio - Modelo do Visio em Office Open XML + predefinição Visio do Open Office XML + Modelo Office Open XML Visio Шаблон Visio формата Office Open XML - Šablóna aplikácie Visio Office Open XML - Офисов отворени ИксМЛ Визио шаблон + Šablóna aplikácie Office Open XML Visio + Predloga Office Open XML Visio Office Open XML Visio-mall - Office Open XML Visio Şablonu - шаблон Visio у форматі Office Open XML - Office Open XML Visio 模板 - Office Open XML Visio 範本 + Office Open XML Visio şablonu + шаблон Visio Office Open у XML + Office Open XML Visio 模板 + Office Open XML Visio 範本 - Office Open XML Visio Stencil + Office Open XML Visio stencil + Образци — Office Open XML Visio patró en Office Open XML de Visio - objekty Office Open XML Visio Office Open XML Visio-stencil Office-Open-XML-Visio-Schablone - Office Open XML Visio Stencil - esténcil en OOXML de Visio + Office Open XML Visio stencil + galería de símbolos Office Open XML de Visio Office Open XML Visio txantiloia - Office Open XML Visio -kaavio + Office Open XML Visio -malli stencil Visio Office Open XML - Stionsal Office Open XML Visio - דגם ל־Visio ב־Open XML מבית Office Office Open XML Visio šablona Office Open XML Visio stencil - Stencil Office Open XML Visio - Stensil Visio Office Open XML + Stensil Office Open XML Visio Stencil Visio Office Open XML - Office Open XML пішімінің Visio трафареті + Office Open XML Visio трафареті 오피스 오픈 XML 비지오 스텐실 Wzór Office Open XML Visio - Stencil Office Open XML Visio - Estêncil do Visio em Office Open XML + estêncil Visio do Open Office XML + Estêncil do Office Open XML Visio Трафарет Visio формата Office Open XML - Objekt aplikácie Visio Office Open XML - Офисов отворени ИксМЛ Визио шаблон Office Open XML Visio-stencil - Office Open XML Visio Kalıbı - трафарет Visio у форматі Office Open XML - Office Open XML Visio 模具 - Office Open XML Visio 圖形樣本 + Office Open XML Visio kalıbı + трафарет Visio Office Open у XML + Office Open XML Visio 模具 - Office Open XML Visio Drawing + Office Open XML Visio drawing + Чертеж — Office Open XML Visio dibuix en Office Open XML de Visio - kresba Office Open XML Visio Office Open XML Visio-tegning Office-Open-XML-Visio-Zeichnung - Σχέδιο Office Open XML Visio - Office Open XML Visio Drawing - dibujo en OOXML de Visio + Office Open XML Visio drawing + dibujo Office Open XML de Visio Office Open XML Visio marrazkia Office Open XML Visio -piirros dessin Visio Office Open XML - Líníocht Office Open XML Visio - ציור Visio ב־Open XML מבית Office Office Open XML Visio crtež Office Open XML Visio rajz - Designo Office Open XML Visio - Gambar Visio Office Open XML + Gambar Office Open XML Visio Disegno Visio Office Open XML Office Open XML Visio суреті 오피스 오픈 XML 비지오 드로잉 Rysunek Office Open XML Visio - desenho Office Open XML Visio - Desenho do Visio em Office Open XML + desenho Visio do Open Office XML + Desenho do Office Open XML Visio Рисунок Visio формата Office Open XML - Kresba aplikácie Visio Office Open XML - Офисов отворени ИксМЛ Визио цртеж - Office Open XML Visio-teckning - Office Open XML Visio Çizimi - схема VIisio у форматі Office Open XML - Office Open XML Visio 绘图 - Office Open XML Visio 繪圖 + Kresba aplikácie Office Open XML Visio + Risba Office Open XML Visio + Office Open XML Visio-ritning + Office Open XML Visio çizimi + малюнок Visio Office Open у XML + Office Open XML Visio 绘图 + Office Open XML Visio 繪圖 - Office Open XML Visio Template + Office Open XML Visio template + Шаблон за чертеж — Office Open XML Visio plantilla en Office Open XML de Visio - šablona Office Open XML Visio Office Open XML Visio-skabelon Office-Open-XML-Visio-Vorlage - Πρότυπο Office Open XML Visio - Office Open XML Visio Template - plantilla en OOXML de Visio + Office Open XML Visio template + plantilla Office Open XML de Visio Office Open XML Visio txantiloia Office Open XML Visio -malli modèle Visio Office Open XML - Teimpléad Office Open XML Visio - תבנית Visio ב־Open XML מבית Office - Predložak Office Open XML Visio + Office Open XML Visio predložak Office Open XML Visio sablon - Patrono Office Open XML Visio - Templat Visio Office Open XML + Templat Office Open XML Visio Modello Visio Office Open XML Office Open XML Visio үлгісі - 오피스 오픈 XML 비지오 서식 + 오피스 오픈 XML 비지오 양식 Szablon Office Open XML Visio - modelo Office Open XML Visio - Modelo do Visio em Office Open XML + predefinição Visio do Open Office XML + Modelo Office Open XML Visio Шаблон Visio формата Office Open XML - Šablóna aplikácie Visio Office Open XML - Офисов отворени ИксМЛ Визио шаблон + Šablóna aplikácie Office Open XML Visio + Predloga Office Open XML Visio Office Open XML Visio-mall - Office Open XML Visio Şablonu - шаблон Visio у форматі Office Open XML - Office Open XML Visio 模板 - Office Open XML Visio 範本 + Office Open XML Visio şablonu + шаблон Visio Office Open у XML + Office Open XML Visio 模板 + Office Open XML Visio 範本 - Office Open XML Visio Stencil + Office Open XML Visio stencil + Образци — Office Open XML Visio patró en Office Open XML de Visio - objekty Office Open XML Visio Office Open XML Visio-stencil Office-Open-XML-Visio-Schablone - Office Open XML Visio Stencil - esténcil en OOXML de Visio + Office Open XML Visio stencil + galería de símbolos Office Open XML de Visio Office Open XML Visio txantiloia - Office Open XML Visio -kaavio + Office Open XML Visio -malli stencil Visio Office Open XML - Stionsal Office Open XML Visio - דגם ל־Visio ב־Open XML מבית Office Office Open XML Visio šablona Office Open XML Visio stencil - Stencil Office Open XML Visio - Stensil Visio Office Open XML + Stensil Office Open XML Visio Stencil Visio Office Open XML - Office Open XML пішімінің Visio трафареті + Office Open XML Visio трафареті 오피스 오픈 XML 비지오 스텐실 Wzór Office Open XML Visio - Stencil Office Open XML Visio - Estêncil do Visio em Office Open XML + estêncil Visio do Open Office XML + Estêncil do Office Open XML Visio Трафарет Visio формата Office Open XML - Objekt aplikácie Visio Office Open XML - Офисов отворени ИксМЛ Визио шаблон Office Open XML Visio-stencil - Office Open XML Visio Kalıbı - трафарет Visio у форматі Office Open XML - Office Open XML Visio 模具 - Office Open XML Visio 圖形樣本 + Office Open XML Visio kalıbı + трафарет Visio Office Open у XML + Office Open XML Visio 模具 Word document + Word-dokument مستند Word Documentu de Word - Dakument Word + Dakument Word Документ — Word document Word dokument Word Worddokument Word-Dokument Έγγραφο Word - Word document + Word document Word-dokumento documento de Word Word dokumentua Word-asiakirja Word skjal document Word + document Word cáipéis Word documento de Word מסמך Word @@ -3797,7 +3874,7 @@ document Word Dokument Word documento Word - Documento do Word + Documento do Word Document Word Документ Word Dokument Word @@ -3808,25 +3885,28 @@ Word belgesi документ Word Tài liệu Word - Word 文档 - Word 文件 + Word 文档 + Word 文件 Word document template + Word-dokumentsjabloon Plantía de documentu de Word + Шаблон за документ — Word plantilla de document Word šablona dokumentu Word Word-dokumentskabelon Word-Dokumentvorlage Πρότυπο έγγραφο Word - Word document template + Word document template plantilla de documento de Word Word dokumentuaren txantiloia Word-asiakirjamalli modèle de document Word + model di document Word teimpléad Word תבנית מסמך Word Predložak Word dokumenta @@ -3839,37 +3919,48 @@ modèl de document Word Szablon dokumentu Word modelo de documento Word - Modelo de documento do Word + Modelo de documento do Word Шаблон документа Word Šablóna dokumentu aplikácie Word + Predloga dokumenta Word Шаблон Ворд документа Word-dokumentmall Word belgesi şablonu шаблон документа Word - Word 文档模板 - Word 文件範本 + Word 文档模板 + Word 文件範本 + OpenXPS document + OpenXPS + Open XML Paper Specification + + + + + XPS document + XPS-dokument مستند XPS Documentu XPS - Dakument XPS + Dakument XPS Документ — XPS document XPS dokument XPS XPS-dokument XPS-Dokument Έγγραφο XPS - XPS document + XPS document XPS-dokumento documento XPS XPS dokumentua XPS-asiakirja XPS skjal document XPS + document XPS cáipéis XPS documento XPS מסמך XPS @@ -3889,7 +3980,7 @@ document XPS Dokument XPS documento XPS - Documento XPS + Documento XPS Document XPS Документ XPS Dokument XPS @@ -3900,34 +3991,34 @@ XPS belgesi документ XPS Tài liệu XPS - XPS 文档 - XPS 文件 + XPS 文档 + XPS 文件 XPS - Open XML Paper Specification + XML Paper Specification - - Microsoft Works document + Microsoft Works-dokument مستند Microsoft Works Documentu de Microsoft Works - Dakument Microsoft Works + Dakument Microsoft Works Документ — Microsoft Works document de Microsoft Works dokument Microsoft Works Microsoft Works-dokument Microsoft-Works-Dokument Έγγραφο Microsoft Works - Microsoft Works document + Microsoft Works document documento de Microsoft Works Microsoft Works dokumentua Microsoft Works -asiakirja Microsoft Works skjal document Microsoft Works + document Microsoft Works cáipéis Microsoft Works documento de Microsoft Works מסמך Microsoft Works @@ -3948,7 +4039,7 @@ document Microsoft Works Dokument Microsoft Works documento Microsoft Works - Documento do Microsoft Works + Documento do Microsoft Works Document Microsoft Works Документ Microsoft Works Dokument Microsoft Works @@ -3959,8 +4050,8 @@ Microsoft Works belgesi документ Microsoft Works Tài liệu Microsoft Works - Microsoft Works 文档 - 微軟 Works 文件 + Microsoft Works 文档 + 微軟 Works 文件 @@ -3971,6 +4062,7 @@ Microsoft Visio document + Microsoft Visio-dokument Documentu de Microsoft Visio Документ — Microsoft Visio document de Microsoft Visio @@ -3978,11 +4070,12 @@ Microsoft Visio-dokument Microsoft-Visio-Dokument Έγγραφο Microsoft Visio - Microsoft Visio document + Microsoft Visio document documento de Microsoft Visio Microsoft Visio dokumentua Microsoft Visio -asiakirja document Microsoft Visio + document Microsoft Visio cáipéis Microsoft Visio Documento de Microsoft Visio מסמך @@ -4000,7 +4093,7 @@ document Microsoft Visio Dokument Microsoft Visio documento Microsoft Visio - Documento do Microsoft Visio + Documento do Microsoft Visio Документ Microsoft Visio Dokument Microsoft Visio Dokument Microsoft Visio @@ -4008,8 +4101,8 @@ Microsoft Visio-dokument Microsoft Visio belgesi документ Microsoft Visio - Microsoft Visio 文档 - Microsoft Visio文件 + Microsoft Visio 文档 + 微軟 Visio 文件 @@ -4019,22 +4112,24 @@ Word document + Word-dokument مستند Word Documentu de Word - Dakument Word + Dakument Word Документ — Word document Word dokument Word Worddokument Word-Dokument Έγγραφο Word - Word document + Word document Word-dokumento documento de Word Word dokumentua Word-asiakirja Word skjal document Word + document Word cáipéis Word documento de Word מסמך Word @@ -4054,7 +4149,7 @@ document Word Dokument Word documento Word - Documento do Word + Documento do Word Document Word Документ Word Dokument Word @@ -4065,20 +4160,20 @@ Word belgesi документ Word Tài liệu Word - Word 文档 - Word 文件 + Word 文档 + Word 文件 - - - - - - - - - + + + + + + + + + @@ -4087,22 +4182,24 @@ Word template + Word-sjabloon قالب Word Plantía de Word - Šablon Word + Šablon Word Шаблон за документи — Word plantilla de Word šablona Word Wordskabelon Word-Vorlage Πρότυπο έγγραφο Word - Word template + Word template Word-ŝablono plantilla de Word Word txantiloia Word-malli Word formur modèle Word + model Word teimpléad Word Plantilla de Word תבנית Word @@ -4122,7 +4219,7 @@ modèl Word Szablon Word modelo Word - Modelo do Word + Modelo do Word Șablon Word Шаблон Word Šablóna Word @@ -4133,25 +4230,28 @@ Word şablonu шаблон Word Mẫu Word - Word 模板 - Word 範本 + Word 模板 + Word 範本 GML document + GML-dokument Documentu GML + Документ — GML document GML dokument GML GML-dokument GML-Dokument Έγγραφο GML - GML document + GML document documento GML GML dokumentua GML-asiakirja document GML + document GML cáipéis GML Documento GML מסמך GML @@ -4163,11 +4263,12 @@ GML ドキュメント GML құжаты GML 문서 + GML dokumentas GML dokuments document GML Dokument GML documento GML - Documento GML + Documento GML Документ GML Dokument GML Dokument GML @@ -4175,8 +4276,8 @@ GML-dokument GML belgesi документ GML - GML 文档 - GML 文件 + GML 文档 + GML 文件 GML Geography Markup Language @@ -4185,20 +4286,22 @@ GNUnet search file + GNUnet-soeklêer ملف بحث GNUnet - fajł pošuku GNUnet + fajł pošuku GNUnet Указател за търсене — GNUnet fitxer de cerca GNUnet vyhledávací soubor GNUnet GNunet-søgefil GNUnet-Suchdatei Αρχείο αναζήτησης GNUnet - GNUnet search file + GNUnet search file archivo de búsqueda GNUnet GNUnet bilaketako fitxategia GNUnet-hakutiedosto GNUnet leitifíla fichier de recherche GNUnet + file di ricercje GNUnet comhad cuardaigh GNUnet ficheiro de busca de GNUnet קובץ חיפוש של GNUnet @@ -4219,7 +4322,7 @@ fichièr de recèrca GNUnet Plik wyszukiwania GNUnet ficheiro de procura GNUnet - Arquivo de pesquisa do GNUnet + Arquivo de pesquisa do GNUnet Fișier căutare GNUnet Файл поиска GNUnet Vyhľadávací súbor GNUnet @@ -4230,30 +4333,32 @@ GNUnet arama dosyası файл пошуку GNUnet Tập tin tìm kiếm GNUnet - GNUnet 搜索文件 - GNUnet 搜尋檔案 + GNUnet 搜索文件 + GNUnet 搜尋檔案 - + TNEF message + TNEF-boodskap رسالة TNEF Mensaxe TNEF - List TNEF + List TNEF Съобщение — TNEF missatge TNEF zpráva TNEF TNEF-meddelelse TNEF-Nachricht Μήνυμα TNEF - TNEF message + TNEF message mensaje TNEF TNEF mezua TNEF-viesti TNEF boð message TNEF + messaç TNEF teachtaireacht TNEF mensaxe TNEF הודעת TNEF @@ -4273,7 +4378,7 @@ messatge TNEF Wiadomość TNEF mensagem TNEF - Mensagem TNEF + Mensagem TNEF Mesaj TNEF Сообщение TNEF Správa TNEF @@ -4284,12 +4389,12 @@ TNEF iletisi повідомлення TNEF Thông điệp TNEF - TNEF 信件 - TNEF 訊息 + TNEF 信件 + TNEF 訊息 TNEF Transport Neutral Encapsulation Format - + @@ -4298,9 +4403,10 @@ StarCalc spreadsheet + StarCalc-sigblad جدول StarCalc StarCalc hesab cədvəli - Raźlikovy arkuš StarCalc + Raźlikovy arkuš StarCalc Таблица — StarCalc full de càlcul de StarCalc sešit StarCalc @@ -4308,13 +4414,14 @@ StarCalc-regneark StarCalc-Tabelle Λογιστικό φύλλο StarCalc - StarCalc spreadsheet + StarCalc spreadsheet StarCalc-kalkultabelo hoja de cálculo de StarCalc StarCalc kalkulu-orria StarCalc-taulukko StarCalc rokniark feuille de calcul StarCalc + sfuei di calcul StarCalc scarbhileog StarCalc folla de cálculo de StarCalc גליון נתונים של StarCalc @@ -4335,7 +4442,7 @@ fuèlh de calcul StarCalc Arkusz StarCalc folha de cálculo do StarCalc - Planilha do StarCalc + Planilha do StarCalc Foaie de calcul StarCalc Электронная таблица StarCalc Zošit StarCalc @@ -4343,19 +4450,20 @@ Fletë llogaritjesh StarCalc Стар калк табела StarCalc-kalkylblad - StarCalc çalışma sayfası + StarCalc hesap çizelgesi ел. таблиця StarCalc Bảng tính StarCalc - StarCalc 电子表格 - StarCalc 試算表 + StarCalc 电子表格 + StarCalc 試算表 StarChart chart + StarChart-grafiek مخطط StarChart StarChart cədvəli - Dyjahrama StarChart + Dyjahrama StarChart Диаграма — StarChart diagrama de StarChart graf StarChart @@ -4363,13 +4471,14 @@ StarChart-diagram StarChart-Diagramm Γράφημα StarChart - StarChart chart + StarChart chart StarChart-diagramo gráfico de StarChart StarChart diagrama StarChart-kaavio StarChart strikumynd graphique StarChart + grafic StarChart cairt StarChart gráfica de StarChart טבלה של StarChart @@ -4390,7 +4499,7 @@ grafic StarChart Wykres StarChart gráfico do StarChart - Gráfico do StarChart + Gráfico do StarChart Diagramă StarChart Диаграмма StarChart Graf StarChart @@ -4398,19 +4507,20 @@ Grafik StarChart График Стар Графика StarChart-diagram - StarChart çizgelgesi + StarChart çizgesi діаграма StarChart Đồ thị StarChart - StarCalc 图表 - StarChart 圖表 + StarCalc 图表 + StarChart 圖表 StarDraw drawing + StarDraw-tekening تصميم StarDraw StarDraw çəkimi - Rysunak StarDraw + Rysunak StarDraw Чертеж — StarDraw dibuix de StarDraw kresba StarDraw @@ -4418,13 +4528,14 @@ StarDraw-tegning StarDraw-Zeichnung Σχέδιο StarDraw - StarDraw drawing + StarDraw drawing StarDraw-grafikaĵo dibujo de StarDraw StarDraw marrazkia StarDraw-piirros StarDraw tekning dessin StarDraw + dissen StarDraw líníocht StarDraw debuxo de StarDraw ציור של StarDrawing @@ -4445,7 +4556,7 @@ dessenh StarDraw Rysunek StarDraw desenho do StarDraw - Desenho do StarDraw + Desenho do StarDraw Desen StarDraw Рисунок StarDraw Kresba StarDraw @@ -4456,16 +4567,17 @@ StarDraw çizimi малюнок StarDraw Bản vẽ StarDraw - StarDraw 绘图 - StarDraw 繪圖 + StarDraw 绘图 + StarDraw 繪圖 StarImpress presentation + StarImpress-voorlegging عرض تقديمي StarImpress StarImpress təqdimatı - Prezentacyja StarImpress + Prezentacyja StarImpress Презентация — StarImpress presentació de StarImpress prezentace StarImpress @@ -4473,13 +4585,14 @@ StarImpress-præsentation StarImpress-Präsentation Παρουσίαση StarImpress - StarImpress presentation + StarImpress presentation StarImpress-prezentaĵo presentación de StarImpress StarImpress aurkezpena StarImpress-esitys StarImpress framløga présentation StarImpress + presentazion StarImpress láithreoireacht StarImpress presentación de StarImpress מצגת של StarImpress @@ -4500,7 +4613,7 @@ presentacion StarImpress Prezentacja StarImpress apresentação do StarImpress - Apresentação do StarImpress + Apresentação do StarImpress Prezentare StarImpress Презентация StarImpress Prezentácia StarImpress @@ -4511,29 +4624,31 @@ StarImpress sunumu презентація StarImpress Trình diễn StarImpress - StarImpress 演示文稿 - StarImpress 簡報檔 + StarImpress 演示文稿 + StarImpress 簡報 StarMail email + StarMail-e-pos بريد StarMail الإلكتروني - Email StarMail + Email StarMail Електронно писмо — StarMail correu electrònic de StarMail e-mail StarMail StarMail-e-brev StarMail-E-Mail Ηλ. μήνυμα StarMail - StarMail email + StarMail email StarMail-retpoŝto correo electrónico de StarMail StarMail helb.el. StarMail-sähköposti StarMail t-postur courriel StarMail + e-mail StarMail ríomhphost StarMail Correo electrónico de StarMail דוא״ל של StarMail @@ -4554,7 +4669,7 @@ corrièr electronic StarMail E-Mail StarMail email do StarMail - E-mail do StarMail + E-mail do StarMail Email StarEmail Электронное письмо StarMail E-mail StarMail @@ -4565,27 +4680,29 @@ StarMail epostası поштове повідомлення StarMail Thư điện tử StarMail - StarMail 电子邮件 - StarMail 郵件 + StarMail 电子邮件 + StarMail 郵件 StarMath formula + StarMath-formule صيغة StarMath - Formuła StarMath + Formuła StarMath Формула — StarMath fórmula de StarMath vzorec StarMath StarMath-formel StarMath-Formel Μαθηματικός τύπος StarMath - StarMath formula + StarMath formula StarMath-formulo fórmula de StarMath StarMath formula StarMath-kaava StarMath frymil formule StarMath + formule StarMath foirmle StarMath fórmula de StarMath נוסחה של StarMath @@ -4606,7 +4723,7 @@ formula StarMath Formuła StarMath fórmula do StarMath - Fórmula do StarMath + Fórmula do StarMath Formulă StarMath Формула StarMath Vzorec StarMath @@ -4617,17 +4734,18 @@ StarMath formülü формула StarMath Công thức StarMath - StarMath 公式 - StarMath 公式 + StarMath 公式 + StarMath 公式 StarWriter document + StarWriter-dokument مستند StarWriter Documentu de StarWriter StarWriter sənədi - Dakument StarWriter + Dakument StarWriter Документ — StarWriter document StarWriter dokument StarWriter @@ -4635,13 +4753,14 @@ StarWriter-dokument StarWriter-Dokument Έγγραφο StarWriter - StarWriter document + StarWriter document StarWriter-dokumento documento de StarWriter StarWriter dokumentua StarWriter-asiakirja StarWriter skjal document StarWriter + document StarWriter cáipéis StarWriter documento de StarWriter מסמך של StarWriter @@ -4662,7 +4781,7 @@ document StarWriter Dokument StarWriter documento do StarWriter - Documento do StarWriter + Documento do StarWriter Document StarWriter Документ StarWriter Dokument StarWriter @@ -4673,33 +4792,35 @@ StarWriter belgesi документ StarWriter Tài liệu StarWriter - StarWriter 文档 - StarWriter 文件 + StarWriter 文档 + StarWriter 文件 - + OpenOffice Calc spreadsheet + OpenOffice Calc-sigblad جدول Calc المكتب المفتوح - Raźlikovy arkuš OpenOffice Calc + Raźlikovy arkuš OpenOffice Calc Таблица — OpenOffice Calc full de càlcul d'OpenOffice Calc sešit OpenOffice Calc OpenOffice Calc-regneark OpenOffice-Calc-Tabelle Λογιστικό φύλλο OpenOffice Calc - OpenOffice Calc spreadsheet - hoja de cálculo de OpenOffice Calc + OpenOffice Calc spreadsheet + hoja de cálculo de LibreOffice Calc OpenOffice.org Calc kalkulu-orria OpenOffice Calc -taulukko OpenOffice Calc rokniark feuille de calcul OpenOffice Calc + sfuei di calcul OpenOffice Calc scarbhileog OpenOffice Calc folla de cálculo de OpenOffice Calc גליון נתונים של OpenOffice Calc @@ -4718,9 +4839,9 @@ OpenOffice.org Calc-rekenblad OpenOffice Calc-rekneark fuèlh de calcul OpenOffice Calc - Arkusz kalkulacyjny OpenOffice.org Calc + Arkusz OpenOffice.org Calc folha de cálculo OpenOffice Calc - Planilha do OpenOffice Calc + Planilha do OpenOffice Calc Foaie de calcul OpenOffice Calc Электронная таблица OpenOffice Calc Zošit OpenOffice Calc @@ -4728,17 +4849,17 @@ Fletë llogaritjesh OpenOffice Calc Табела Опен Офис Рачуна OpenOffice Calc-kalkylblad - OpenOffice Calc çalışma sayfası + OpenOffice Calc hesap çizelgesi ел. таблиця OpenOffice Calc Bảng tính Calc của OpenOffice.org - OpenOffice Calc 电子表格 - OpenOffice Calc 試算表 + OpenOffice Calc 电子表格 + OpenOffice Calc 試算表 - - - + + + @@ -4746,20 +4867,22 @@ OpenOffice Calc template + OpenOffice Calc-sjabloon قالب Calc المكتب المفتوح - Šablon OpenOffice Calc + Šablon OpenOffice Calc Шаблон за таблици — OpenOffice Calc plantilla d'OpenOffice Calc šablona OpenOffice Calc OpenOffice Calc-skabelon OpenOffice-Calc-Vorlage Πρότυπο OpenOffice Calc - OpenOffice Calc template - plantilla de OpenOffice Calc + OpenOffice Calc template + plantilla de LibreOffice Calc OpenOffice Calc txantiloia OpenOffice Calc -malli OpenOffice Calc formur modèle OpenOffice Calc + model OpenOffice Calc teimpléad OpenOffice Calc modelo de OpenOffice Calc תבנית של OpenOffice Calc @@ -4780,7 +4903,7 @@ modèl OpenOffice Calc Szablon arkusza OpenOffice.org Calc modelo OpenOffice Calc - Modelo do OpenOffice Calc + Modelo do OpenOffice Calc Șablon OpenOffice Calc Шаблон OpenOffice Calc Šablóna OpenOffice Calc @@ -4791,14 +4914,14 @@ OpenOffice Calc şablonu шаблон ел.таблиці OpenOffice Calc Mẫu bảng tính Calc của OpenOffice.org - OpenOffice Calc 模板 - OpenOffice Calc 範本 + OpenOffice Calc 模板 + OpenOffice Calc 範本 - - - + + + @@ -4806,20 +4929,22 @@ OpenOffice Draw drawing + OpenOffice Draw-tekening تصميم Draw المكتب المفتوح - Rysunak OpenOffice Draw + Rysunak OpenOffice Draw Чертеж — OpenOffice Draw dibuix d'OpenOffice Draw kresba OpenOffice Draw OpenOffice Draw-tegning OpenOffice-Draw-Zeichnung Σχέδιο OpenOffice Draw - OpenOffice Draw drawing - dibujo de OpenOffice Draw + OpenOffice Draw drawing + dibujo de LibreOffice Draw OpenOffice.org Draw marrazkia OpenOffice Draw -piirros OpenOffice Draw tekning dessin OpenOffice Draw + dissen OpenOffice Draw líníocht OpenOffice Draw debuxo de OpenOffice Draw ציור של OpenOffice Draw @@ -4840,7 +4965,7 @@ dessenh OpenOffice Draw Rysunek OpenOffice.org Draw desenho OpenOffice Draw - Desenho do OpenOffice Draw + Desenho do OpenOffice Draw Desen OpenOffice Draw Рисунок OpenOffice Draw Kresba OpenOffice Draw @@ -4851,14 +4976,14 @@ OpenOffice Draw çizimi малюнок OpenOffice Draw Bản vẽ Draw của OpenOffice.org - OpenOffice Draw 绘图 - OpenOffice Draw 繪圖 + OpenOffice Draw 绘图 + OpenOffice Draw 繪圖 - - - + + + @@ -4866,20 +4991,22 @@ OpenOffice Draw template + OpenOffice Draw-sjabloon قالب Draw المكتب المفتوح - Šablon OpenOffice Draw + Šablon OpenOffice Draw Шаблон за чертежи — OpenOffice Draw plantilla d'OpenOffice Draw šablona OpenOffice Draw OpenOffice Draw-skabelon OpenOffice-Draw-Vorlage Πρότυπο OpenOffice Draw - OpenOffice Draw template - plantilla de OpenOffice Draw + OpenOffice Draw template + plantilla de LibreOffice Draw OpenOffice Draw txantiloia OpenOffice Draw -malli OpenOffice Draw formur modèle OpenOffice Draw + model OpenOffice Draw  teimpléad OpenOffice Draw modelo de OpenOffice Draw תבנית של OpenOffice Draw @@ -4900,7 +5027,7 @@ modèl OpenOffice Draw Szablon rysunku OpenOffice.org Draw modelo OpenOffice Draw - Modelo do OpenOffice Draw + Modelo do OpenOffice Draw Șablon OpenOffice Draw Шаблон OpenOffice Draw Šablóna OpenOffice Draw @@ -4911,14 +5038,14 @@ OpenOffice Draw şablonu шаблон малюнку OpenOffice Draw Mẫu bản vẽ Draw của OpenOffice.org - OpenOffice Draw 模板 - OpenOffice Draw 範本 + OpenOffice Draw 模板 + OpenOffice Draw 範本 - - - + + + @@ -4926,9 +5053,10 @@ OpenOffice Impress presentation + OpenOffice Impress-voorlegging عرض تقديمي Impress المكتب المفتوح OpenOffice Impress sənədi - Prezentacyja OpenOffice Impress + Prezentacyja OpenOffice Impress Презентация — OpenOffice Impress presentació d'OpenOffice Impress prezentace OpenOffice Impress @@ -4936,12 +5064,13 @@ OpenOffice Impress-præsentation OpenOffice-Impress-Vorlage Παρουσίαση OpenOffice Impress - OpenOffice Impress presentation - presentación de OpenOffice Impress + OpenOffice Impress presentation + presentación de LibreOffice Impress OpenOffice.org Impress aurkezpena OpenOffice Impress -esitys OpenOffice Impress framløga présentation OpenOffice Impress + presentazion OpenOffice Impress láithreoireacht OpenOffice Impress presentación de de OpenOffice Impress מצגת של OpenOffice Impress @@ -4962,7 +5091,7 @@ presentacion OpenOffice Impress Prezentacja OpenOffice.org Impress apresentação OpenOffice Impress - Apresentação do OpenOffice Impress + Apresentação do OpenOffice Impress Prezentare OpenOffice Impress Презентация OpenOffice Impress Prezentácia OpenOffice Impress @@ -4973,14 +5102,14 @@ OpenOffice Impress sunumu презентація OpenOffice Impress Trình diễn Impress của OpenOffice.org - OpenOffice Impress 演示文稿 - OpenOffice Impress 簡報 + OpenOffice Impress 演示文稿 + OpenOffice Impress 簡報 - - - + + + @@ -4988,20 +5117,22 @@ OpenOffice Impress template + OpenOffice Impress-sjabloon قالب Impress المكتب المفتوح - Šablon OpenOffice Impress + Šablon OpenOffice Impress Шаблон за презентации — OpenOffice Impress plantilla d'OpenOffice Impress šablona OpenOffice Impress OpenOffice Impress-skabelon OpenOffice-Impress-Vorlage Πρότυπο OpenOffice Impress - OpenOffice Impress template - plantilla de OpenOffice Impress + OpenOffice Impress template + plantilla de LibreOffice Impress OpenOffice Impress txantiloia OpenOffice Impress -malli OpenOffice Impress formur modèle OpenOffice Impress + model OpenOffice Impress teimpléad OpenOffice Impress modelo de OpenOffice Impress תבנית של OpenOffice Impress @@ -5022,7 +5153,7 @@ modèl OpenOffice Impress Szablon prezentacji OpenOffice.org Impress modelo OpenOffice Impress - Modelo do OpenOffice Impress + Modelo do OpenOffice Impress Șablon OpenOffice Impress Шаблон OpenOffice Impress Šablóna OpenOffice Impress @@ -5033,14 +5164,14 @@ OpenOffice Impress şablonu шаблон презентації OpenOffice Impress Mẫu trình diễn Impress của OpenOffice.org - OpenOffice Impress 模板 - OpenOffice Impress 範本 + OpenOffice Impress 模板 + OpenOffice Impress 範本 - - - + + + @@ -5048,20 +5179,22 @@ OpenOffice Math formula + OpenOffice Math-formule صيغة Math المكتب المفتوح - Formuła OpenOffice Math + Formuła OpenOffice Math Формула — OpenOffice Math fórmula d'OpenOffice Math vzorec OpenOffice Math OpenOffice Math-formel OpenOffice-Math-Formel Μαθηματικός τύπος OpenOffice Math - OpenOffice Math formula - fórmula de OpenOffice Math + OpenOffice Math formula + fórmula de LibreOffice Math OpenOffice.org Math formula OpenOffice Math -kaava OpenOffice Math frymil formule OpenOffice Math + formule OpenOffice Math foirmle OpenOffice Math fórmula de OpenOffice Math נוסחה של OpenOffice Math @@ -5082,7 +5215,7 @@ formula OpenOffice Math Formuła OpenOffice.org Math fórmula OpenOffice Math - Fórmula do OpenOffice Math + Fórmula do OpenOffice Math Formulă OpenOffice Math Формула OpenOffice Math Vzorec OpenOffice Math @@ -5093,14 +5226,14 @@ OpenOffice Math formülü формула OpenOffice Math Công thức Math của OpenOffice.org - OpenOffice Math 公式 - OpenOffice Math 公式 + OpenOffice Math 公式 + OpenOffice Math 公式 - - - + + + @@ -5108,10 +5241,11 @@ OpenOffice Writer document + OpenOffice Writer-dokument مستند Writer المكتب المفتوح Documentu d'OpenOffice Writer OpenOffice Writer sənədi - Dakument OpenOffice Writer + Dakument OpenOffice Writer Документ — OpenOffice Writer document d'OpenOffice Writer dokument OpenOffice Writer @@ -5119,12 +5253,13 @@ OpenOffice Writer-dokument OpenOffice-Writer-Dokument Έγγραφο OpenOffice Writer - OpenOffice Writer document - documento de OpenOffice Writer + OpenOffice Writer document + documento de LibreOffice Writer OpenOffice.org Writer dokumentua OpenOffice Writer -asiakirja OpenOffice Writer skjal document OpenOffice Writer + document OpenOffice Writer cáipéis OpenOffice Writer documento de OpenOffice Writer מסמך של OpenOffice Writer @@ -5145,7 +5280,7 @@ document OpenOffice Writer Dokument OpenOffice.org Writer documento OpenOffice Writer - Documento do OpenOffice Writer + Documento do OpenOffice Writer Document OpenOffice Writer Документ OpenOffice Writer Dokument OpenOffice Writer @@ -5156,14 +5291,14 @@ OpenOffice Writer belgesi документ OpenOffice Writer Tài liệu Writer của OpenOffice.org - OpenOffice Writer 文档 - OpenOffice Writer 文件 + OpenOffice Writer 文档 + OpenOffice Writer 文件 - - - + + + @@ -5171,23 +5306,25 @@ OpenOffice Writer global document + OpenOffice Writer globale dokument مستند المكتب المفتوح Writer العالمي Documentu global d'OpenOffice Writer OpenOffice Writer qlobal sənədi - Hlabalny dakument OpenOffice Writer - Документ - глобален — OpenOffice Writer + Hlabalny dakument OpenOffice Writer + Глобален документ — OpenOffice Writer document global d'OpenOffice Writer globální dokument OpenOffice Writer Dogfen eang OpenOffice (Writer) OpenOffice Writer-globalt dokument OpenOffice-Writer-Globaldokument Καθολικό έγγραφο OpenOffice Writer - OpenOffice Writer global document - documento global de OpenOffice Writer + OpenOffice Writer global document + documento global de LibreOffice Writer OpenOffice.org Writer dokumentu globala OpenOffice Writer - yleinen asiakirja OpenOffice Writer heiltøkt skjal document global OpenOffice Writer + document globâl OpenOffice Writer cáipéis chomhchoiteann OpenOffice Writer documento global de OpenOffice Writer מסמך גלובלי של OpenOffice Writer @@ -5208,7 +5345,7 @@ document global OpenOffice Writer Globalny dokument OpenOffice.org Writer documento global OpenOffice Writer - Documento global do OpenOffice Writer + Documento global do OpenOffice Writer Document global OpenOffice Writer Основной документ OpenOffice Writer Globálny dokument OpenOffice Writer @@ -5219,14 +5356,14 @@ OpenOffice Writer global belgesi загальний документ OpenOffice Writer Tài liệu toàn cục Writer của OpenOffice.org - OpenOffice Writer 全局文档 - OpenOffice Writer 主控文件 + OpenOffice Writer 全局文档 + OpenOffice Writer 主控文件 - - - + + + @@ -5234,9 +5371,10 @@ OpenOffice Writer template + OpenOffice Writer-sjabloon قالب Writer المكتب المفتوح OpenOffice Writer şablonu - Šablon OpenOffice Writer + Šablon OpenOffice Writer Шаблон за документи — OpenOffice Writer plantilla d'OpenOffice Writer šablona OpenOffice Writer @@ -5244,12 +5382,13 @@ OpenOffice Writer-skabelon OpenOffice-Writer-Vorlage Πρότυπο OpenOffice Writer - OpenOffice Writer template - plantilla de OpenOffice Writer + OpenOffice Writer template + plantilla de LibreOffice Writer OpenOffice Writer txantiloia OpenOffice Writer -malli OpenOffice Writer formur modèle OpenOffice Writer + model OpenOffice Writer teimpléad OpenOffice Writer modelo de OpenOffice Writer תסנית של OpenOffice Writer @@ -5271,7 +5410,7 @@ modèl OpenOffice Writer Szablon dokumentu OpenOffice.org Writer modelo OpenOffice Writer - Modelo do OpenOffice Writer + Modelo do OpenOffice Writer Șablon OpenOffice Writer Шаблон OpenOffice Writer Šablóna OpenOffice Writer @@ -5282,14 +5421,14 @@ OpenOffice Writer şablonu шаблон документа OpenOffice Writer Mẫu tài liệu Writer của OpenOffice.org - OpenOffice Writer 模板 - OpenOffice Writer 範本 + OpenOffice Writer 模板 + OpenOffice Writer 範本 - - - + + + @@ -5297,22 +5436,24 @@ ODT document + ODT-dokument مستند ODT Documentu ODT - Dakument ODT + Dakument ODT Документ — ODT document ODT dokument ODT ODT-dokument ODT-Dokument Έγγραφο ODT - ODT document + ODT document ODT-dokumento documento ODT ODT dokumentua ODT-asiakirja ODT skjal document ODT + document ODT cáipéis ODT documento ODT מסמך ODT @@ -5333,7 +5474,7 @@ document ODT Dokument ODT documento ODT - Documento ODT + Documento ODT Document ODT Документ ODT Dokument ODT @@ -5344,16 +5485,16 @@ ODT belgesi документ ODT Tài liệu ODT - ODT 文档 - ODT 文件 + ODT 文档 + ODT 文件 ODT OpenDocument Text - - - + + + @@ -5361,6 +5502,7 @@ ODT document (Flat XML) + ODT-dokument (plat XML) مستند ODT (Flat XML) Documentu ODT (XML planu) Документ — ODT (само XML) @@ -5369,12 +5511,13 @@ ODT-dokument (flad XML) ODT-Dokument (Unkomprimiertes XML) Έγγραφο ODT (Flat XML) - ODT document (Flat XML) + ODT document (Flat XML) documento ODT (XML plano) ODT dokumentua (XML soila) ODT-asiakirja (Flat XML) ODT skjal (Flat XML) document ODT (XML plat) + document ODT (XML sempliç) cáipéis ODT (XML cothrom) documento ODT (XML plano) מסמך ODT‏ (Flat XML) @@ -5393,7 +5536,7 @@ document ODT (XML plat) Dokument ODT (prosty XML) documento ODT (XML plano) - Documento ODT (Flat XML) + Documento ODT (Flat XML) Document ODT (XML simplu) Документ ODT (простой XML) Dokument ODT (čisté XML) @@ -5402,8 +5545,8 @@ ODT-dokument (platt XML) ODT belgesi (Düz XML) документ ODT (Flat XML) - ODT 文档(Flat XML) - ODT 文件 (Flat XML) + ODT 文档(Flat XML) + ODT 文件 (Flat XML) FODT OpenDocument Text (Flat XML) @@ -5412,21 +5555,23 @@ ODT template + ODT-sjabloon قالب ODT - Šablon ODT + Šablon ODT Шаблон за документи — ODT plantilla ODT šablona ODT ODT-skabelon ODT-Vorlage Πρότυπο ODT - ODT template + ODT template ODT-ŝablono plantilla ODT ODT txantiloia ODT-malli ODT formur modèle ODT + model ODT teimpléad ODT modelo ODT תבנית ODT @@ -5447,7 +5592,7 @@ modèl ODT Szablon ODT modelo ODT - Modelo ODT + Modelo ODT Șablon ODT Шаблон ODT Šablóna ODT @@ -5458,16 +5603,16 @@ ODT şablonu шаблон ODT Mẫu ODT - ODT 模板 - ODT 範本 + ODT 模板 + ODT 範本 ODT OpenDocument Text - - - + + + @@ -5475,21 +5620,23 @@ OTH template + OTH-sjabloon قالب OTH - Šablon OTH + Šablon OTH Шаблон за страници — OTH plantilla OTH šablona OTH OTH-skabelon OTH-Vorlage Πρότυπο OTH - OTH template + OTH template OTH-ŝablono plantilla OTH OTH txantiloia OTH-malli OTH formur modèle OTH + model OTH teimpléad OTH modelo OTH תבנית OTH @@ -5510,7 +5657,7 @@ modèl OTH Szablon OTH modelo OTH - Modelo OTH + Modelo OTH Șablon OTH Шаблон OTH Šablóna OTH @@ -5521,16 +5668,16 @@ OTH şablonu шаблон OTH Mẫu ODH - OTH 模板 - OTH 範本 + OTH 模板 + OTH 範本 OTH OpenDocument HTML - - - + + + @@ -5538,22 +5685,24 @@ ODM document + ODM-dokument مستند ODM Documentu ODM - Dakument ODM + Dakument ODM Документ — ODM document ODM dokument ODM ODM-dokument ODM-Dokument Έγγραφο ODM - ODM document + ODM document ODM-dokumento documento ODM ODM dokumentua ODM-asiakirja ODM skjal document ODM + document ODM cáipéis ODM documento ODM מסמך ODM @@ -5574,7 +5723,7 @@ document ODM Dokument ODM documento ODM - Documento ODM + Documento ODM Document ODM Документ ODM Dokument ODM @@ -5585,16 +5734,16 @@ ODM belgesi документ ODM Tài liệu ODM - ODM 文档 - ODM 文件 + ODM 文档 + ODM 文件 ODM OpenDocument Master - - - + + + @@ -5602,21 +5751,23 @@ ODG drawing + ODG-tekening تصميم ODG - Rysunak ODG + Rysunak ODG Чертеж — ODG dibuix ODG kresba ODG ODG-tegning ODG-Zeichnung Σχέδιο ODG - ODG drawing + ODG drawing ODG-desegnaĵo dibujo ODG ODG marrazkia ODG-piirros ODG tekning dessin ODG + dissen ODG líníocht ODG debuxo ODG ציור ODG @@ -5637,7 +5788,7 @@ dessenh ODG Rysunek ODG desenho ODG - Desenho ODG + Desenho ODG Desen ODG Рисунок ODG Kresba ODG @@ -5648,16 +5799,16 @@ ODG çizimi малюнок ODG Bản vẽ ODG - ODG 绘图 - ODG 繪圖 + ODG 绘图 + ODG 繪圖 ODG OpenDocument Drawing - - - + + + @@ -5665,6 +5816,7 @@ ODG drawing (Flat XML) + ODG-tekening (plat XML) رسمة ODG (Flat XML) Чертеж — ODG (само XML) dibuix ODG (XML pla) @@ -5672,12 +5824,13 @@ ODG-tegning (flad XML) ODG-Zeichnung (Unkomprimiertes XML) Σχέδιο ODG (Flat XML) - ODG drawing (Flat XML) + ODG drawing (Flat XML) dibujo ODG (XML plano) ODG marrazkia (XML soila) ODG-piirros (Flat XML) ODG tekning (Flat XML) dessin ODG (XML plat) + dissen ODG (XML sempliç) líníocht ODG (XML cothrom) debuxo ODB (XML plano) ציור ODG (Flat XML( @@ -5696,7 +5849,7 @@ dessenh ODG (XML plat) Rysunek ODG (prosty XML) desenho ODG (XML plano) - Desenho ODG (Flat XML) + Desenho ODG (Flat XML) Desen ODG (XML simplu) Рисунок ODG (простой XML) Kresba ODG (čisté XML) @@ -5704,9 +5857,9 @@ ОДГ цртеж (Обичан ИксМЛ) ODG-teckning (platt XML) ODG çizimi (Düz XML) - малюнок ODG (Flat XML) - ODG 绘图(Flat XML) - ODG 繪圖 (Flat XML) + малюнок ODG (простий XML) + ODG 绘图(Flat XML) + ODG 繪圖 (Flat XML) FODG OpenDocument Drawing (Flat XML) @@ -5715,21 +5868,23 @@ ODG template + ODG-sjabloon قالب ODG - Šablon ODG + Šablon ODG Шаблон за чертежи — ODG plantilla ODG šablona ODG ODG-skabelon ODG-Vorlage Πρότυπο ODG - ODG template + ODG template ODG-ŝablono plantilla ODG ODG txantiloia ODG-malli ODG formur modèle ODG + model ODG teimpléad ODG modelo ODG תבנית ODG @@ -5750,7 +5905,7 @@ modèl ODG Szablon ODG modelo ODG - Modelo ODG + Modelo ODG Șablon ODG Шаблон ODG Šablóna ODG @@ -5761,16 +5916,16 @@ ODG şablonu шаблон ODG Mẫu ODG - ODG 模板 - ODG 範本 + ODG 模板 + ODG 範本 ODG OpenDocument Drawing - - - + + + @@ -5778,21 +5933,23 @@ ODP presentation + ODP-voorlegging عرض تقديمي ODP - Prezentacyja ODP + Prezentacyja ODP Презентация — ODP presentació ODP prezentace ODP ODP-præsentation ODP-Präsentation Παρουσίαση ODP - ODP presentation + ODP presentation ODP-prezentaĵo presentación ODP ODP aurkezpena ODP-esitys ODP framløga présentation ODP + presentazion ODP láithreoireacht ODP presentación ODP מצגת ODP @@ -5813,7 +5970,7 @@ presentacion ODP Prezentacja ODP apresentação ODP - Apresentação ODP + Apresentação ODP Prezentare ODP Презентация ODP Prezentácia ODP @@ -5824,16 +5981,16 @@ ODP sunumu презентація ODP Trình diễn ODM - ODP 演示文稿 - ODP 簡報 + ODP 演示文稿 + ODP 簡報 ODP OpenDocument Presentation - - - + + + @@ -5841,6 +5998,7 @@ ODP presentation (Flat XML) + ODP-voorlegging (plat XML) عرض ODP (Flat XML) Презентация — ODP (само XML) presentació ODP (XML pla) @@ -5848,12 +6006,13 @@ ODP-præsentation (flad XML) ODP-Präsentation (Unkomprimiertes XML) Παρουσίαση ODP (Flat XML) - ODP presentation (Flat XML) + ODP presentation (Flat XML) presentación ODP (XML plano) ODP aurkezpena (XML soila) ODP-esitys (Flat XML) ODP framløga (Flat XML) présentation ODP (XML plat) + presentazion ODP (XML sempliç) láithreoireacht ODP (XML cothrom) presentación ODP (XML plano) מצגת ODP‏ (Flat XML) @@ -5872,7 +6031,7 @@ presentacion ODP (XML plat) Prezentacja ODP (prosty XML) apresentação ODP (XML plano) - Apresentação ODP (Flat XML) + Apresentação ODP (Flat XML) Prezentare ODP (XML simplu) Презентация ODP (простой XML) Prezentácia ODP (čisté XML) @@ -5881,8 +6040,8 @@ ODP-presentation (platt XML) ODP sunumu (Düz XML) презентація ODP (Flat XML) - ODP 演示文稿(Flat XML) - ODP 範本 (Flat XML) + ODP 演示文稿(Flat XML) + ODP 範本 (Flat XML) FODP OpenDocument Presentation (Flat XML) @@ -5891,21 +6050,23 @@ ODP template + ODP-sjabloon قالب ODP - Šablon ODP + Šablon ODP Шаблон за презентации — ODP plantilla ODP šablona ODP ODP-skabelon ODP-Vorlage Πρότυπο ODP - ODP template + ODP template ODP-ŝablono plantilla ODP ODP txantiloia ODP-malli ODP formur modèle ODP + model ODP teimpléad ODP modelo ODP תבנית ODP @@ -5926,7 +6087,7 @@ modèl ODP Szablon ODP modelo ODP - Modelo ODP + Modelo ODP Șablon ODP Шаблон ODP Šablóna ODP @@ -5937,16 +6098,16 @@ ODP şablonu шаблон ODP Mẫu ODP - ODP 模板 - ODP 範本 + ODP 模板 + ODP 範本 ODP OpenDocument Presentation - - - + + + @@ -5954,21 +6115,23 @@ ODS spreadsheet + ODS-sigblad جدول ODS - Raźlikovy arkuš ODS + Raźlikovy arkuš ODS Таблица — ODS full de càlcul ODS sešit ODS ODS-regneark ODS-Tabelle Λογιστικό φύλλο ODS - ODS spreadsheet + ODS spreadsheet ODS-kalkultabelo hoja de cálculo ODS ODS kalkulu-orria ODS-taulukko ODS rokniark feuille de calcul ODS + sfuei di calcul ODS scarbhileog ODS folla de cálculo ODS גליון נתונים ODS @@ -5989,7 +6152,7 @@ fuèlh de calcul ODS Arkusz ODS folha de cálculo ODS - Planilha ODS + Planilha ODS Foaie de calcul ODS Электронная таблица ODS Zošit ODS @@ -5997,19 +6160,19 @@ Fletë llogaritjesh ODS ОДС табела ODS-kalkylblad - ODS çalışma sayfası + ODS hesap çizelgesi ел. таблиця ODS Bảng tính ODS - ODS 电子表格 - ODS 試算表 + ODS 电子表格 + ODS 試算表 ODS OpenDocument Spreadsheet - - - + + + @@ -6017,6 +6180,7 @@ ODS spreadsheet (Flat XML) + ODS-sigblad (plat XML) جدول ODS (Flat XML) Таблица — ODS (само XML) full de càlcul ODS (XML pla) @@ -6024,12 +6188,13 @@ ODS-regneark (flad XML) ODS-Tabelle (Unkomprimiertes XML) Λογιστικό φύλλο ODS (Flat XML) - ODS spreadsheet (Flat XML) + ODS spreadsheet (Flat XML) hoja de cálculo ODS (XML plano) ODS kalkulu-orria (XML soila) ODS-laskentataulukko (Flat XML) ODS rokniark (Flat XML) feuille de calcul ODS (XML plat) + sfuei di calcul ODS (XML sempliç) scarbhileog ODS (XML cothrom) folla de cálculo ODS (XML plano) גליון נתונים ODS‏ (XML פשוט) @@ -6048,17 +6213,17 @@ fuèlh de calcul ODS (XML plat) Arkusz ODS (prosty XML) folha de cálculo ODS (XML plano) - Planilha ODS (Flat XML) + Planilha ODS (Flat XML) Foaie de calcul ODS (XML simplu) Электронная таблица ODS (простой XML) Zošit ODS (čisté XML) Preglednica ODS (nepovezan XML) ОДС табела (обични ИксМЛ) ODS-kalkylblad (platt XML) - ODS sunumu (Düz XML) + ODS hesap çizelgesi (Düz XML) ел. таблиця ODS (Flat XML) - ODS 电子表格 (Flat XML) - ODS 試算表 (Flat XML) + ODS 电子表格 (Flat XML) + ODS 試算表 (Flat XML) FODS OpenDocument Spreadsheet (Flat XML) @@ -6067,21 +6232,23 @@ ODS template + ODS-sjabloon قالب ODS - Šablon ODS + Šablon ODS Шаблон за таблици — ODS plantilla ODS šablona ODS ODS-skabelon ODS-Vorlage Πρότυπο ODS - ODS template + ODS template ODS-ŝablono plantilla ODS ODS txantiloia ODS-malli ODS formur modèle ODS + model ODS teimpléad ODS modelo ODS תבנית ODS @@ -6102,7 +6269,7 @@ modèl ODS Szablon ODS modelo ODS - Modelo ODS + Modelo ODS Șablon ODS Шаблон ODS Šablóna ODS @@ -6113,16 +6280,16 @@ ODS şablonu шаблон ODS Mẫu ODS - ODS 模板 - ODS 範本 + ODS 模板 + ODS 範本 ODS OpenDocument Spreadsheet - - - + + + @@ -6130,21 +6297,23 @@ ODC chart + ODC-grafiek مخطط ODC - Dyjahrama ODC + Dyjahrama ODC Диаграма — ODC diagrama ODC graf ODC ODC-diagram ODC-Diagramm Διάγραμμα ODC - ODC chart + ODC chart ODC-diagramo gráfico ODC ODC diagrama ODC-kaavio ODC strikumynd graphique ODC + grafic ODC cairt ODC gráfica ODC תו ODC @@ -6164,7 +6333,7 @@ grafic ODC Wykres ODC gráfico ODC - Gráfico ODC + Gráfico ODC Diagramă ODC Диаграмма ODC Graf ODC @@ -6172,19 +6341,19 @@ Grafik ODC ОДЦ график ODC-diagram - ODC çizelgesi + ODC çizgesi діаграма ODC Sơ đồ ODC - ODC 图表 - ODC 圖表 + ODC 图表 + ODC 圖表 ODC OpenDocument Chart - - - + + + @@ -6192,6 +6361,7 @@ ODC template + ODC-sjabloon قالب ODC Шаблон за диаграми — ODC plantilla ODC @@ -6199,13 +6369,14 @@ ODC-skabelon ODC-Vorlage Πρότυπο ODC - ODC template + ODC template ODC-ŝablono plantilla ODC ODC txantiloia ODC-malli ODC formur modèle ODC + model ODC teimpléad ODC modelo ODC תבנית ODC @@ -6224,7 +6395,7 @@ modèl ODC Szablon ODC modelo ODC - Modelo ODC + Modelo ODC Șablon ODC Шаблон ODC Šablóna ODC @@ -6234,16 +6405,16 @@ ODC şablonu шаблон ODC Mẫu ODC - ODC 模板 - ODC 範本 + ODC 模板 + ODC 範本 ODC OpenDocument Chart - - - + + + @@ -6251,21 +6422,23 @@ ODF formula + ODF-formule صيغة ODF - Formuła ODF + Formuła ODF Формула — ODF fórmula ODF vzorec ODF ODF-formel ODF-Formel Μαθηματικός τύπος ODF - ODF formula + ODF formula ODF-formulo fórmula ODF ODF formula ODF-kaava ODF frymil formule ODF + formule ODF foirmle ODF Fórula ODF נוסחת ODF @@ -6286,7 +6459,7 @@ formula ODF Formuła ODF fórmula ODF - Fórmula ODF + Fórmula ODF Formulă ODF Формула ODF Vzorec ODF @@ -6297,16 +6470,16 @@ ODF formülü формула ODF Công thức ODF - ODF 公式 - ODF 公式 + ODF 公式 + ODF 公式 ODF OpenDocument Formula - - - + + + @@ -6314,6 +6487,7 @@ ODF template + ODF-sjabloon قالب ODF Шаблон за формули — ODF plantilla ODF @@ -6321,13 +6495,14 @@ ODF-skabelon ODF-Vorlage Πρότυπο ODF - ODF template + ODF template ODF-ŝablono plantilla ODF ODF txantiloia ODF-malli ODF formur modèle ODF + model ODF teimpléad ODF modelo ODF תבנית ODF @@ -6346,7 +6521,7 @@ modèl ODF Szablon ODF modelo ODF - Modelo ODF + Modelo ODF Șablon ODF Шаблон ODF Šablóna ODF @@ -6356,16 +6531,16 @@ ODF şablonu шаблон ODF Mẫu ODF - ODF 模板 - ODF 範本 + ODF 模板 + ODF 範本 ODF OpenDocument Formula - - - + + + @@ -6373,21 +6548,23 @@ ODB database + ODB-databasis قاعدة بيانات ODB - Baza źviestak ODB + Baza źviestak ODB База от данни — ODB base de dades ODB databáze ODB ODB-database ODB-Datenbank Βάση δεδομένων ODB - ODB database + ODB database ODB-datumbazo base de datos ODB ODB datu-basea ODB-tietokanta ODB dátustovnur base de données ODB + base di dâts ODB bunachar sonraí ODB base de datos ODB מסד נתונים ODB @@ -6408,7 +6585,7 @@ banca de donadas ODB Baza danych ODB base de dados ODB - Banco de dados ODB + Banco de dados ODB Bază de date ODB База данных ODB Databáza ODB @@ -6416,19 +6593,19 @@ Bazë me të dhëna ODB ОДБ база података ODB-databas - ODB veritabanı + ODB veri tabanı база даних ODB Cơ sở dữ liệu ODB - ODB 数据库 - ODB 資料庫 + ODB 数据库 + ODB 資料庫 ODB OpenDocument Database - - - + + + @@ -6437,22 +6614,24 @@ ODI image + ODI-beeld صورة ODI Imaxe ODI - Vyjava ODI + Vyjava ODI Изображение — ODI imatge ODI obrázek ODI ODI-billede ODI-Bild Εικόνα ODI - ODI image + ODI image ODI-bildo imagen ODI ODI irudia ODI-kuva ODI mynd image ODI + imagjin ODI íomhá ODI imaxe ODI תמונת ODI @@ -6473,7 +6652,7 @@ imatge ODI Obraz ODI imagem ODI - Imagem ODI + Imagem ODI Imagine ODI Изображение ODI Obrázok ODI @@ -6484,16 +6663,16 @@ ODI görüntüsü зображення ODI Ảnh ODI - ODI 图像 - ODI 影像 + ODI 图像 + ODI 影像 ODI OpenDocument Image - - - + + + @@ -6501,21 +6680,23 @@ OpenOffice.org extension + OpenOffice.org-uitbreiding امتداد OpenOffice.org Estensión d'OpenOffice.org - Pašyreńnie OpenOffice.org - Разширение — OpenOffice + Pašyreńnie OpenOffice.org + Приставка — OpenOffice extensió d'OpenOffice.org rozšíření OpenOffice.org OpenOffice.org-udvidelse OpenOffice.org-Erweiterung Επέκταση OpenOffice.org - OpenOffice.org extension + OpenOffice.org extension extensión de LibreOffice OpenOffice.org luzapena OpenOffice.org-laajennus OpenOffice.org víðkan extension OpenOffice.org + estension OpenOffice.org eisínteacht OpenOffice.org Extensión de OpenOffice.org הרחבה של OpenOffice.org @@ -6535,7 +6716,7 @@ extension OpenOffice.org Rozszerzenie OpenOffice.org extensão OpenOffice.org - Extensão do OpenOffice + Extensão do OpenOffice Extensie OpenOffice.org Расширение OpenOffice.org Rozšírenie OpenOffice.org @@ -6546,14 +6727,15 @@ OpenOffice.org eklentisi розширення OpenOffice.org Phần mở rộng của OpenOffice.org - OpenOffice.org 扩展 - OpenOffice.org 擴充套件 + OpenOffice.org 扩展 + OpenOffice.org 擴充套件 Android package + Android-pakket Paquete d'Android Пакет — Android paquet d'Android @@ -6561,12 +6743,13 @@ Android-pakke Android-Paket Πακέτο Android - Android package + Android package Android-pakaĵo paquete de Android Android paketea Android-paketti paquet Android + pachet Android pacáiste Android paquete de Android חבילת אנדרויד @@ -6579,12 +6762,13 @@ Android-ის პაკეტი Android дестесі Android 패키지 + Android paketas Android pakotne Android pakket paquet Android Pakiet Androida pacote Android - Pacote do Android + Pacote do Android Пакет Android Balík Android Paket Android @@ -6592,29 +6776,31 @@ Android-paket Android paketi пакунок Android - Android 应用包 - Android 軟體包 + Android 应用包 + Android 軟體包 SIS package + SIS-pakket حزمة SIS Paquete SIS - Pakunak SIS + Pakunak SIS Пакет — SIS paquet SIS balíček SIS SIS-pakke SIS-Paket Πακέτο SIS - SIS package + SIS package SIS-pakaĵo paquete SIS SIS paketea SIS-paketti SIS pakki paquet SIS + pachet SIS pacáiste SIS paquete SIS חבילת SIS @@ -6634,7 +6820,7 @@ paquet SIS Pakiet SIS pacote SIS - Pacote SIS + Pacote SIS Pachet SIS Пакет SIS Balíček SIS @@ -6645,34 +6831,36 @@ SIS paketi пакунок SIS Gói SIS - SIS 软件包 - SIS 軟體包 + SIS 软件包 + SIS 軟體包 SIS Symbian Installation File - + SISX package + SISX-pakket حزمة SISX Paquete SISX - Pakunak SISX + Pakunak SISX Пакет — SISX paquet SISX balíček SISX SISX-pakke SISX-Paket Πακέτο SISX - SISX package + SISX package SISX-pakaĵo paquete SISX SISX paketea SISX-paketti SISX pakki paquet SISX + pachet SISX pacáiste SISX paquete SISX חבילת SISX @@ -6692,7 +6880,7 @@ paquet SISX Pakiet SISX pacote SISX - Pacote SISX + Pacote SISX Pachet SISX Пакет SISX Balíček SISX @@ -6703,59 +6891,44 @@ SISX paketi пакунок SISX Gói SISX - SISX 软件包 - SISX 軟體包 + SISX 软件包 + SISX 軟體包 SIS Symbian Installation File - + - Network Packet Capture - Прихванати пакети по мрежата + network packet capture + Прихванати мрежови пакети captura de paquets de xarxa - Network Packet Capture - Netværkspakkeoptegnelse - Netzwerk-Paketmitschnitt - Σύλληψη πακέτων δικτύου - Network Packet Capture - captura de paquete de red - Sareko pakete kaptura - Verkkopakettien kaappaus + Netværkspakkeoptagelse + Netzwerkpaketmitschnitt + network packet capture + captura de paquetes de red + sareko pakete kaptura + verkkopakettien kaappaus capture de paquet réseau - Gabháltas Paicéid Líonra - Captura de Network Packet - לכידה של מנות נתונים ברשת Mrežno hvatanje paketa - Hálózati csomagelfogás - Captura de pacchettos de rete - Tangkapan Paket Jaringan + hálózaticsomag-rögzítés + tangkapan paket jaringan Cattura pacchetti rete - ネットワークパケットキャプチャー - ქსელური პაკეტის ანაბეჭდი ұсталған желілік пакеттер 네트워크 패킷 캡처 - Network Packet Capture - Network Packet Capture - captura de paquet ret Przechwycenie pakietu sieciowego - captura Network Packet - Pacote de captura de rede - Захваченные сетевые пакеты - Zachytené sieťové pakety - Zajem omrežnih paketov - Снимање мрежног пакета - Fångst av nätverkspaket - Ağ Paket Yakalaması - перехоплені дані мережевих пакетів - 网络包抓取 - 網路封包捕捉 + captura dos pacotes de rede + Captura de pacotes de rede + захваченные сетевые пакеты + nätverkspaketsspårning + ağ paket yakalaması + перехоплення мережевого пакета + 网络数据包抓取 - - + + @@ -6765,10 +6938,11 @@ WordPerfect document + WordPerfect-dokument مستند WordPerfect Documentu de WordPerfect WordPerfect sənədi - Dakument WordPerfect + Dakument WordPerfect Документ — WordPerfect document WordPerfect dokument WordPerfect @@ -6776,13 +6950,14 @@ WordPerfect-dokument WordPerfect-Dokument Έγγραφο WordPerfect - WordPerfect document + WordPerfect document WordPerfect-dokumento documento de WordPerfect WordPerfect dokumentua WordPerfect-asiakirja WordPerfect skjal document WordPerfect + document WordPerfect cáipéis WordPerfect documento de WordPerfect מסמך WordPerfect @@ -6803,7 +6978,7 @@ document WordPerfect Dokument WordPerfect documento WordPerfect - Documento do WordPerfect + Documento do WordPerfect Document WordPerfect Документ WordPerfect Dokument WordPerfect @@ -6814,14 +6989,14 @@ WordPerfect belgesi документ WordPerfect Tài liệu WordPerfect - WordPerfect 文档 - WordPerfect 文件 + WordPerfect 文档 + WordPerfect 文件 - - + + @@ -6831,126 +7006,125 @@ - YouTube Media Archive + YouTube media archive + Медиен архив — YouTube + arxiu de mitjans de YouTube + YouTube-mediearkiv + YouTube-Medienarchiv + YouTube media archive + archivador multimedia de YouTube + YouTube media fitxategia + YouTube-media-arkisto + archive média YouTube + YouTube medijska arhiva + YouTube médiaarchívum + Arsip media YouTube + Archivio multimediale YouTube + YouTube медиа архиві + 유튜브 미디어 저장 파일 + Archiwum multimediów YouTube + arquivo multimédia do YouTube + Arquivo de mídia do Youtube + Медиа-архив YouTube + Archív médií YouTube + YouTube-mediaarkiv + YouTube ortam arşivi + мультимедійний архів YouTube + YouTube 媒体存档 - SPSS Portable Data File - ملف بيانات SPSS متنقلة + SPSS portable data file Данни — SPSS, преносими fitxer de dades portables SPSS - soubor přenositelných dat SPSS - Portabel SPSS-datafil + SPSS portable data-fil SPSS portable Datendatei - Φορητό αρχείο δεδομένων SPSS - SPSS Portable Data File - archivo de datos portátil de SPSS - SPSS datuen fitxategi eramangarria - SPSS flytifør dátufíla + SPSS portable data file + archivo de datos portátiles de SPSS + SPSS datu fitxategi eramangarria + Siirrettävä SPSS-tiedosto fichier portable de données SPSS - comhad iniompartha sonraí SPSS - ficheiro de datos portábel SPSS - קובץ מידע נייד SPSS SPSS prenosiva podatkovna datoteka SPSS hordozható adatfájl - File portabile de datos SPSS - Berkas Data Portabel SPSS + Berkas data portabel SPSS File dati SPSS Portable - SPSS ポータブルデータファイル - SPSS тасымалы ақпарат файлы - SPSS 이동식 데이터 파일 - SPSS perkeliamų duomenų failas - SPSS pārvietojamu datu datne - SPSS Portable Databestand - fichièr portable de donadas SPSS + SPSS тасымалы деректер файлы + SPSS 휴대 데이터 파일 Plik przenośnych danych SPSS ficheiro de dados portátil SPSS - Arquivo de Dados Portáteis SPSS - Fișier portabil de date SPSS + Arquivo de dados portáteis SPSS Файл переносимых данных SPSS - Súbor prenosných dát SPSS - Prenosna podatkovna datoteka SPSS - СПСС датотека преносних података - Portabel SPSS-datafil - SPSS Taşınabilir Veri Dosyası - файл даних SPSS Portable - SPSS 便携式数据文件 - SPSS 可攜式資料檔 + Súbor prenosných údajov SPSS + SPSS portabel datafil + SPSS taşınabilir veri dosyası + портативний файл даних SPSS + SPSS 便携式数据文件 + SPSS 可攜資料檔 + SPSS + Statistical Package for the Social Sciences - + - SPSS Data File - ملف بيانات SPSS + SPSS data file Данни — SPSS fitxer de dades SPSS - datový soubor SPSS - SPSS-datafil + SPSS data-fil SPSS-Datendatei - Αρχείο δεδομένων SPSS - SPSS Data File - archivo de datos SPSS - SPSS datuen fitxategia + SPSS data file + archivo de datos de SPSS + SPSS datu fitxategia SPSS-datatiedosto - SPSS dátufíla fichier de données SPSS - comhad sonraí SPSS - ficheiro de datos SPSS - קובץ מידע SPSS SPSS podatkovna datoteka SPSS adatfájl - File de datos SPSS - Berkas Data SPSS + Berkas data SPSS File dati SPSS - SPSS データファイル - SPSS ақпарат файлы + SPSS деректер файлы SPSS 데이터 파일 - SPSS duomenų failas - SPSS datu datne - SPSS Databstand - fichièr de donadas SPSS Plik danych SPSS ficheiro de dados SPSS - Arquivo de dados SPSS - Fișier date SPSS + Arquivo de dados SPSS Файл данных SPSS - Dátový súbor SPSS - Podatkovna datoteka SPSS - СПСС датотека података + Súbor údajov SPSS SPSS-datafil - SPSS Veri Dosyası + SPSS veri dosyası файл даних SPSS - SPSS 数据文件 - SPSS 資料檔 + SPSS 数据文件 + SPSS 資料檔 + SPSS + Statistical Package for the Social Sciences - - + + XBEL bookmarks + XBEL-boekmerke علامات XBEL - Zakładki XBEL + Zakładki XBEL Отметки — XBEL llista d'adreces d'interès XBEL záložky XBEL XBEL-bogmærker XBEL-Lesezeichen Σελιδοδείκτες XBEL - XBEL bookmarks + XBEL bookmarks XBEL-legosignoj marcadores XBEL XBEL laster-markak XBEL-kirjanmerkit XBEL bókamerki marque-pages XBEL + segnelibris XBEL leabharmharcanna XBEL Marcadores XBEL סימניית XBEL @@ -6971,7 +7145,7 @@ marcapaginas XBEL Zakładki XBEL marcadores XBEL - Marcadores do XBEL + Marcadores do XBEL Semne de carte XBEL Закладки XBEL Záložky XBEL @@ -6982,35 +7156,37 @@ XBEL yer imleri закладки XBEL Liên kết đã lưu XBEL - XBEL 书签 - XBEL 格式書籤 + XBEL 书签 + XBEL 格式書籤 XBEL XML Bookmark Exchange Language - + 7-zip archive + 7-zip-argief أرشيف 7-zip Archivu 7-zip - Archiŭ 7-zip + Archiŭ 7-zip Архив — 7-zip arxiu 7-zip archiv 7-zip 7-zip-arkiv 7zip-Archiv Συμπιεσμένο αρχείο 7-zip - 7-zip archive + 7-zip archive 7z-arkivo archivador 7-zip 7-zip artxiboa 7-zip-arkisto 7-zip skjalasavn archive 7-zip + archivi 7-zip cartlann 7-zip arquivo 7-zip ארכיון 7-zip @@ -7031,7 +7207,7 @@ archiu 7-zip Archiwum 7-zip arquivo 7-zip - Pacote 7-Zip + Pacote 7-Zip Arhivă 7-zip Архив 7-zip Archív 7-zip @@ -7042,32 +7218,34 @@ 7-Zip arşivi архів 7-zip Kho nén 7-zip - 7-zip 归档文件 - 7-zip 封存檔 + 7-zip 归档文件 + 7-zip 封存檔 - + AbiWord document + AbiWord-dokument مستند آبي وورد Documentu d'AbiWord - Dakument AbiWord + Dakument AbiWord Документ — AbiWord document AbiWord dokument AbiWord AbiWord-dokument AbiWord-Dokument Έγγραφο AbiWord - AbiWord document + AbiWord document AbiWord-dokumento documento de Abiword AbiWord dokumentua AbiWord-asiakirja AbiWord skjal document AbiWord + document AbiWord cáipéis AbiWord documento de AbiWord מסמך AbiWord @@ -7089,7 +7267,7 @@ document AbiWord Dokument AbiWord documento AbiWord - Documento do AbiWord + Documento do AbiWord Document AbiWord Документ AbiWord Dokument AbiWord @@ -7100,13 +7278,13 @@ AbiWord belgesi документ AbiWord Tài liệu AbiWord - AbiWord 文档 - AbiWord 文件 + AbiWord 文档 + AbiWord 文件 - - + + @@ -7117,18 +7295,19 @@ CD image cuesheet صفيحة صورة الـCD جديلة - Infarmacyjny arkuš vyjavy CD - Описание на изображение на CD + Infarmacyjny arkuš vyjavy CD + Съдържание на CD «cuesheet» d'imatge de CD rozvržení stop obrazu CD Cd-aftrykscuesheet CD-Abbild-Cuesheet Φύλλο cue εικόνας CD - CD image cuesheet + CD image cuesheet hoja CUE de imagen de CD CD irudiaren CUE orria CD-vedos cuesheet index de pistes de CD + sfuei-brivade CUE de imagjin CD bileog chiúála íomhá CD cue sheet dunha imaxe de CD גליון נתונים לתמונת דיסק @@ -7147,8 +7326,8 @@ CD-bilete-indeksfil indèx de pistas de CD Obraz cuesheet płyty CD - índice de CD de imagem - Índice de Imagem de CD + índice de imagem do CD + Índice de Imagem de CD Imagine CD cuesheet Таблица содержания образа CD Rozvrhnutie stôp obrazu CD @@ -7156,21 +7335,22 @@ Cuesheet imazhi CD Кју лист ЦД одраза Indexblad för cd-avbild - CD görüntüsü belgesi + CD görüntüsü çizelgesi таблиця CUE образу CD Tờ tín hiệu báo ảnh CD - CD 映像标记文件 - CD 映像指示表 + CD 映像标记文件 + CD 映像指示表 Lotus AmiPro document + Lotus AmiPro-dokument مستند Lotus AmiPro Documentu de Lotus AmiPro Lotus AmiPro sənədi - Dakument Lotus AmiPro + Dakument Lotus AmiPro Документ — Lotus AmiPro document de Lotus AmiPro dokument Lotus AmiPro @@ -7178,13 +7358,14 @@ Lotus AmiPro-dokument Lotus-AmiPro-Dokument Έγγραφο Lotus AmiPro - Lotus AmiPro document + Lotus AmiPro document dokumento de Lotus AmiPro documento de Lotus AmiPro Lotus AmiPro dokumentua Lotus AmiPro -asiakirja Lotus AmiPro skjal document Lotus AmiPro + document Lotus AmiPro cáipéis Lotus AmiPro documento de Lotus AmiPro מסמך של Lotus AmiPro @@ -7205,7 +7386,7 @@ document Lotus AmiPro Dokument Lotus AmiPro documento Lotus AmiPro - Documento do Lotus AmiPro + Documento do Lotus AmiPro Document Lotus AmiPro Документ Lotus AmiPro Dokument Lotus AmiPro @@ -7216,13 +7397,14 @@ Lotus AmiPro belgesi документ Lotus AmiPro Tài liệu Lotus AmiPro - Lotus AmiPro 文档 - Lotus AmiPro 文件 + Lotus AmiPro 文档 + Lotus AmiPro 文件 AportisDoc document + AportisDoc-dokument مستند AportisDoc Documentu d'AportisDoc Документ — AportisDoc @@ -7231,13 +7413,14 @@ AportisDoc-dokument AportisDoc-Dokument Έγγραφο AportisDoc - AportisDoc document + AportisDoc document AportisDoc-dokumento documento de AportisDoc AportisDoc dokumentua AportisDoc-asiakirja AportisDoc skjal document AportisDoc + document AportisDoc cáipéis AportisDoc documento de AportiDoc מסמך AportisDoc @@ -7256,7 +7439,7 @@ document AportisDoc Dokument AportisDoc documento AportisDoc - Documento do AportisDoc + Documento do AportisDoc Document AportisDoc Документ AportisDoc Dokument AportisDoc @@ -7266,34 +7449,36 @@ AportisDoc belgesi документ AportisDoc Tài liệu AportisDoc - AportisDoc 文档 - AportisDoc 文件 + AportisDoc 文档 + AportisDoc 文件 - - + + Applix Spreadsheets spreadsheet + Applix Spreadsheets-sigblad جداول بيانات Applix - Raźlikovy arkuš Applix Spreadsheets + Raźlikovy arkuš Applix Spreadsheets Таблица — Applix Spreadsheets full de càlcul d'Applix Spreadsheets sešit Applix Spreadsheets Applix Spreadsheets-regneark Applix-Spreadsheets-Tabelle Λογιστικό φύλλο Applix Spreadsheets - Applix Spreadsheets spreadsheet + Applix Spreadsheets spreadsheet sterntabelo de Applix Spreadsheets hoja de cálculo de Applix Spreadsheets Applix Spreadsheets kalkulu-orria Applix Spreadsheets -taulukko Applix Spreadsheets rokniark feuille de calcul Applix + sfuei di calcul Applix Spreadsheets scarbhileog Applix Spreadsheets folla de cálculo de Applix גליון נתונים של Applix Spreadsheets @@ -7315,7 +7500,7 @@ fuèlh de calcul Applix Arkusz Applix Spreadsheets folha de cálculo Applix Spreadsheets - Planilha do Applix Spreadsheets + Planilha do Applix Spreadsheets Foaie de calcul Applix Электронная таблица Applix Spreadsheets Zošit Applix Spreadsheets @@ -7323,26 +7508,27 @@ Fletë llogaritjesh Applix Spreadsheets документ Апликсове Табеле Applix Spreadsheets-kalkylblad - Applix Spreadsheets çalışma sayfası + Applix Spreadsheets hesap çizelgesi ел. таблиця Applix Spreadsheets Bảng tính Applix Spreadsheets - Applix Spreadsheets 电子表格 - Applix Spreadsheets 試算表 + Applix Spreadsheets 电子表格 + Applix Spreadsheets 試算表 - - - + + + Applix Words document + Applix Words-dokument مستند كلمات Applix Documentu d'Applix Words Applix Words sənədi - Dakument Applix Words + Dakument Applix Words Документ — Applix Words document d'Applix Words dokument Applix Words @@ -7350,13 +7536,14 @@ Applix Words-dokument Applix-Words-Dokument Έγγραφο Applix Words - Applix Words document + Applix Words document dokumento de Applix Words documento de Applix Words Applix Words dokumentua Applix Words -asiakirja Applix Words skjal document Applix Words + document Applix Words cáipéis Applix Words documento de Applix Words מסמך של Applix Words @@ -7378,7 +7565,7 @@ document Applix Words Dokument Applix Words documento Applix Words - Documento do Applix Words + Documento do Applix Words Document Applix Words Документ Applix Words Dokument Applix Words @@ -7389,33 +7576,35 @@ Applix Words belgesi документ Applix Words Tài liệu Applix Words - Applix Words 文档 - Applix Words 文件 + Applix Words 文档 + Applix Words 文件 - - + + ARC archive + ARC-argief أرشيف ARC - Archiŭ ARC + Archiŭ ARC Архив — ARC arxiu ARC archiv ARC ARC-arkiv ARC-Archiv Συμπιεσμένο αρχείο ARC - ARC archive + ARC archive ARC-arkivo archivador ARC ARC artxiboa ARC-arkisto ARC skjalasavn archive ARC + archivi ARC cartlann ARC arquivo ARC ארכיון ARC @@ -7436,7 +7625,7 @@ archiu ARC Archiwum ARC arquivo ARC - Pacote ARC + Pacote ARC Arhivă ARC Архив ARC Archív ARC @@ -7447,35 +7636,37 @@ ARC arşivi архів ARC Kho nén ARC - ARC 归档文件 - ARC 封存檔 + ARC 归档文件 + ARC 封存檔 - - - - - - + + + + + + AR archive + AR-argief أرشيف AR - Archiŭ AR + Archiŭ AR Архив — AR arxiu AR archiv AR AR-arkiv AR-Archiv Συμπιεσμένο αρχείο AR - AR archive + AR archive AR-arkivo archivador AR AR artxiboa AR-arkisto AR skjalasavn archive AR + archivi AR cartlann AR arquivo AR ארכיון AR @@ -7497,7 +7688,7 @@ archiu AR Archiwum AR arquivo AR - Pacote AR + Pacote AR Arhivă AR Архив AR Archív AR @@ -7508,21 +7699,22 @@ AR arşivi архів AR Kho nén AR - AR 归档文件 - AR 封存檔 + AR 归档文件 + AR 封存檔 - - + + ARJ archive + ARJ-argief أرشيف ARJ ARJ arxivi - Archiŭ ARJ + Archiŭ ARJ Архив — ARJ arxiu ARJ archiv ARJ @@ -7530,13 +7722,14 @@ ARJ-arkiv ARJ-Archiv Συμπιεσμένο αρχείο ARJ - ARJ archive + ARJ archive ARJ-arkivo archivador ARJ ARJ artxiboa ARJ-arkisto ARJ skjalasavn archive ARJ + archivi ARJ cartlann ARJ arquivo ARJ ארכיון ARJ @@ -7558,7 +7751,7 @@ archiu ARJ Archiwum ARJ arquivo ARJ - Pacote ARJ + Pacote ARJ Arhivă ARJ Архив ARJ Archív ARJ @@ -7569,34 +7762,36 @@ ARJ arşivi архів ARJ Kho nén ARJ - ARJ 归档文件 - ARJ 封存檔 + ARJ 归档文件 + ARJ 封存檔 ARJ Archived by Robert Jung - + ASP page + ASP-bladsy صفحة ASP Páxina ASP - Staronka ASP + Staronka ASP Страница — ASP pàgina ASP stránka ASP ASP-side ASP-Seite Σελίδα ASP - ASP page + ASP page ASP-paĝo página ASP ASP orria ASP-sivu ASP síða page ASP + pagjine ASP leathanach ASP páxina ASP עמוד ASP @@ -7617,7 +7812,7 @@ pagina ASP Strona ASP página ASP - Página ASP + Página ASP Pagină ASP Страница ASP Stránka ASP @@ -7628,8 +7823,8 @@ ASP sayfası сторінка ASP Trang ASP - ASP 页面 - ASP 頁面 + ASP 页面 + ASP 頁面 ASP Active Server Page @@ -7638,10 +7833,11 @@ AWK script + AWK-skrip سكربت AWK Script AWK AWK skripti - Skrypt AWK + Skrypt AWK Скрипт — AWK script AWK skript AWK @@ -7649,13 +7845,14 @@ AWK-program AWK-Skript Δέσμη ενεργειών AWK - AWK script + AWK script AWK-skripto secuencia de órdenes en AWK AWK script-a AWK-komentotiedosto AWK boðrøð script AWK + script AWK script AWK script de AWK תסריט AWK @@ -7677,7 +7874,7 @@ escript AWK Skrypt AWK script AWK - Script AWK + Script AWK Script AWK Сценарий AWK Skript AWK @@ -7688,31 +7885,32 @@ AWK betiği скрипт AWK Văn lệnh AWK - AWK 脚本 - AWK 指令稿 + AWK 脚本 + AWK 指令稿 - - - - - - - - - - + + + + + + + + + + BCPIO document + BCPIO-dokument مستند BCPIO Documentu BCPIO BCPIO sənədi - Dakument BCPIO + Dakument BCPIO Документ — BCPIO document BCPIO dokument BCPIO @@ -7720,13 +7918,14 @@ BCPIO-dokument BCPIO-Dokument Έγγραφο BCPIO - BCPIO document + BCPIO document BCPIO-dokumento documento BCPIO BCPIO dokumentua BCPIO-asiakirja BCPIO skjal document BCPIO + document BCPIO cáipéis BCPIO documento BCPIO מסמך של BCPO @@ -7748,7 +7947,7 @@ document BCPIO Dokument BCPIO documento BCPIO - Documento BCPIO + Documento BCPIO Document BCPIO Документ BCPIO Dokument BCPIO @@ -7759,8 +7958,8 @@ BCPIO belgesi документ BCPIO Tài liệu BCPIO - BCPIO 文档 - BCPIO 文件 + BCPIO 文档 + BCPIO 文件 BCPIO Binary CPIO @@ -7768,9 +7967,10 @@ BitTorrent seed file + BitTorrent-saadlêer ملف باذر البت تورنت BitTorrent seed faylı - Fajł krynicy BitTorrent + Fajł krynicy BitTorrent Файл-източник — BitTorrent fitxer de llavor BitTorrent soubor BitTorrent @@ -7778,13 +7978,14 @@ BitTorrent-frøfil BitTorrent-Seed-Datei Αρχείο BitTorrent seed - BitTorrent seed file + BitTorrent seed file BitTorrent-semdosiero archivo semilla de BitTorrent BitTorrent hazi-fitxategia BitTorrent-siementiedosto BitTorrent seed fíla fichier graine BitTorrent + file semence di BitTorrent comhad síl BitTorrent ficheiro de orixe BitTorrent קובץ זריעה של BitTorrent @@ -7805,7 +8006,7 @@ fichièr grana BitTorrent Plik ziarna BitTorrent ficheiro de semente BitTorrent - Arquivo semente BitTorrent + Arquivo semente BitTorrent Fișier sursă-completă BitTorrent Файл источника BitTorrent Súbor BitTorrent @@ -7816,31 +8017,33 @@ BitTorrent tohum dosyası файл поширення BitTorrent Tải tập hạt BitTorrent - BitTorrent 种子文件 - BitTorrent 種子檔 + BitTorrent 种子文件 + BitTorrent 種子檔 - + Blender scene + Blender-toneel مشهد بلندر Escena de Blender - Scena Blender + Scena Blender Сцена — Blender escena de Blender scéna Blender Blenderscene Blender-Szene Σκηνή Blender - Blender scene + Blender scene Blender-sceno escena de Blender Blender-eko fitxategia Blender-näkymä Blender leikmynd scène Blender + sene Blender radharc Blender escena de Blender סצנת Blender @@ -7862,7 +8065,7 @@ scèna Blender Scena programu Blender cenário Blender - Cena do Blender + Cena do Blender Scenă Blender Сцена Blender Scéna Blender @@ -7873,38 +8076,40 @@ Blender sahnesi сцена Blender Cảnh Blender - Blender 场景 - Blender 場景 + Blender 场景 + Blender 場景 - + TeX DVI document (bzip-compressed) + TeX DVI-dokument (bzip-saamgepers) مستند TeX DVI (مضغوط-bzip) Documentu Tex DVI (comprimíu en bzip) - Dakument TeX DVI (bzip-skampresavany) + Dakument TeX DVI (bzip-skampresavany) Документ — TeX DVI, компресиран с bzip document de TeX DVI (amb compressió bzip) dokument TeX DVI (komprimovaný pomocí bzip) TeX DVI-dokument (bzip-komprimeret) TeX-DVI-Dokument (bzip-komprimiert) Αρχείο TeX DVI (συμπιεσμένο με bzip) - TeX DVI document (bzip-compressed) + TeX DVI document (bzip-compressed) documento DVI de TeX (comprimido con bzip) TeX DVI dokumentua (bzip-ekin konprimitua) TeX DVI -asiakirja (bzip-pakattu) TeX DVI skjal (bzip-stappað) document DVI TeX (compressé bzip) + document DVI TeX (comprimût cun bzip) cáipéis DVI TeX (comhbhrúite le bzip) documento DVI de TeX (comprimido con bzip) מסמך מסוג TeX DVI (מכווץ ע״י bzip) TeX DVI dokument (bzip sažeto) - TeX DVI dokumentum (bzip-pel tömörítve) + TeX DVI dokumentum (bzip tömörítésű) Documento TeX DVI (comprimite con bzip) Dokumen TeX DVI (terkompresi bzip) Documento TeX DVI (compresso con bzip) @@ -7919,7 +8124,7 @@ document DVI TeX (compressat bzip) Dokument TeX DVI (kompresja bzip) documento TeX DVI (compressão bzip) - Documento DVI TeX (compactado com bzip) + Documento DVI TeX (compactado com bzip) Document TeX DVI (comprimat bzip) Документ TeX DVI (сжатый bzip) Dokument TeX DVI (komprimovaný pomocou bzip) @@ -7930,30 +8135,32 @@ TeX DVI belgesi (bzip ile sıkıştırılmış) документ TeX DVI (стиснений bzip) Tài liệu DVI TeX (đã nén bzip) - TeX DVI 文档(gzip 压缩) - TeX DVI 文件 (bzip 格式壓縮) + TeX DVI 文档(gzip 压缩) + TeX DVI 文件 (bzip 壓縮) Bzip archive + Bzip-argief أرشيف Bzip Archivu Bzip - Archiŭ bzip + Archiŭ bzip Архив — bzip arxiu bzip archiv bzip Bzip-arkiv Bzip-Archiv Συμπιεσμένο αρχείο Bzip - Bzip archive + Bzip archive Bzip-arkivo archivador Bzip Bzip artxiboa Bzip-arkisto Bzip skjalasavn archive bzip + archivi Bzip cartlann Bzip arquivo Bzip ארכיון Bzip @@ -7974,10 +8181,10 @@ archiu bzip Archiwum bzip arquivo Bzip - Pacote Bzip + Pacote Bzip Arhivă Bzip Архив BZIP - Archív bzip + Archív Bzip Datoteka arhiva Bzip Arkiv bzip Бзип архива @@ -7985,38 +8192,41 @@ Bzip arşivi архів bzip Kho nén bzip - Bzip 归档文件 - Bzip 封存檔 + Bzip 归档文件 + Bzip 封存檔 - + + Tar archive (bzip-compressed) + Tar-argief (bzip-saamgepers) أرشيف Tar (مضغوط-bzip) Archivu Tar (comprimíu en bzip) - Archiŭ tar (bzip-skampresavany) + Archiŭ tar (bzip-skampresavany) Архив — tar, компресиран с bzip arxiu tar (amb compressió bzip) archiv Tar (komprimovaný pomocí bzip) Tar-arkiv (bzip-komprimeret) Tar-Archiv (bzip-komprimiert) Αρχείο Tar (συμπιεσμένο με bzip) - Tar archive (bzip-compressed) + Tar archive (bzip-compressed) archivador Tar (comprimido con bzip) Tar artxiboa (bzip-ekin konprimitua) Tar-arkisto (bzip-pakattu) Tar skjalasavn (bzip-stappað) archive tar (compressée bzip) + archivi Tar (comprimût cun bzip) cartlann Tar (comhbhrúite le bzip) arquivo Tar (comprimido con bzip) ארכיון Tar (מכווץ ע״י bzip) Tar arhiva (bzip sažeto) - Tar archívum (bzip-pel tömörítve) + Tar archívum (bzip tömörítésű) Archivo Tar (comprimite con bzip) Arsip Tar (terkompresi bzip) Archivio tar (compresso con bzip) @@ -8031,10 +8241,10 @@ archiu tar (compressat bzip) Archiwum tar (kompresja bzip) arquivo Tar (compressão bzip) - Pacote Tar (compactado com bzip) + Pacote Tar (compactado com bzip) Arhivă Tar (comprimată bzip) Архив TAR (сжатый bzip) - Archív tar (komprimovaný pomocou bzip) + Archív Tar (komprimovaný pomocou bzip) Datoteka arhiva Tar (stisnjen z bzip) Arkiv tar (i kompresuar me bzip) Тар архива (запакована бзипом) @@ -8042,8 +8252,8 @@ Tar arşivi (bzip ile sıkıştırılmış) архів tar (стиснений bzip) Kho nén tar (đã nén bzip) - Tar 归档文件(bzip 压缩) - Tar 封存檔 (bzip 格式壓縮) + Tar 归档文件(bzip 压缩) + Tar 封存檔 (bzip 壓縮) @@ -8054,26 +8264,28 @@ PDF document (bzip-compressed) + PDF-dokument (bzip-saamgepers) مستند PDF (مضغوط-bzip) Documentu PDF (comprimíu en bzip) - Dakument PDF (bzip-skampresavany) + Dakument PDF (bzip-skampresavany) Документ — PDF, компресиран с bzip document PDF (amb compressió bzip) dokument PDF (komprimovaný pomocí bzip) PDF-dokument (bzip-komprimeret) PDF-Dokument (bzip-komprimiert) Έγγραφο PDF (συμπιεσμένο με bzip) - PDF document (bzip-compressed) + PDF document (bzip-compressed) documento PDF (comprimido con bzip) PostScript dokumentua (bzip-ekin konprimitua) PDF-asiakirja (bzip-pakattu) PDF skjal (bzip-stappað) document PDF (compressé bzip) + document PDF (comprimût cun bzip) cáipéis PDF (comhbhrúite le bzip) documento PDF (comprimido en bzip) מסמך PDF (מכווץ ע״י bzip) PDF dokument (bzip sažet) - PDF dokumentum (bzip-tömörítésű) + PDF dokumentum (bzip tömörítésű) Documento PDF (comprimite con bzip) Dokumen PDF (terkompresi bzip) Documento PDF (compresso con bzip) @@ -8088,7 +8300,7 @@ document PDF (compressat bzip) Dokument PDF (kompresja bzip) documento PDF (compressão bzip) - Documento PDF (compactado com bzip) + Documento PDF (compactado com bzip) Document PDF (comprimat bzip) Документ PDF (сжатый bzip) Dokument PDF (komprimovaný pomocou bzip) @@ -8099,34 +8311,36 @@ PDF belgesi (bzip ile sıkıştırılmış) документ PDF (стиснений bzip) Tài liệu PDF (đã nén bzip) - PDF 文档(bzip 压缩) - PDF 文件 (bzip 格式壓縮) + PDF 文档(bzip 压缩) + PDF 文件 (bzip 壓縮) PostScript document (bzip-compressed) + PostScript-dokument (bzip-saamgepers) مستند PostScript (مضغوط-bzip) Documentu PostScript (comprimíu en bzip) - Dakument PostScript (bzip-skampresavany) + Dakument PostScript (bzip-skampresavany) Документ — PostScript, компресиран с bzip document PostScript (amb compressió bzip) dokument PostScript (komprimovaný pomocí bzip) PostScript-dokument (bzip-komprimeret) PostScript-Dokument (bzip-komprimiert) Έγγραφο PostScript (συμπιεσμένο με bzip) - PostScript document (bzip-compressed) + PostScript document (bzip-compressed) documento PostScript (comprimido con bzip) PostScript dokumentua (bzip-ekin konprimitua) PostScript-asiakirja (bzip-pakattu) PostScript skjal (bzip-stappað) document PostScript (compressé bzip) + document PostScript (comprimût cun bzip) cáipéis PostScript (comhbhrúite le bzip) documento PostScript (comprimido con bzip) מסמך PostDcript (מכווץ ע״י bzip) PostScript dokument (bzip sažet) - PostScript dokumentum (bzip-tömörítésű) + PostScript dokumentum (bzip tömörítésű) Documento PostScript (comprimite con bzip) Dokumen PostScript (terkompresi bzip) Documento PostScript (compresso con bzip) @@ -8139,9 +8353,9 @@ PostScript-document (ingepakt met bzip) PostScript-dokument (pakka med bzip) document PostEscript (compressat bzip) - Dokument Postscript (kompresja bzip) + Dokument PostScript (kompresja bzip) documento PostScript (compressão bzip) - Documento PostScript (compactado com bzip) + Documento PostScript (compactado com bzip) Document PostScript (comprimat bzip) Документ PostScript (сжатый bzip) Dokument PostScript (komprimovaný pomocou bzip) @@ -8152,28 +8366,30 @@ PostScript belgesi (bzip ile sıkıştırılmış) документ PostScript (стиснене bzip) Tài liệu PostScript (đã nén bzip) - PostScript 文档(bzip 压缩) - PostScript 文件 (bzip 格式壓縮) + PostScript 文档(bzip 压缩) + PostScript 文件 (bzip 壓縮) comic book archive + strokiesprent-argief أرشيف comic book - archiŭ komiksaŭ + archiŭ komiksaŭ Архив — комикси arxiu comic book archiv knihy komiksů comic book-arkiv Comic-Book-Archiv Συμπιεσμένο αρχείο κόμικ - comic book archive + comic book archive archivador de libro de cómic komiki artxiboa sarjakuva-arkisto teknisøgubóka skjalasavn archive Comic Book + archivi di fumets cartlann chartúin ficheiro de libro de banda deseñada ארכיון ספר קומי @@ -8193,7 +8409,7 @@ archiu Comic Book Archiwum komiksu arquivo de banda desenhada - Pacote de histórias em quadrinhos + Pacote de histórias em quadrinhos arhivă benzi desenate Архив комиксов Archív knihy komiksov @@ -8204,8 +8420,8 @@ çizgi roman arşivi архів коміксів Kho nén sách tranh chuyện vui - 漫画书归档文件 - 漫畫書封存檔 + 漫画书归档文件 + 漫畫書封存檔 @@ -8213,20 +8429,22 @@ comic book archive + strokiesprent-argief أرشيف comic book - archiŭ komiksaŭ + archiŭ komiksaŭ Архив — комикси arxiu comic book archiv knihy komiksů comic book-arkiv Comic-Book-Archiv Συμπιεσμένο αρχείο κόμικ - comic book archive + comic book archive archivador de libro de cómic komiki artxiboa sarjakuva-arkisto teknisøgubóka skjalasavn archive Comic Book + archivi di fumets cartlann chartúin ficheiro de libro de banda deseñada ארכיון ספר קומי @@ -8246,7 +8464,7 @@ archiu Comic Book Archiwum komiksu arquivo de banda desenhada - Pacote de histórias em quadrinhos + Pacote de histórias em quadrinhos arhivă benzi desenate Архив комиксов Archív knihy komiksov @@ -8257,28 +8475,30 @@ çizgi roman arşivi архів коміксів Kho nén sách tranh chuyện vui - 漫画书归档文件 - 漫畫書封存檔 + 漫画书归档文件 + 漫畫書封存檔 comic book archive + strokiesprent-argief أرشيف comic book - archiŭ komiksaŭ + archiŭ komiksaŭ Архив — комикси arxiu comic book archiv knihy komiksů comic book-arkiv Comic-Book-Archiv Συμπιεσμένο αρχείο κόμικ - comic book archive + comic book archive archivador de libro de cómic komiki artxiboa sarjakuva-arkisto teknisøgubóka skjalasavn archive Comic Book + archivi di fumets cartlann chartúin ficheiro de libro de banda deseñada ארכיון ספר קומי @@ -8298,7 +8518,7 @@ archiu Comic Book Archiwum komiksu arquivo de banda desenhada - Pacote de histórias em quadrinhos + Pacote de histórias em quadrinhos arhivă benzi desenate Архив комиксов Archív knihy komiksov @@ -8309,28 +8529,30 @@ çizgi roman arşivi архів коміксів Kho nén sách tranh chuyện vui - 漫画书归档文件 - 漫畫書封存檔 + 漫画书归档文件 + 漫畫書封存檔 comic book archive + strokiesprent-argief أرشيف comic book - archiŭ komiksaŭ + archiŭ komiksaŭ Архив — комикси arxiu comic book archiv knihy komiksů comic book-arkiv Comic-Book-Archiv Συμπιεσμένο αρχείο κόμικ - comic book archive + comic book archive archivador de libro de cómic komiki artxiboa sarjakuva-arkisto teknisøgubóka skjalasavn archive Comic Book + archivi di fumets cartlann chartúin ficheiro de libro de banda deseñada ארכיון ספר קומי @@ -8350,7 +8572,7 @@ archiu Comic Book Archiwum komiksu arquivo de banda desenhada - Pacote de histórias em quadrinhos + Pacote de histórias em quadrinhos arhivă benzi desenate Архив комиксов Archív knihy komiksov @@ -8361,8 +8583,8 @@ çizgi roman arşivi архів коміксів Kho nén sách tranh chuyện vui - 漫画书归档文件 - 漫畫書封存檔 + 漫画书归档文件 + 漫畫書封存檔 @@ -8370,6 +8592,7 @@ Lrzip archive + Lrzip-argief أرشيف Lrzip Архив — lrzip arxiu lrzip @@ -8377,13 +8600,14 @@ Lrzip-arkiv Lrzip-Archiv Συμπιεσμένο αρχείο Lrzip - Lrzip archive + Lrzip archive Lrzip-arkivo archivador Lrzip Lrzip artxiboa Lrzip-arkisto Lrzip skjalasavn archive lrzip + archivi Lrzip cartlann Lrzip arquivo Lrzip ארכיון Lrzip @@ -8401,7 +8625,7 @@ archiu lrzip Archiwum lrzip arquivo Lrzip - Pacote Lrzip + Pacote Lrzip Arhivă Lrzip Архив LRZIP Archív Lrzip @@ -8410,16 +8634,17 @@ Lrzip-arkiv Lrzip arşivi архів lrzip - Lrzip 归档文件 - Lrzip 封存檔 + Lrzip 归档文件 + Lrzip 封存檔 - + Tar archive (lrzip-compressed) + Tar-argief (lrzip-saamgepers) أرشيف Tar (مضغوط-lrzip) Архив — tar, компресиран с lrzip arxiu tar (amb compressió lrzip) @@ -8427,17 +8652,18 @@ Tar-arkiv (lrzip-komprimeret) Tar-Archiv (lrzip-komprimiert) Αρχείο Tar (συμπιεσμένο με lrzip) - Tar archive (lrzip-compressed) + Tar archive (lrzip-compressed) archivador Tar (comprimido con lrzip) Tar artxiboa (lrzip-ekin konprimitua) Tar-arkisto (lrzip-pakattu) Tar skjalasavn (lrzip-stappað) archive tar (compressée lrzip) + archivi Tar (comprimût cun lrzip) cartlann Tar (comhbhrúite le lrzip) arquivo Tar (comprimido con lrzip) ארכיון Tar (מכווץ ע״י lrzip) Tar arhiva (lrzip sažeta) - Tar archívum (lrzip-pel tömörítve) + Tar archívum (lrzip tömörítésű) Archivo Tar (comprimite con lrzip) Arsip Tar (terkompresi lrzip) Archivio tar (compresso con lrzip) @@ -8450,17 +8676,17 @@ archiu tar (compressat lrzip) Archiwum tar (kompresja lrzip) arquivo Tar (compressão Lrzip) - Pacote Tar (compactado com lrzip) + Pacote Tar (compactado com lrzip) Arhivă Tar (comprimată lrzip) Архив TAR (сжатый lrzip) - Archív tar (komprimovaný pomocou lrzip) + Archív Tar (komprimovaný pomocou lrzip) Datoteka arhiva Tar (stisnjen z lrzip) Тар архива (запакована лрзипом) Tar-arkiv (lrzip-komprimerat) Tar arşivi (lrzip ile sıkıştırılmış) архів tar (стиснений lrzip) - Tar 归档文件(lrzip 压缩) - Tar 封存檔 (lrzip 格式壓縮) + Tar 归档文件(lrzip 压缩) + Tar 封存檔 (lrzip 格式壓縮) @@ -8468,6 +8694,7 @@ Apple disk image + Apple-skyfbeeldlêer Imaxe de discu d'Apple Диск — Apple imatge de disc d'Apple @@ -8475,11 +8702,12 @@ Apple-diskaftryk Apple-Datenträgerabbild Εικόνα δίσκου Apple - Apple disk image + Apple disk image imagen de disco de Apple Apple disko irudia Apple-levytiedosto image disque Apple + imagjin disc Apple íomhá diosca Apple imaxe de disco de Appl תמונת כונן Apple @@ -8497,7 +8725,7 @@ imatge disc Apple Obraz dysku Apple imagem de disco Apple - Imagem de disco Apple + Imagem de disco Apple Образ диска Apple Mac OS X Obraz disku Apple Odtis diska Apple @@ -8505,23 +8733,26 @@ Apple-diskavbild Apple disk görüntüsü образ диска Apple - Apple 磁盘映像 - Apple 磁碟映像檔 + Apple 磁盘映像 + Apple 磁碟映像檔 Raw disk image + Rou skyfbeeldlêer Imaxe de discu en bruto + Диск — raw imatge de disc RAW surový obraz disku - Rå diskaftryk + Raw-diskaftryk Rohes Datenträgerabbild Ανεπεξέργαστη εικόνα δίσκου - Raw disk image + Raw disk image imagen de disco en bruto Disko gordinaren irudia Raaka levytiedosto image disque Raw + imagjin disc grese Amhíomha diosca Imaxe de disco en bruto דמות גולמית של כונן @@ -8535,21 +8766,50 @@ imatge disc Raw Surowy obraz dysku imagem de disco Raw - Imagem bruta de disco + Imagem bruta de disco Необработанный образ диска Obraz disku Surovi odtis diska сиров одраз диска Rå diskavbild - İşlem görmemiş disk imajı + Ham disk görüntüsü простий образ диска - 原始磁盘映像 - 原生磁碟映像檔 + 原始磁盘映像 + 原始磁碟映像檔 Floppy disk image + Disket-skyfbeeldlêer + Диск — флопи + imatge de disquet + obraz diskety + Floppy-diskaftryk + Diskettenabbild + Floppy disk image + imagen de disquete + Diskete disko irudia + Disketin levykuva + image disquette + imagjin disc floppy + íomhá diosca fhlapaigh + Slika diskete + Flopi lemezkép + Image disk floppy + Immagine disco floppy + Иілгіш диск бейнесі + 플로피 디스크 이미지 + Obraz dyskietki + imagem da disquete + Imagem de disco flexível + Образ гибкого диска + Obraz pružného disku + Diskettavbild + Disket görüntüsü + образ дискети + 软盘映像 + Floppy 軟碟映像檔 @@ -8557,22 +8817,25 @@ Raw disk image (XZ-compressed) + Rou skyfbeeldlêer (XZ-saamgepers) Imaxe de discu en bruto (comprimida en XZ) + Диск — raw, компресиран с xz imatge de disc RAW (amb compressió XZ) surový obraz disku (komprimovaný pomocí XZ) - Rå diskaftryk (XZ-komprimeret) + Raw-diskaftryk (XZ-komprimeret) Rohes Datenträgerabbild (XZ-komprimiert) Ανεπεξέργαστη εικόνα δίσκου (συμπιεσμένη XZ) - Raw disk image (XZ-compressed) + Raw disk image (XZ-compressed) imagen de disco en bruto (comprimida con XZ) Disko gordinaren irudia (XZ-rekin konprimitua) Raaka levytiedosto (XZ-pakattu) image disque Raw (compression XZ) + imagjin disc grese (comprimude cun XZ) Amhíomhá (comhbhrúite le XZ) Imaxe de disco en bruto (comprimida en XZ) דמות גולמית של כונן (בדחיסת XZ) Osnovna slika diska (XZ sažeta) - Nyers lemezkép (XZ-vel tömörítve) + Nyers lemezkép (XZ tömörítésű) Imagine de disco crude (comprimite con XZ) Image disk mentah (terkompresi XZ) Immagine disco raw (compressa XZ) @@ -8581,38 +8844,40 @@ imatge disc Raw (compression XZ) Surowy obraz dysku (kompresja XZ) imagem de disco Raw (compressão XZ) - Imagem bruta de disco (compactada com XZ) + Imagem bruta de disco (compactada com XZ) Необработанный образ диска (сжатый xz) Obraz disku (komprimovaný pomocou XZ) Surovi odtis diska (stisnjeno z XZ) сиров одраз диска (запакована ИксЗ-ом) Rå diskavbild (XZ-komprimerad) - İşlem görmemiş disk imajı (XZ ile sıkıştırılmış) + Ham disk görüntüsü (XZ ile sıkıştırılmış) простий образ диска (стиснений XZ) - 原始磁盘映像(XZ 压缩) - 原生磁碟映像 (XZ 格式壓縮) + 原始磁盘映像(XZ 压缩) + 原始磁碟映像檔 (XZ 壓縮) raw CD image + rou CD-beeldlêer صورة CD خامة imaxe de CD en bruto - suvoraja vyjava CD - Изображение — raw CD + suvoraja vyjava CD + Диск — raw CD imatge de CD en cru surový obraz CD - rå cd-aftryk + raw cd-aftryk CD-Roh-Abbild Εικόνα περιεχομένου ψηφιακού δίσκου - raw CD image + raw CD image kruda lumdiskbildo imagen de CD en bruto CD gordinaren irudia raaka CD-vedos rá CD mynd image CD brute + imagjin CD grese amhíomhá dhlúthdhiosca imaxe de CD en bruto תמונת דיסק גולמית @@ -8633,7 +8898,7 @@ imatge CD brut Surowy obraz CD imagem em bruto de CD - Imagem bruta de CD + Imagem bruta de CD imagine de CD brută Необработанный образ компакт-диска Surový obraz CD @@ -8641,48 +8906,64 @@ Imazh raw CD сиров одраз ЦД-а rå cd-avbild - Ham CD görüntüsü + ham CD görüntüsü образ raw CD ảnh đĩa CD thô - 原始 CD 映像 - 原生 CD 映像檔 + 原始 CD 映像 + 原生 CD 映像檔 - - + + + + Compressed CD image + imatge de CD amb compressió + Pakattu CD-levykuva + Immagine CD compressa + Skompresowany obraz płyty CD + стиснений образ CD + + + + + AppImage application bundle + AppImage-toepassingsbundel + Програмен пакет — AppImage paquet d'aplicació AppImage balíček AppImage s aplikací - Applmage-programsamling + AppImage-programsamling AppImage-Anwendungspaket - AppImage application bundle + AppImage application bundle paquete de aplicación AppImage AppImage aplikazio bilduma AppImage-sovelluspaketti lot applicatif AppImage + côl di aplicazions AppImage burla feidhmchláir AppImage חבילת יישומי AppImage AppImage paket aplikacije AppImage alkalmazáscsomag - bundel aplikasi AppImage + Bundel aplikasi AppImage Bundle applicazione AppImage AppImage қолданбалар дестесі AppImage 프로그램 번들 Pakiet programu AppImage - Pacote de aplicativo AppImage + pacote de aplicação AppImage + Pacote de aplicativo AppImage Пакет приложения AppImage Balík aplikácií AppImage скуп програма Ап-слике AppImage-programbunt AppImage uygulama paketi пакунок із програмами AppImage - AppImage 应用组合包 - AppImage 應用程式套組 + AppImage 应用组合包 + AppImage 應用程式套組 - + @@ -8697,20 +8978,22 @@ CD Table Of Contents + CD-inhoudsopgawe جدول محتويات الـ CD - Źmieściva CD + Źmieściva CD Съдържание на CD taula de continguts de CD obsah CD - Cd-indholdsfotegnelse + Cd-indholdsfortegnelse CD-Inhaltsverzeichnis Πίνακας περιεχομένων CD - CD Table Of Contents + CD Table Of Contents índice de contenido de CD CDaren edukien aurkibidea CD-sisällysluettelo CD innihaldsyvurlit table des matières de CD + tabele dai contignûts di CD clár ábhar dlúthdhiosca táboa de contidos de CD תוכן עניינים של דיסק @@ -8730,7 +9013,7 @@ ensenhador de CD Plik zawartości płyty CD Tabela de conteúdos de CD - Sumário de CD + Sumário de CD Tabel conținut CD Таблица содержания CD Obsah CD @@ -8741,37 +9024,64 @@ CD İçindekiler Tablosu зміст CD Mục Lục của đĩa CD - CD 索引 - CD 內容目錄 + CD 索引 + CD 內容目錄 - - - - - - + + + + + + + + GD-ROM image cuesheet + «cuesheet» d'imatge de GD-ROM + GD-ROM levykuvan taulukko + Cuesheet immagine GD-ROM + Obraz cuesheet płyty GD-ROM + таблиця CUE образу GD-ROM + + + + + + + Padus DiscJuggler CD image + imatge de CD de Padus DiscJuggler + Padus DiscJuggler CD-levykuva + Immagine CD DiscJuggler Padus + Obraz płyty CD programu Padus DiscJuggler + Imagem de CD do Padus DiscJuggler + образ CD Padus DiscJuggler + + PGN chess game notation + PGN-skaakspelnotasie تدوينة لعبة الشطرنج PGN - Zaciem ab šachmatnaj partyi PGN + Zaciem ab šachmatnaj partyi PGN Игра шах — PGN notació de joc d'escacs PGN šachová notace PGN PGN-skakspilsnotation PGN-Schachspielnotation Σημειογραφία παιχνιδιού σκακιού PGN - PGN chess game notation + PGN chess game notation notación para juegos de ajedrez PGN PGN xake jokoaren notazioa PGN-šakkipelinotaatio PGN talv teknskipan notation de jeu d'échecs PGN + notazion par zûc di scacs PGN nodaireacht chluiche ficheall PGN Notación de xogo de xadrez PGN סימון משחק שח PGN @@ -8791,7 +9101,7 @@ notacion de jòc d'escacs PGN Plik PGN notacji gry w szachy notação de jogo de xadrez PGN - Notação de jogo de xadrez PGN + Notação de jogo de xadrez PGN Notație joc șah PGN Шахматная партия PGN Šachová notácia PGN @@ -8802,36 +9112,38 @@ PGN satranç oyun gösterimi запис гри у шахи PGN Cách ghi lượt chơi cờ PGN - PGN 象棋游戏注记 - PGN 國際象棋棋譜 + PGN 象棋游戏注记 + PGN 國際象棋棋譜 PGN Portable Game Notation - + CHM document + CHM-dokument مستند CHM Documentu CHM - Dakument CHM + Dakument CHM Документ — CHM document CHM dokument CHM CHM-dokument CHM-Dokument Έγγραφο CHM - CHM document + CHM document CHM-dokumento documento CHM CHM dokumentua CHM-asiakirja CHM skjal document CHM + document CHM cáipéis CHM documento CHM מסמך CHM @@ -8852,7 +9164,7 @@ document CHM Dokument CHM documento CHM - Documento CHM + Documento CHM Document CHM Документ CHM Dokument CHM @@ -8863,8 +9175,8 @@ CHM belgesi документ CHM Tài liệu CHM - CHM 文档 - CHM 文件 + CHM 文档 + CHM 文件 CHM Compiled Help Modules @@ -8873,23 +9185,25 @@ Java byte code + Java binêre kode رمز بايت الـJava Java bayt kodu - Bajtavy kod Java + Bajtavy kod Java Байт код за Java - Bytecode de Java + bytecode de Java bajtový kód Java Côd beit Java - Javabytekode + Java-bytekode Java-Bytecode Συμβολοκώδικας Java - Java byte code + Java byte code Java-bajtkodo bytecode de Java Java byte-kodea Java-tavukoodi Java býtkota code Java binaire + bytecode di Java beartchód Java byte code de Java קוד Java byte @@ -8910,7 +9224,7 @@ còde Java binari Kod bajtowy Java byte-code Java - Código compilado Java + Código compilado Java Bytecode Java Байт-код Java Bajtový kód Java @@ -8921,31 +9235,33 @@ Java derlenmiş kodu Байт-код Java Mã byte Java - Java 字节码 - Java 位元組碼 + Java 字节码 + Java 位元組碼 UNIX-compressed file + UNIX-saamgepersde lêer ملف يونكس-مضغوط - Skampresavany UNIX-fajł + Skampresavany UNIX-fajł Файл — компресиран за UNIX fitxer amb compressió UNIX soubor komprimovaný v Unixu UNIX-komprimeret fil UNIX-komprimierte Datei Συμπιεσμένο αρχείο UNIX - UNIX-compressed file + UNIX-compressed file UNIX-kunpremita dosiero archivo comprimido de Unix UNIX-en konprimitutako fitxategia UNIX-pakattu tiedosto UNIX-stappað fíla fichier compressé UNIX + file comprimût di UNIX comhad UNIX-comhbhrúite ficheiro comprimido de UNIX קובץ בכיווץ UNIX UNIX sažeta datoteka - Tömörített UNIX-fájl + UNIX tömörítésű fájl File comprimite de UNIX Berkas terkompresi UNIX File compresso-UNIX @@ -8961,7 +9277,7 @@ fichièr compressat UNIX Skompresowany plik systemu UNIX ficheiro comprimido UNIX - Arquivo compactado do UNIX + Arquivo compactado do UNIX Fișier comprimat UNIX Файл (UNIX-сжатый) Súbor komprimovaný v Unixe @@ -8972,35 +9288,37 @@ UNIX-sıkıştırılmış dosyası стиснений файл UNIX Tập tin đã nén UNIX - UNIX 压缩文件 - UNIX 格式壓縮檔 + UNIX 压缩文件 + UNIX 壓縮檔 - + Tar archive (gzip-compressed) + Tar-argief (gzip-saamgepers) أرشيف Tar (مضغوط-gzip) - Archiŭ tar (gzip-skampresavany) + Archiŭ tar (gzip-skampresavany) Архив — tar, компресиран с gzip arxiu tar (amb compressió gzip) archiv tar (komprimovaný pomocí gzip) Tar-arkiv (gzip-komprimeret) Tar-Archiv (gzip-komprimiert) Αρχείο Tar (συμπιεσμένο με gzip) - Tar archive (gzip-compressed) + Tar archive (gzip-compressed) archivador Tar (comprimido con gzip) Tar artxiboa (gzip-ekin konprimitua) Tar-arkisto (gzip-pakattu) Tar skjalasavn (gzip-stappað) archive tar (compressée gzip) + archivi Tar (comprimût cun gzip) cartlann Tar (comhbhrúite le gzip) arquivo Tar (comprimido con gzip) ארכיון Tar (מכווץ ע״י gzip) Tar arhiva (gzip sažeta) - Tar archívum (gzip-pel tömörítve) + Tar archívum (gzip tömörítésű) Archivo Tar (comprimite con gzip) Arsip Tar (terkompresi gzip) Archivio tar (compresso con gzip) @@ -9015,10 +9333,10 @@ archiu tar (compressat gzip) Archiwum tar (kompresja gzip) arquivo Tar (compressão gzip) - Pacote Tar (compactado com gzip) + Pacote Tar (compactado com gzip) Arhivă Tar (comprimată gzip) Архив TAR (сжатый gzip) - Archív tar (komprimovaný pomocou gzip) + Archív Tar (komprimovaný pomocou gzip) Datoteka arhiva Tar (stisnjen z gzip) Arkiv tar (i kompresuar me gzip) Тар архива (запакована гзипом) @@ -9026,8 +9344,8 @@ Tar arşivi (gzip ile sıkıştırılmış) архів tar (стиснений gzip) Kho nén tar (đã nén gzip) - Tar 归档文件(gzip 压缩) - Tar 封存檔 (gzip 格式壓縮) + Tar 归档文件(gzip 压缩) + Tar 封存檔 (gzip 壓縮) @@ -9035,21 +9353,23 @@ program crash data + programomvaldata معلومات انهيار البرنامج - źviestki złamanaj prahramy + źviestki złamanaj prahramy Данни от забиване на програма dades de fallada de programa data o pádu programu programnedbrudsdata Daten zu Programmabsturz δεδομένα από την κατάρρευση προγράμματος - program crash data + program crash data datumo pri kraŝo de programo datos de cuelgue de programa programaren kraskaduraren datuak ohjelman kaatumistiedot forrits sordáta données de plantage de programme + dâts di colàs di program sonraí tuairte ríomhchláir datos de colgue do programa מידע מקריסת תכנית @@ -9070,7 +9390,7 @@ donadas de plantage de programa Dane awarii programu dados de rebentamento de aplicação - Dados de travamento de programa + Dados de travamento de programa date eroare program Данные аварийного завершения программы Údaje o páde programu @@ -9081,31 +9401,32 @@ program çökme verisi аварійні дані про програму dữ liệu sụp đổ chương trình - 程序崩溃数据 - 程式當掉資料 + 程序崩溃数据 + 程式當掉資料 - - - - + + + + - - - + + + - - + + CPIO archive + CPIO-argief أرشيف CPIO Archivu CPIO CPIO arxivi - Archiŭ CPIO + Archiŭ CPIO Архив — CPIO arxiu CPIO archiv CPIO @@ -9113,13 +9434,14 @@ CPIO-arkiv CPIO-Archiv Συμπιεσμένο αρχείο CPIO - CPIO archive + CPIO archive CPIO-arkivo archivador CPIO CPIO artxiboa CPIO-arkisto CPIO skjalasavn archive CPIO + archivi CPIO cartlann CPIO arquivo CPIO ארכיון CPIO @@ -9141,7 +9463,7 @@ archiu CPIO Archiwum CPIO arquivo CPIO - Pacote CPIO + Pacote CPIO Arhivă CPIO Архив CPIO Archív CPIO @@ -9152,22 +9474,23 @@ CPIO arşivi архів CPIO Kho nén CPIO - CPIO 归档文件 - CPIO 封存檔 + CPIO 归档文件 + CPIO 封存檔 - - - - + + + + CPIO archive (gzip-compressed) + CPIO-argief (gzip-saamgepers) أرشيف CPIO (مضغوط-gzip) CPIO arxivi (gzip ilə sıxışdırılmış) - Archiŭ CPIO (gzip-skampresavany) + Archiŭ CPIO (gzip-skampresavany) Архив — CPIO, компресиран с gzip arxiu CPIO (amb compressió gzip) archiv CPIO (komprimovaný pomocí gzip) @@ -9175,18 +9498,19 @@ CPIO-arkiv (gzip-komprimeret) CPIO-Archiv (gzip-komprimiert) Αρχείο CPIO (συμπιεσμένο με gzip) - CPIO archive (gzip-compressed) + CPIO archive (gzip-compressed) CPIO-arkivo (kunpremita per gzip) archivador CPIO (comprimido con gzip) CPIO artxiboa (gzip-ekin konprimitua) CPIO-arkisto (gzip-pakattu) CPIO skjalasavn (gzip-stappað) archive CPIO (compressé gzip) + archivi CPIO (comprimût cun gzip) cartlann CPIO (comhbhrúite le gzip) arquivo CPIO (comprimido con gzip) ארכיון CPIO (מכווץ ע״י gzip) CPIO arhiva (gzip sažeta) - CPIO-archívum (gzip-pel tömörítve) + CPIO archívum (gzip tömörítésű) Archivo CPIO (comprimite con gzip) Arsip CPIO (terkompresi gzip) Archivio CPIO (compresso con gzip) @@ -9203,7 +9527,7 @@ archiu CPIO (compressat gzip) Archiwum CPIO (kompresja gzip) arquivo CPIO (compressão gzip) - Pacote CPIO (compactado com gzip) + Pacote CPIO (compactado com gzip) Arhivă CPIO (compresie gzip) Архив CPIO (сжатый gzip) Archív CPIO (komprimovaný pomocou gzip) @@ -9214,17 +9538,18 @@ CPIO arşivi (gzip ile sıkıştırılmış) архів CPIO (стиснений gzip) Kho nén CPIO (đã nén gzip) - CPIO 归档文件(gzip 压缩) - CPIO 封存檔 (gzip 格式壓縮) + CPIO 归档文件(gzip 压缩) + CPIO 封存檔 (gzip 壓縮) C shell script + C shell-skrip سكربت شِل سي C qabıq skripti - Skrypt abałonki C + Skrypt abałonki C Скрипт — обвивка C script C shell skript shellu C @@ -9232,13 +9557,14 @@ C-skalprogram C-Shell-Skript Δέσμη ενεργειών κελύφους C - C shell script + C shell script skripto de C-ŝelo secuencia de órdenes de consola en C C shell script-a Csh-komentotiedosto C skel boðrøð script C shell + script di shell in C script bhlaoisce C script de C shell תסריט מעטפת C @@ -9259,7 +9585,7 @@ escript C shell Skrypt powłoki C script de terminal C - Script de shell C + Script de shell C Script C shell Сценарий C shell Skript shellu C @@ -9270,37 +9596,39 @@ C kabuk betiği скрипт оболонки C Văn lệnh trình bao C - C shell 脚本 - C shell 指令稿 + C shell 脚本 + C shell 指令稿 - - - - + + + + Xbase document + Xbase-dokument مستند Xbase Documentu Xbase - Dakument Xbase + Dakument Xbase Документ — Xbase document Xbase dokument Xbase Xbasedokument Xbase-Dokument Έγγραφο Xbase - Xbase document + Xbase document Xbase-dokumento documento Xbase Xbase dokumentua Xbase-asiakirja Xbase skjal document Xbase + document Xbase cáipéis Xbase documento Xbase מסמך Xbase @@ -9320,7 +9648,7 @@ document Xbase Dokument Xbase documento Xbase - Documento do Xbase + Documento do Xbase Document Xbase Документ Xbase Dokument Xbase @@ -9331,8 +9659,8 @@ Xbase belgesi документ Xbase Tài liệu Xbase - Xbase 文档 - Xbase 文件 + Xbase 文档 + Xbase 文件 @@ -9341,20 +9669,22 @@ ECMAScript program + ECMAScript-program برنامج ECMAScript - Prahrama ECMAScript + Prahrama ECMAScript Програма — ECMAScript programa ECMAScript program v jazyce ECMAScript - ECMA-program + ECMAScript-program ECMAScript-Programm Πρόγραμμα ECMAScript - ECMAScript program + ECMAScript program programa en ECMAScript ECMAScript programa ECMAScript-ohjelma ECMAScript forrit programme ECMAScript + program ECMAScript ríomhchlár ECMAScript programa en ECMAScript תכנית EMCAScript @@ -9375,7 +9705,7 @@ programa ECMAEscript Pogram ECMAScript programa ECMAScript - Programa ECMAScript + Programa ECMAScript Program ECMAScript Программа ECMAScript Program ECMAScript @@ -9386,105 +9716,131 @@ ECMAScript programı програма мовою ECMAScript Chương trình ECMAScript - ECMAScript 程序 - ECMAScript 程式 + ECMAScript 程序 + ECMAScript 程式 - + + + MAME compressed hard disk image + imatge de disc dur MAME amb compressió + MAME-pakatun kiintolevyn levykuva + Immagine disco MAME compressa + Skompresowany obraz dysku twardego MAME + стиснений образ жорсткого диска MAME + + + + + + - + Sega CD disc image + Mega CD-skyfbeeldlêer Imaxe de discu de Sega CD + Диск — Mega-CD (Sega) imatge de disc de Sega CD obraz disku CD pro Sega Sega CD-diskaftryk Sega-CD-Datenträgerabbild - Sega CD disc image + Sega CD disc image imagen de disco CD de Sega Sega CD disko irudia Sega CD -levykuva image disque Sega CD + imagjin disc CD Sega íomhá dlúthdhiosca Sega דמות כונן Sega CD Sega CD slika diska Sega CD-lemezkép - image cakram CD Sega + Image cakram CD Sega Immagine disco Sega Mega CD Sega CD диск бейнесі 세가 CD 디스크 이미지 Obraz płyty konsoli Mega-CD - Imagem de disco Sega CD + imagem de disco Mega-CD + Imagem de disco Sega CD Образ диска CD Sega Obraz disku CD Sega одраз диска Сега ЦД-а Mega-CD-skivavbild - Sega CD disk kalıbı + Sega CD disk görüntüsü образ диска Sega CD - Sega CD 光盘映像 - Sega CD 光碟映像檔 + Sega CD 光盘映像 + Sega CD 光碟映像檔 - + - - + + - - + + - - + Sega Pico ROM ROM de Sega Pico + ROM — Sega Pico ROM de Sega Pico ROM pro Sega Pico + Sega Pico-ROM Sega Pico ROM - Sega Pico ROM + Sega Pico ROM ROM de Sega Pico Sega Pico ROM Sega Pico ROM ROM Sega Pico + ROM Sega Pico ROM Sega Pico Sega Pico ROM Sega Pico ROM ROM Sega Pico ROM Sega Pico Sega Pico ROM - 세카 피코 롬 + 세가 피코 롬 Plik ROM konsoli Sega Pico - ROM de Sega Pico + ROM Sega Pico + ROM de Sega Pico Sega Pico ROM ROM pre Sega Pico Сега Пико РОМ Sega Pico-rom Sega Pico ROM ППП Sega Pico - Sega Pico ROM - Sega Pico ROM + Sega Pico ROM + Sega Pico ROM - + + Sega Saturn disc image + Sega Saturn-skyfbeeldlêer Imaxe de discu de Sega Saturn + Диск — Sega Saturn imatge de disc de Sega Saturn obraz disku pro Sega Saturn Sega Saturn-diskaftryk Sega-Saturn-Datenträgerabbild Εικόνα δίσκου Sega Saturn - Sega Saturn disc image + Sega Saturn disc image imagen de disco de Sega Saturn Sega Saturn disko irudia Sega Saturn -levykuva image disque Sega Saturn + imagjin disc Sega Saturn íomhá diosca Sega Saturn דמות כונן Sega Saturn Sega Saturn slika diska @@ -9497,76 +9853,73 @@ imatge disc Sega Saturn Obraz płyty konsoli Sega Saturn imagem de disco Sega Saturn - Imagem de disco do Sega Saturn + Imagem de disco do Sega Saturn Образ диска Sega Saturn Obraz disku Sega Saturn одраз диска Сега Сатурна Sega Saturn-skivavbild - Sega Saturn disk kalıbı + Sega Saturn disk görüntüsü образ диска Sega Saturn - Sega Saturn 光盘映像 - Sega Saturn 光碟映像檔 + Sega Saturn 光盘映像 + Sega Saturn 光碟映像檔 - - + + - - - Dreamcast GD-ROM - GD-ROM de Dreamcast - GD-ROM de Dreamcast - GD-ROM pro Dreamcast - Dreamcast GD-ROM - Dreamcast GD-ROM - Dreamcast GD-ROM - Dreamcast GD-ROM - GD-ROM de Dreamcast - Dreamcast GD-ROM - GD-ROM Dreamcast - GD-ROM Dreamcast - Dreamcast GD-ROM - Dreamcast GD-ROM - Dreamcast GD-ROM - GD-ROM Dreamcast - GD-ROM Dreamcast - GD-ROM Dreamcast - Dreamcast GD-ROM - 드림캐스트 GD-ROM - GD-ROM Dreamcast - Plik GD-ROM konsoli Dreamcast - GD-ROM Dreamcast - GD-ROM de Dreamcast - Dreamcast GD-ROM - Dreamcast GD-ROM - Дримкаст ГД-РОМ - Dreamcast-gd-rom - Dreamcast GD-ROM - GD-ROM Dreamcast - Dreamcast CD-ROM - Dreamcast GD-ROM + + Dreamcast disc image + Диск — Dreamcast + imatge de disc de Dreamcast + Dreamcast-diskaftryk + Dreamcast-Datenträgerabbild + Dreamcast disc image + imagen de disco de Dreamcast + Dreamcast disko irudia + Dreamcast-levykuva + image disque Dreamcast + Dreamcast slika disa + Dreamcast lemezkép + Image cakram Dreamcast + Immagine disco Dreamcast + Dreamcast диск бейнесі + 드림캐스트 디스크 이미지 + Obraz płyty konsoli Dreamcast + imagem de disco Dreamcast + Imagem de disco do Dreamcast + Образ диска Dreamcast + Obraz disku Dreamcast + Dreamcast-skivavbild + Dreamcast disk görüntüsü + образ диска Dreamcast + Dreamcast 光盘映像 + Dreamcast 光碟映像檔 - + + + + Nintendo DS ROM Nintendo DS ROM ROM de Nintendo DS - Nintendo DS ROM + Nintendo DS ROM ROM — Nintendo DS ROM de Nintendo DS ROM pro Nintendo DS - Nintendo DS-rom + Nintendo DS-ROM Nintendo DS ROM Nintendo DS ROM - Nintendo DS ROM + Nintendo DS ROM ROM de Nintendo DS Nintendo DS-ko ROMa Nintendo DS-ROM Nintendo DS ROM ROM Nintendo DS + ROM Nintendo DS ROM Nintendo DS ROM de Nintendo DS ROM של Nintendo @@ -9586,7 +9939,7 @@ ROM Nintendo DS Plik ROM konsoli Nintendo DS ROM Nintendo DS - ROM de Nintendo DS + ROM de Nintendo DS ROM Nintendo DS Nintendo DS ROM ROM pre Nintendo DS @@ -9597,24 +9950,54 @@ Nintendo DS ROM ППП Nintendo ROM DS Nintendo - 任天堂 DS ROM - 任天堂 DS ROM + 任天堂 DS ROM + 任天堂 DS ROM + + Nintendo 3DS ROM + ROM de Nintendo 3DS + Nintendo 3DS ROM + ROM Nintendo 3DS + Plik ROM konsoli Nintendo 3DS + ROM do Nintendo 3DS + ППП Nintendo 3DS + + + + + + + + + Nintendo 3DS Executable + executable de Nintendo 3DS + Nintendo 3DS suoritettava + Eseguibile Nintendo 3DS + Plik wykonywalny konsoli Nintendo 3DS + виконуваний файл Nintendo 3DS + + + + + + PC Engine ROM ROM de PC Engine + ROM — PC Engine ROM de PC Engine ROM pro PC Engine - PC Engine ROM + PC Engine-ROM PC Engine ROM PC Engine ROM - PC Engine ROM + PC Engine ROM ROM de PC Engine PC Engine ROM PC Engine ROM ROM PC Engine + ROM PC Engine ROM PC Engine ROM de máquina de PC ROM של PC Engine @@ -9628,7 +10011,7 @@ ROM PC Engine Plik ROM konsoli PC Engine ROM PC Engine - ROM de PC Engine + ROM de PC Engine PC Engine ROM PC Engine ROM Pomnilnik PC Engine ROM @@ -9636,24 +10019,27 @@ PC Engine-rom PC Engine ROM ROM для рушія на ПК - PC Engine ROM - PC Engine ROM + PC Engine ROM + PC Engine ROM Wii disc image + Wii-skyfbeeldlêer Imaxe de discu de Wii + Диск — Wii imatge de disc de Wii obraz disku pro Wii Wii-diskaftryk Wii-Datenträgerabbild Εικόνα δίσκου Wii - Wii disc image + Wii disc image imagen de disco de Wii Wii disko irudia Wii-levykuva image disque Wii + imagjin disc Wii íomhá diosca Wii Imaxe de disco de Wii דמות כונן Wii @@ -9667,7 +10053,7 @@ imatge disc Wii Obraz płyty konsoli Wii imagem de disco Wii - Imagem de disco Wii + Imagem de disco Wii Образ диска Wii Obraz disku Wii Odtis diska Wii @@ -9675,29 +10061,33 @@ Wii-skivavbild Wii disk görüntüsü образ диска Wii - Wii 光盘映像 - Wii 光碟映像檔 + Wii 光盘映像 + Wii 光碟映像檔 - - - + + + WiiWare bundle + WiiWare-bundel + Програмен пакет — WiiWare paquet de WiiWare balíček pro WiiWare WiiWare-samling WiiWare-Paket - WiiWare bundle + WiiWare bundle conjunto de WiiWare WiiWare bilduma + WiiWare-lisäpaketti lot WiiWare + côl WiiWare burla WiiWare מאגד WiiWare WiiWare paket @@ -9706,39 +10096,42 @@ Bundel WiiWare Bundle WiiWare WiiWare дестесі - 위-웨어 번들 + WiiWare 번들 lòt WiiWare Pakiet WiiWare pacote WiiWare - Pacote WiiWare + Pacote WiiWare Пакет WiiWare Balík WiiWare ВииВер комплет WiiWare-paket WiiWare paketi пакет WiiWare - WiiWare 捆绑包 - WiiWare 綁包 + WiiWare 捆绑包 + WiiWare 綁包 - - - + + + GameCube disc image + GameCube-skyfbeeldlêer + Диск — GameCube imatge de disc de GameCube obraz disku pro GameCube GameCube-diskaftryk GameCube-Datenträgerabbild Εικόνα δίσκου GameCube - GameCube disc image + GameCube disc image imagen de disco de GameCube GameCube disko irudia GameCube-levykuva image disque GameCube + imagjin disc GameCube íomhá diosca GameCube Imae de disco de GameCube דמות כונן GameCube @@ -9752,7 +10145,7 @@ imatge disc GameCube Obraz płyty konsoli GameCube imagem de disco GameCube - Imagem de disco GameCube + Imagem de disco GameCube Образ диска GameCube Obraz disku GameCube Odtis diska GameCube @@ -9760,144 +10153,169 @@ GameCube-skivavbild GameCube disk görüntüsü образ диска GameCube - GameCube 光盘映像 - GameCube 光碟映像檔 + GameCube 光盘映像 + GameCube 光碟映像檔 - + Thomson Mémo7 cartridge + Касета — Thomson Mémo7 cartutx Thomson Mémo7 Kazeta Thomson Mémo7 + Thomson Mémo7-kassette Thomson-Mémo7-Steckmodul - Thomson Mémo7 cartridge + Thomson Mémo7 cartridge cartucho Mémo7 de Thomson + Thomson Mémo7 kartutxoa + Thomson Mémo7 -patruuna cartouche Thomson Mémo7 + cartucje Mémo7 Thomson cartús Thomson Mémo7 Thomson Mémo7 uložak Thomson Mémo7 kazetta - cartridge Thomson Mémo7 + Cartridge Thomson Mémo7 Cartuccia Thomson Mémo7 Thomson Mémo7 картриджі - 톰슨 메모7 카트릿지 + 톰슨 Mémo7 카트리지 Kartridż Thomson Mémo7 - Cartucho Thomson Mémo7 + cartucho Thomson Mémo7 + Cartucho Thomson Mémo7 Картридж Thomson Mémo7 Kazeta Thomson Mémo7 Томсон Мемо7 кертриџ Thomson Mémo7-spelkassett Thomson Mémo7 kartuşu картридж Thomson Mémo7 - Thomson Mémo7 卡带 - Thomson Mémo7 卡匣 + Thomson Mémo7 卡带 + Thomson Mémo7 卡匣 Thomson cassette + Касета — Thomson cinta de casset Thomson Kazeta Thomson + Thomson-kassette Thomson-Kassette - Thomson cassette + Thomson cassette casete de Thomson + Thomson kasetea + Thomson-kasetti cassette Thomson + cassete Thomson caiséad Thomson Thomson kaseta Thomson kazetta - kaset Thomson + Kaset Thomson Cassetta Thomson Thomson кассетасы - 톰슨 카셋트 + 톰슨 카세트 Kaseta Thomson - Cassete Thomson + cassete Thomson + Cassete Thomson Кассета Thomson Kazeta Thomson Томсон касете Thomson-kassett Thomson kaset касета Thomson - Thomson 磁带 - Thomson 卡匣 + Thomson 磁带 + Thomson 卡匣 HFE floppy disk image + Диск — флопи, HFE imatge de disquet HFE Obraz diskety HFE + HFE-floppydiskaftryk HFE-Diskettenabbild - HFE floppy disk image + HFE floppy disk image imagen de disquete HFE + HFE diskete disko irudia + HFE disketti-levykuva image disquette HFE + imagjin disc floppy HFE íomhá diosca fhlapaigh HFE HFE slika diskete HFE flopi lemezkép - image disk floppy HFE + Image disk floppy HFE Immagine disco floppy HFE HFE иілгіш диск бейнесі HFE 플로피 디스크 이미지 Obraz dyskietki HFE - Imagem de disco flexível HFE + imagem de disquete HFE + Imagem de disco flexível HFE Образ гибкого диска HFE Obraz pružného disku HFE ХФЕ слика флопи диска HFE-diskavbild - HFE disket kalıbı + HFE disket görüntüsü образ дискети HFE - HFE 软盘映像 - HFE 軟碟映像檔 + HFE 软盘映像 + HFE 軟碟映像檔 HFE HxC Floppy Emulator - + SAP Thomson floppy disk image + Диск — флопи, SAP Thomson imatge de disquet SAP Thomson Obraz diskety SAP Thomson + SAP Thomson-floppydiskaftryk SAP-Thomson-Diskettenabbild - SAP Thomson floppy disk image + SAP Thomson floppy disk image imagen de disquete SAP de Thomson + SAP Thomson diskete disko irudia + SAP Thomson disketti-levykuva image disquette SAP Thomson + imagjin disc floppy SAP Thomson íomhá diosca fhlapaigh SAP Thomson SAP Thomson slika diskete SAP Thomson flopi lemezkép - image disk floppy SAP Thomson + Image disk floppy SAP Thomson Immagine disco floppy Thomson SAP SAP Thomson иілгіш диск бейнесі SAP 톰슨 플로피 디스크 이미지 Obraz dyskietki SAP Thomson - Imagem de disco flexível SAP Thomson + imagem de disquete SAP Thomson + Imagem de disco flexível SAP Thomson Образ гибкого диска SAP Thomson Obraz pružného disku SAP Thomson САП Томсон слика флопи диска SAP Thomson-diskavbild - SAP Thomson disket kalıbı + SAP Thomson disket görüntüsü образ дискети Thomson SAP - SAP Thomson 软盘映像 - SAP Thomson 軟碟映像檔 + SAP Thomson 软盘映像 + SAP Thomson 軟碟映像檔 SAP Système d'Archivage Pukall - + Debian package + Debian-pakket حزمة ديبيان Debian paketi - Pakunak Debian + Pakunak Debian Пакет — Debian paquet Debian balíček Debianu @@ -9905,13 +10323,14 @@ Debianpakke Debian-Paket Πακέτο Debian - Debian package + Debian package Debian-pakaĵo paquete de Debian Debian paketea Debian-paketti Debian pakki paquet Debian + pachet Debian pacáiste Debian paquete de Debian חבילת דביאן @@ -9933,7 +10352,7 @@ paquet Debian Pakiet Debiana pacote Debian - Pacote Debian + Pacote Debian Pachet Debian Пакет Debian Balíček Debianu @@ -9944,90 +10363,78 @@ Debian paketi пакунок Debian Gói Debian - Debian 软件包 - Debian 軟體包 + Debian 软件包 + Debian 軟體包 - - + + - Qt Designer file - ملف Qt Designer - Fajł Qt Designer - Файл — Qt Designer - fitxer de Qt Designer - soubor Qt Designer - Qt Designer-fil - Qt-Designer-Datei - Αρχείο Qt Designer - Qt Designer file - dosiero de Qt Designer - archivo de Qt Designer - Qt Designer Fitxategia - Qt Designer -tiedosto - Qt Designer fíla - fichier Qt Designer - comhad Qt Designer - ficheiro de Qt Designer - קובץ של Qt Designer - Qt Designer datoteka - Qt Designer-fájl - File Qt Designer - Berkas Qt Designer - File Qt Designer - Qt Designer ファイル - Qt Designer файлы - Qt 디자이너 파일 - Qt Designer failas - Qt Designer datne - Fail Qt Designer - Qt Designer-fil - Qt Designer-bestand - Qt Designer-fil - fichièr Qt Designer - Plik Qt Designer - ficheiro do Qt Designer - Arquivo do Qt Designer - Fișier Qt Designer - Файл Qt Designer - Súbor Qt Designer - Datoteka Qt Designer - File Qt Designer - датотека Кут дизајнера - Qt Designer-fil - Qt Tasarımcı dosyası - файл програми Qt-дизайнер - Tập tin thiết kế Qt Designer - Qt Designer 文件 - Qt Designer 檔案 + Qt Designer interface document + Документ — интерфейс, Qt Designer + document d'interfície Qt Designer + Qt Designer-brugerflade-dokument + Qt-Designer-Oberflächendokument + Qt Designer interface document + documento de interfaz de Qt Designer + Qt Designer interfaze dokumentua + Qt Designer -käyttöliittymän asiakirja + document d'interface Qt Designer + Qt Designer dokument sučelja + Qt Designer felületleíró dokumentum + Dokumen antarmuka Qt Designer + Documento interfaccia Qt Designer + Qt Designer интерфейс құжаты + Qt 디자이너 인터페이스 문서 + Dokument interfejsu Qt Designer + documento de interface Qt Designer + Documento de interface do Qt Designer + Документ интерфейса Qt Designer + Qt Designer-gränssnittsdokument + Qt Designer arayüz belgesi + документ інтерфейсу Qt Designer + Qt Designer 界面文档 + Qt Designer 介面文件 - - + + + + Kaitai Struct definition file + fitxer de definicions Kaitai Struct + Kaitai Struct määritystiedosto + File definizione Kaitai Struct + Plik definicji Kaitai Struct + файл визначень Kaitai Struct + + + Qt Markup Language file - Файл — Qt Markup + Qt Markup Language-lêer + Интерфейс — Qt Markup fitxer de llenguatge de marcadors Qt soubor Qt Markup Language Qt Markup Language-fil Qt-Auszeichnungssprachendatei Αρχείο Qt Markup Language - Qt Markup Language file + Qt Markup Language file archivo de lenguaje de marcado Qt Qt Markup lengoai fitxategia QML-tiedosto fichier Qt Markup Language + file Qt Markup Language comhad teanga mharcála Qt ficheiro de linguaxe de marcado Qt קובץ שפת סימון של Qt @@ -10044,7 +10451,7 @@ fichièr Qt Markup Language Plik języka znaczników Qt ficheiro de linguagem Qt Markup - Arquivo de Qt Markup Language + Arquivo de Qt Markup Language Файл Qt Markup Language Súbor značkovacieho jazyka Qt Datoteka označevalnega jezika Qt @@ -10052,15 +10459,15 @@ Qt-märkspråksfil Qt İşaretleme Dili dosyası файл мови розмітки Qt - Qt Markup Language 文件 - Qt 標記語言檔 + Qt Markup Language 文件 + Qt 標記語言檔 - - - + + + - - + + @@ -10070,24 +10477,25 @@ desktop configuration file ملف تضبيط سطح المكتب - kanfihuracyjny fajł asiarodździa - Файл с информация за работния плот + kanfihuracyjny fajł asiarodździa + Информация за работния плот fitxer de configuració d'escriptori soubor nastavení pracovní plochy skrivebordskonfigurationsfil Desktop-Konfigurationsdatei Αρχείο ρυθμίσεων επιφάνειας εργασίας - desktop configuration file + desktop configuration file dosiero de agordoj de labortablo archivo de configuración del escritorio Mahaigainaren konfigurazio-fitxategia työpöydän asetustiedosto skriviborðssamansetingarfíla fichier de configuration desktop + file di configurazion scritori comhad cumraíochta deisce ficheiro de configuración de escritorio קובץ הגדרות שולחן עבודה - Datoteka prečaca radne površine + datoteka podešavanja radne površine asztalbeállító fájl File de configuration de scriptorio berkas konfigurasi destop @@ -10104,7 +10512,7 @@ fichièr de configuracion desktop Plik konfiguracji środowiska ficheiro de configuração de área de trabalho - Arquivo de configuração desktop + Arquivo de configuração desktop fișier de configurare al desktopului Файл настроек рабочего стола Súbor nastavení pracovnej plochy @@ -10112,19 +10520,19 @@ File konfigurimi desktop датотека подешавања радне површи skrivbordskonfigurationsfil - masa üstü yapılandırma dosyası + masaüstü yapılandırma dosyası файл конфігурації стільниці tập tin cấu hình môi trường - 桌面配置文件 - 桌面組態檔 + 桌面配置文件 + 桌面組態檔 - - - - - + + + + + @@ -10132,6 +10540,7 @@ FictionBook document + FictionBook-dokument مستند FictionBook Documentu de FictionBook Документ — FictionBook @@ -10140,13 +10549,14 @@ FictionBook-dokument FictionBook-Dokument Έγγραφο FictionBook - FictionBook document + FictionBook document FictionBook-dokumento documento FictionBook FictionBook dokumentua FictionBook-asiakirja FictionBook skjal document FictionBook + document FictionBook cáipéis FictionBook documento de FictionBook מסמך FictionBook @@ -10165,7 +10575,7 @@ document FictionBook Dokument FictionBook documento FictionBook - Documento FictionBook + Documento FictionBook Document FictionBook Документ FictionBook Dokument FictionBook @@ -10175,29 +10585,32 @@ FictionBook belgesi документ FictionBook Tài liệu FictionBook - FictionBook 文档 - FictionBook 文件 + FictionBook 文档 + FictionBook 文件 - + Compressed FictionBook document + Saamgepersde FictionBook-dokument Documentu comprimíu de FictionBook + Документ — FictionBook, компресиран document FictionBook amb compressió komprimovaný dokument FictionBook Komprimeret FictionBook-dokument Komprimiertes FictionBook-Dokument Συμπιεσμένο έγγραφο FictionBook - Compressed FictionBook document + Compressed FictionBook document documento comprimido de FictionBook Konprimitutako FictionBook dokumentua Pakattu FictionBook-asiakirja document FictionBook compressé + document FictionBook comprimût cáipéis chomhbhrúite FictionBook Documento de FictionBook comprimida מסמך FictionBook מכווץ @@ -10211,30 +10624,31 @@ document FictionBook compressat Skompresowany dokument FictionBook documento comprimido FictionBook - Documento FictionBook comprimido + Documento FictionBook comprimido Сжатый документ FictionBook Komprimovaný dokument FictionBook Stisnjeni dokument FictionBook запаковани документ Фикшон Књиге Komprimerat FictionBook-dokument - Sıkıştırılmış KurguKitap belgesi + Sıkıştırılmış FictionBook belgesi стиснений документ FictionBook - 压缩的 FictionBook 文档 - 壓縮版 FictionBook 文件 + 压缩的 FictionBook 文档 + 壓縮版 FictionBook 文件 - - - + + + Dia diagram + Dia-diagram خطاطة Dia Dia diaqramı - Dyjahrama Dia + Dyjahrama Dia Диаграма — Dia diagrama de Dia diagram Dia @@ -10242,13 +10656,14 @@ Dia-diagram Dia-Diagramm Διάγραμμα Dia - Dia diagram + Dia diagram Dia-diagramo diagrama de Dia Dia diagrama Dia-kaavio Dia ritmynd diagramme Dia + diagram Dia léaráid Dia diagrama de Dia גרף של Dia @@ -10270,7 +10685,7 @@ diagrama Dia Diagram Dia diagrama Dia - Diagrama do Dia + Diagrama do Dia Diagramă Dia Диаграмма Dia Diagram Dia @@ -10281,18 +10696,19 @@ Dia çizimi діаграма Dia Biểu đồ Dia - Dia 图表 - Dia 圖表 + Dia 图表 + Dia 圖表 - + Dia shape + Dia-vorm شكل Dia Фигура — Dia forma de Dia @@ -10300,12 +10716,13 @@ Dia-figur Dia-Form Σχήμα Dia - Dia shape + Dia shape forma de Dia Dia-ren forma Dia-muoto Dia skapur forme Dia + sagome Dia cruth Dia forma de Dia צורה של Dia @@ -10323,7 +10740,7 @@ forma Dia Kształt Dia forma Dia - Formato Dia + Formato Dia Figură Dia Фигура Dia Tvar Dia @@ -10332,34 +10749,36 @@ Dia-figur Dia şekli форма Dia - Dia 形状 - Dia 形狀 + Dia 形状 + Dia 形狀 - + TeX DVI document + TeX DVI-dokument مستند TeX DVI Documentu Tex DVI - Dakument TeX DVI + Dakument TeX DVI Документ — TeX DVI document DVI de TeX dokument TeX DVI TeX DVI-dokument TeX-DVI-Dokument Έγγραφο TeX DVI - TeX DVI document + TeX DVI document DVI-dokumento de TeX documento TeX DVI TeX DVI dokumentua TeX DVI -asiakirja TeX DVI skjal document TeX DVI + document DVI TeX cáipéis DVI TeX documento TeX DVI מסמך מסוג TeX DVI @@ -10380,7 +10799,7 @@ document TeX DVI Dokument TeX DVI documento TeX DVI - Documento DVI TeX + Documento DVI TeX Document Tex DVI Документ TeX DVI Dokument TeX DVI @@ -10391,21 +10810,22 @@ TeX DVI belgesi документ TeX DVI Tài liệu DVI Tex - TeX DVI 文档 - TeX DVI 文件 + TeX DVI 文档 + TeX DVI 文件 DVI Device independent file format - + Enlightenment theme + Enlightenment-tema سمة Enlightenment Enlightenment örtüyü - Matyŭ Enlightenment + Matyŭ Enlightenment Тема — Enlightenment tema d'Enlightenment motiv Enlightenment @@ -10413,13 +10833,14 @@ Enlightenmenttema Enlightenment-Thema Θέμα Enlightenment - Enlightenment theme + Enlightenment theme etoso de Enlightenment tema de Enlightenment Enlightenment gaia Enlightenment-teema Enlightenment tema thème Enlightenment + teme di Enlightenment téama Enlightenment tema de Enlightenment ערכת נושא של Enlightenment @@ -10441,7 +10862,7 @@ tèma Enlightenment Motyw Enlightenment tema Enlightenment - Tema do Enlightenment + Tema do Enlightenment Temă Enlightenment Тема Enlightenment Motív Enlightenment @@ -10452,27 +10873,28 @@ Enlightenment teması тема Enlightenment Sắc thái Enlightenment - Enlightenment 主题 - Enlightenment 佈景主題 + Enlightenment 主题 + Enlightenment 佈景主題 Egon Animator animation تحريكة محرك Egon - Animacyja Egon Animator + Animacyja Egon Animator Анимация — Egon Animator animació d'Egon Animator animace Egon Animator Egon Animator-animation Egon-Animator-Animation Κινούμενο σχέδιο Egon Animator - Egon Animator animation + Egon Animator animation animacio de Egon Animator animación de Egon Animator Egon Animator-eko animazioa Egon Animator -animaatio Egon Animator teknimyndagerð animation Egon Animator + animazion Egon Animator beochan Egon Animator animación de Egon Animator אנימצייה של Egon Animator @@ -10494,7 +10916,7 @@ animacion Egon Animator Animacja Egon Animator animação Egon Animator - Animação do Egon Animator + Animação do Egon Animator Animație Egon Animator Анимация Egon Animator Animácia Egon Animator @@ -10505,28 +10927,30 @@ Egon Animator canlandırması анімація Egon Animator Hoạt ảnh Egon Animator - Egon Animator 动画 - Egon Animator 動畫 + Egon Animator 动画 + Egon Animator 動畫 executable + uitvoerbaar تنفيذي - vykonvalny fajł + vykonvalny fajł Изпълним файл executable spustitelný soubor kørbar Programm Εκτελέσιμο - executable + executable plenumebla ejecutable exekutagarria suoritettava ohjelma inningarfør exécutable + eseguibil comhad inrite executábel קובץ הרצה @@ -10547,7 +10971,7 @@ executable Program executável - Executável + Executável executabil Исполняемый Spustiteľný súbor @@ -10558,43 +10982,41 @@ çalıştırılabilir виконуваний файл thực hiện được - 可执行文件 - 可執行檔 + 可执行文件 + 可執行檔 - - - - + + - - - - + + - - - - - + + + + + FLTK Fluid file + FLTK Fluit-lêer ملف FLTK Fluid - Fajł FLTK Fluid + Fajł FLTK Fluid Интерфейс — FLTK Fluid fitxer FLTK Fluid soubor FLTK Fluid FLTK Fluid-fil FLTK-Fluid-Datei Αρχείο FLTK Fluid - FLTK Fluid file + FLTK Fluid file archivo FLTK Fluid FLTK Fluid fitxategia FLTK Fluid -tiedosto FLTK Fluid fíla fichier Fluid FLTK + file FLTK Fluid comhad FLTK Fluid ficheiro FLTK Fluid קובץ FLTK Fluid @@ -10615,7 +11037,7 @@ fichièr Fluid FLTK Plik Fluid FLTK ficheiro FLTK Fluid - Arquivo Fluid do FLTK + Arquivo Fluid do FLTK Fișier FLTK Fluid Файл FLTK Fluid Súbor FLTK Fluid @@ -10626,34 +11048,37 @@ FLTK Fluid dosyası файл FLTK Fluid Tập tin Fluid FLTK - FLTK 流体文档 - FLTK Fluid 檔 + FLTK 流体文档 + FLTK Fluid 檔 FLTK Fast Light Toolkit - + WOFF font + WOFF-skriftipe Fonte WOFF + Шрифт — WOFF lletra WOFF font WOFF WOFF-skrifttype WOFF-Schrift Γραμματοσειρά WOFF - WOFF font + WOFF font tipo de letra WOFF WOFF letra-tipoa WOFF-fontti police WOFF + caratar WOFF cló WOFF Tipo de letra WOFF גופן WOFF - WOFF slovo + WOFF font WOFF-betűkészlet Typo de litteras WOFF Fonta WOFF @@ -10661,11 +11086,12 @@ WOFF フォント WOFF қарібі WOFF 글꼴 + WOFF šriftas WOFF fonts poliça WOFF Czcionka WOFF letra WOFF - Fonte WOFF + Fonte WOFF Шрифт WOFF Písmo WOFF Pisava WOFF @@ -10673,83 +11099,100 @@ WOFF-typsnitt WOFF yazı tipi шрифт WOFF - WOFF 字体 - WOFF 字型 + WOFF 字体 + WOFF 字型 WOFF Web Open Font Format - + - + WOFF2 font + WOFF2-skriftipe Fonte WOFF2 + Шрифт — WOFF2 lletra WOFF2 font WOFF2 + WOFF2-skrifttype WOFF2-Schrift - WOFF2 font + WOFF2 font tipo de letra WOFF2 + WOFF2 letra-tipoa WOFF2-fontti - WOFF2 slovo + police WOFF2 + caratar WOFF2 + cló WOFF2 + WOFF2 font WOFF2 betűkészlet Fonta WOFF2 Carattere WOFF2 WOFF2 қарібі WOFF2 글꼴 + WOFF2 šriftas Czcionka WOFF2 - Fonte WOFF2 + letra WOFF2 + Fonte WOFF2 Шрифт WOFF2 Písmo WOFF2 + Pisava WOFF2 WOFF2-typsnitt + WOFF2 yazı tipi шрифт WOFF2 - WOFF2 字体 - WOFF2 字型 + WOFF2 字体 + WOFF2 字型 WOFF2 Web Open Font Format 2.0 - + PostScript type-1 font + PostScript tipe 1-skriftipe + Шрифт — PostScript type-1 lletra type-1 de PostScript font PostScript type-1 + PostScript type-1-skrifttype PostScript-Typ-1-Schrift - PostScript type-1 font + PostScript type-1 font tipo de letra PostScript Type-1 PostScript type-1 letra-tipoa + PostScript type-1 -fontti police PostScript Type 1 + caratar PostScript type-1 cló PostScript type-1 - PostScript type-1 slovo + PostScript type-1 font PostScript type-1 betűkészlet - fonta PostScript type-1 + Fonta PostScript type-1 Carattere PostScript type-1 PostScript type-1 қарібі PostScript Type-1 글꼴 Czcionka PostScript Type-1 - Fonte PostScript tipo-1 + letra PostScript Tipo 1 + Fonte PostScript tipo-1 Шрифт PostScript Type-1 Písmo PostScript typu 1 слова Постскрипта врсте-1 PostScript type-1-typsnitt PostScript tip-1 yazı tipi шрифт type-1 PostScript - PostScript type-1 字体 - PostScript type-1 字型 + PostScript type-1 字体 + PostScript type-1 字型 - - - - - - + + + + + + @@ -10757,9 +11200,10 @@ Adobe font metrics + Adobe skriftipe-afmetings مقاييس خط أدوبي Adobe yazı növü metrikləri - Metryka šryftu Adobe + Metryka šryftu Adobe Шрифтова метрика — Adobe mètrica de lletra d'Adobe metrika fontu Adobe @@ -10767,16 +11211,17 @@ Adobe skrifttypefil Adobe-Schriftmetriken Μετρικά γραμματοσειράς Adobe - Adobe font metrics + Adobe font metrics metrikoj de Adobe-tiparo métricas tipográficas de Adobe Adobe letra-tipoen neurriak Adobe-fonttimitat métriques de police Adobe + metrichis caratar Adobe meadarachtaí cló Adobe métricas de fonte de Adobe מדדי גופן של Adobe - Adobe mjere slova + Metrika Adobe fonta Adobe-betűmetrika Metricas de typo de litteras Adobe Metrik fonta Adobe @@ -10793,7 +11238,7 @@ metricas de poliça Adobe Metryka czcionki Adobe métrica de letras Adobe - Métricas de fonte Adobe + Métricas de fonte Adobe Dimensiuni font Adobe Метрика шрифта Adobe Metrika písma Adobe @@ -10801,19 +11246,20 @@ Metrik lloj gërmash Adobe метрика Адобе слова Adobe-typsnittsmetrik - Adobe yazıtipi ölçüleri + Adobe yazı tipi ölçüleri метрики шрифту Adobe Cách đo phông chữ Adobe - Adobe 字体规格 - Adobe 字型描述檔 + Adobe 字体规格 + Adobe 字型描述檔 BDF font + BDF-skriftipe خط BDF BDF yazı növü - Šryft BDF + Šryft BDF Шрифт — BDF lletra BDF font BDF @@ -10821,17 +11267,18 @@ BDF-skrifttype BDF-Schrift Γραμματοσειρά BDF - BDF font + BDF font BDF-tiparo tipo de letra BDF BDF letra-tipoa BDF-fontti BDF stavasnið police BDF + caratar BDF cló BDF tipo de fonte BDF גופן BDF - BDF slovo + BDF font BDF-betűkészlet Typo de litteras BDF Fonta BDF @@ -10848,7 +11295,7 @@ poliça BDF Czcionka BDF letra BDF - Fonte BDF + Fonte BDF Font BDF Шрифт BDF Písmo BDF @@ -10856,22 +11303,23 @@ Lloj gërme BDF БДФ слова BDF-typsnitt - BDF fontu + BDF yazı tipi шрифт BDF Phông chữ BDF - BDF 字体 - BDF 字型 + BDF 字体 + BDF 字型 - + DOS font + DOS-skriftipe خط DOS DOS yazı növü - Šryft DOS + Šryft DOS Шрифт — DOS lletra DOS font pro DOS @@ -10879,17 +11327,18 @@ DOS-skrifttype DOS-Schrift Γραμματοσειρά DOS - DOS font + DOS font DOS-tiparo tipo de letra de DOS DOS letra-tipoa DOS-fontti DOS stavasnið police DOS + caratar DOS cló DOS tipo de fonte de DOS גופן DOS - DOS slovo + DOS font DOS-betűkészlet Typo de litteras DOS Fonta DOS @@ -10906,7 +11355,7 @@ poliça DOS Czcionka DOS letra DOS - Fonte do DOS + Fonte do DOS Font DOS Шрифт DOS Písmo pre DOS @@ -10914,23 +11363,24 @@ Gërmë DOS ДОС слова DOS-typsnitt - DOS fontu + DOS yazı tipi шрифт DOS Phông chữ DOS - DOS 字体 - DOS 字型 + DOS 字体 + DOS 字型 - - - + + + Adobe FrameMaker font + Adobe FrameMaker-skriftipe خط أدوبي الصانع للإطارات Adobe FrameMaker yazı növü - Šryft Adobe FrameMaker + Šryft Adobe FrameMaker Шрифт — Adobe FrameMaker lletra d'Adobe FrameMaker font Adobe FrameMaker @@ -10938,17 +11388,18 @@ Adobe FrameMaker-skrifttype Adobe-FrameMaker-Schrift Γραμματοσειρά Adobe FrameMaker - Adobe FrameMaker font + Adobe FrameMaker font Tiparo de Adobe FrameMaker tipo de letra de Adobe FrameMaker Adobe FrameMaker-en letra-tipoa Adobe FrameMaker -fontti Adobe FrameMaker stavasnið police Adobe FrameMaker + caratar Adobe FrameMaker cló Adobe FrameMaker tipo de fonte de Adobe FrameMaker גופן של Adobe FrameMaker - Adobe FrameMaker slovo + Adobe FrameMaker font Adobe FrameMaker-betűkészlet Typo de litteras pro Adobe FrameMaker Fonta Adobe FrameMaker @@ -10965,7 +11416,7 @@ poliça Adobe FrameMaker Czcionka Adobe FrameMaker letra Adobe FrameMaker - Fonte do Adobe FrameMaker + Fonte do Adobe FrameMaker Font Adobe FrameMaker Шрифт Adobe FrameMaker Písmo Adobe FrameMaker @@ -10976,18 +11427,19 @@ Adobe FrameMaker yazı tipi шрифт Adobe FrameMaker Phông chữ Adobe FrameMaker - Adobe FrameMaker 字体 - Adobe FrameMaker 字型 + Adobe FrameMaker 字体 + Adobe FrameMaker 字型 - + LIBGRX font + LIBGRX-skriftipe خط LIBGRX LIBGRX yazı növü - Šryft LIBGRX + Šryft LIBGRX Шрифт — LIBGRX lletra LIBGRX font LIBGRX @@ -10995,17 +11447,18 @@ LIBGRX-skrifttype LIBGRX-Schrift Γραμματοσειρά LIBGRX - LIBGRX font + LIBGRX font LIBGRX-tiparo tipo de letra LIBGRX LIBGRX letra-tipoa LIBGRX-fontti LIBGRX stavasnið police LIBGRX + caratar LIBGRX cló LIBGRX tipo de fonte en LIBGRX גופן LIBGRX - LIBGRX slovo + LIBGRX font LIBGRX-betűkészlet Typo de litteras LIBGRX Fonta LIBGRX @@ -11022,7 +11475,7 @@ poliça LIBGRX Czcionka LIBGRX letra LIBGRX - Fonte LIBGRX + Fonte LIBGRX Font LIBGRX Шрифт LIBGRX Písmo LIBGRX @@ -11030,21 +11483,22 @@ Lloj gërme LIBGRX ЛИБГРИкс слова LIBGRX-typsnitt - LIBGRX fontu + LIBGRX yazı tipi шрифт LIBGRX Phông chữ LIBGRX - LIBGRX 字体 - LIBGRX 字型 + LIBGRX 字体 + LIBGRX 字型 - + Linux PSF console font + Linux PSF-konsoleskriftipe خط كونسول PSF لينكس Linux PSF konsol yazı növü - Kansolny šryft PSF dla Linuksa + Kansolny šryft PSF dla Linuksa Шрифт — PSF, за конзолата на Линукс lletra de consola PSF de Linux font PSF pro konzolu Linuxu @@ -11052,17 +11506,18 @@ Linux PSF-konsolskrifttype Linux-PSF-Konsolenschrift Γραμματοσειρά κονσόλας PSF Linux - Linux PSF console font + Linux PSF console font PSF-tiparo de Linux-konzolo tipo de letra de consola Linux PSF Linux PSF kontsolako letra-tipoa Linux PSF -konsolifontti Linux PSF stýristøðs stavasnið police console Linux PSF + caratar console Linux PSF cló consóil Linux PSF tipo de fonte de consola Linux PSF גופן לקונסול מסוג Linux PSF - Linux PSF konzolno slovo + Linux PSF font konzole Linux PSF konzolos betűkészlet Typo de litteras console Linux PSF Fonta konsol Linux PSF @@ -11079,7 +11534,7 @@ poliça consòla Linux PSF Czcionka konsoli PSF Linux letra de consola Linux PSF - Fonte de console Linux PSF + Fonte de console Linux PSF Font consolă Linux PSF Консольный шрифт Linux PSF Písmo PSF pre konzolu Linuxu @@ -11087,38 +11542,40 @@ Lloj gërme për konsolë Linux PSF слова Линуксове ПСФ конзоле Linux PSF-konsoltypsnitt - Linux PSF konsol fontu + Linux PSF konsol yazı tipi консольний шрифт Linux PSF Phông chữ bàn giao tiếp PSF Linux - Linux PSF 控制台字体 - Linux PSF console 字型 + Linux PSF 控制台字体 + Linux PSF console 字型 - + Linux PSF console font (gzip-compressed) + Linux PSF-konsoleskriftipe (gzip-saamgepers) خط كونسول PSF لينكس (مضغوط-gzip) - Kansolny šryft PSF dla Linuksa (gzip-skampresavany) + Kansolny šryft PSF dla Linuksa (gzip-skampresavany) Шрифт — Linux PSF, компресиран с gzip lletra de consola PSF de Linux (amb compressió gzip) font PSF pro konzolu Linuxu (komprimace gzip) Linux PSF-konsolskrifttype (gzip-komprimeret) Linux-PSF-Konsolenschrift (gzip-komprimiert) Γραμματοσειρά κονσόλας PSF Linux (συμπιεσμένη με gzip) - Linux PSF console font (gzip-compressed) + Linux PSF console font (gzip-compressed) tipo de letra de consola Linux PSF (comprimido con gzip) Linux PSF kontsolako letra-tipoa (gzip-ekin konprimitua) Linux PSF -konsolifontti (gzip-pakattu) Linux PSF stýristøðs stavasnið (gzip-stappað) police console Linux PSF (compressée gzip) + caratar console Linux PSF (comprimût cun gzip) cló consóil Linux PSF (comhbhrúite le gzip) tipo de fonte de consola Linux PSF (comprimida con gzip) גופן למסוף מסוג Linux PSF (מכווץ ע״י gzip) - Linux PSF konzolno slovo (gzip sažeto) - Linux PSF konzolos betűkészlet (gzip-tömörítésű) + Linux PSF font konzolne (gzip komprimirano) + Linux PSF konzolos betűkészlet (gzip tömörítésű) Typo de litteras console Linux PSF (comprimite con gzip) Fonta konsol Linux PSF (terkompresi gzip) Carattere console Linux PSF (compresso con gzip) @@ -11133,7 +11590,7 @@ poliça consòla Linux PSF (compressat gzip) Czcionka konsoli PSF Linux (kompresja gzip) letra de consola Linux PSF (compressão gzip) - Fonte de console Linux PSF (compactada com gzip) + Fonte de console Linux PSF (compactada com gzip) Font consolă Linux PSF (compresie gzip) Консольный шрифт Linux PSF (сжатый gzip) Písmo PSF pre konzolu Linuxu (komprimované pomocou gzip) @@ -11141,20 +11598,21 @@ Lloj gërme për konsolë Linux PSF (komresuar me gzip) слова Линуксове ПСФ конзоле (запакована гзип-ом) Linux PSF-konsoltypsnitt (gzip-komprimerat) - Linux PSF konsol fontu (gzip ile sıkıştırılmış) + Linux PSF konsol yazı tipi (gzip ile sıkıştırılmış) консольний шрифт Linux PSF (стиснений gzip) Phông chữ bàn giao tiếp PSF Linux (đã nén gzip) - Linux PSF 控制台字体(gzip 压缩) - Linux PSF console 字型 (gzip 格式壓縮) + Linux PSF 控制台字体(gzip 压缩) + Linux PSF console 字型 (gzip 壓縮) PCF font + PCF-skriftipe خط PCF PCF yazı növü - Šryft PCF + Šryft PCF Шрифт — PCF lletra PCF font PCF @@ -11162,17 +11620,18 @@ PCF-skrifttype PCF-Schrift Γραμματοσειρά PCF - PCF font + PCF font PCF-tiparo tipo de letra PCF PCF letra-tipoa PCF-fontti PCF stavasnið police PCF + caratar PCF cló PCF tipo de letra PCF גופן PCF - PCF slovo + PCF font PCF-betűkészlet Typo de litteras PCF Fonta PCF @@ -11189,7 +11648,7 @@ poliça PCF Czcionka PCF letra PCF - Fonte PCF + Fonte PCF Font PCF Шрифт PCF Písmo PCF @@ -11197,14 +11656,14 @@ Gërma PCF ПЦФ слова PCF-typsnitt - PCF fontu + PCF yazı tipi шрифт PCF Phông chữ PCF - PCF 字体 - PCF 字型 + PCF 字体 + PCF 字型 - + @@ -11212,9 +11671,10 @@ OpenType font + OpenType-skriftipe خط OpenType OpenType yazı növü - Šryft OpenType + Šryft OpenType Шрифт — OpenType lletra OpenType font OpenType @@ -11222,17 +11682,18 @@ OpenType-skrifttype OpenType-Schrift Γραμματοσειρά OpenType - OpenType font + OpenType font OpenType-tiparo tipo de letra OpenType OpenType letra-tipoa OpenType-fontti OpenType stavasnið police OpenType + caratar OpenType cló OpenType tipo de fonte OpenType גופן של OpenType - OpenType slovo + OpenType font OpenType-betűkészlet Typo de litteras OpenType Fonta OpenType @@ -11249,7 +11710,7 @@ poliça OpenType Czcionka OpenType letra OpenType - Fonte OpenType + Fonte OpenType Font OpenType Шрифт OpenType Písmo OpenType @@ -11257,24 +11718,25 @@ Gërma OpenType слова Отворене Врсте OpenType-typsnitt - OpenType fontu + OpenType yazı tipi шрифт OpenType Phông chữ OpenType - OpenType 字体 - OpenType 字型 + OpenType 字体 + OpenType 字型 - + Speedo font + Speedo-skriftipe خط Speedo Speedo yazı növü - Šryft Speedo + Šryft Speedo Шрифт — Speedo lletra Speedo font Speedo @@ -11282,17 +11744,18 @@ Speedoskrifttype Speedo-Schrift Γραμματοσειρά Speedo - Speedo font + Speedo font Speedo-tiparo tipo de letra de Speedo Speedo letra-tipoa Speedo-fontti Speedo stavasnið police Speedo + caratar Speedo cló Speedo tipo de letra Speedo גופן של Speedo - Speedo slovo + Speedo font Speedo-betűkészlet Typo de litteras Speedo Fonta Speedo @@ -11309,7 +11772,7 @@ poliça Speedo Czcionka Speedo letra Speedo - Fonte Speedo + Fonte Speedo Font Speedo Шрифт Speedo Písmo Speedo @@ -11317,22 +11780,23 @@ Gërma Speedo Спидо слова Speedo-typsnitt - Speedo fontu + Speedo yazı tipi шрифт Speedo Phông chữ Speedo - Speedo 字体 - Speedo 字型 + Speedo 字体 + Speedo 字型 - + SunOS News font + SunOS News-skriftipe خط SunOS News SunOS News yazı növü - Šryft SunOS News + Šryft SunOS News Шрифт — SunOS News lletra News de SunOS font SunOS News @@ -11340,17 +11804,18 @@ SunOS News-skrifttype SunOS-News-Schrift Γραμματοσειρά SunOS News - SunOS News font + SunOS News font tiparo de SunOS News tipo de letra para NeWS de SunOS SunOs News letra-tipoa SunOS News -fontti SunOS News stavasnið police SunOS News + caratar SunOS News cló SunOS News tipo de letra SunOS News גופן של SunOS News - SunOS News slovo + SunOS News font SunOS News-betűkészlet Typo de litteras SunOS News Fonta SunOS News @@ -11367,7 +11832,7 @@ poliça SunOS News Czcionka SunOS News letra SunOS News - Fonte SunOS News + Fonte SunOS News Font SunOS News Шрифт SunOS News Písmo SunOS News @@ -11378,20 +11843,21 @@ SunOS News yazı tipi шрифт SunOS News Phông chữ SunOS News - SunOS News 字体 - SunOS News 字型 + SunOS News 字体 + SunOS News 字型 - - - + + + TeX font + TeX-skriftipe خط TeX TeX yazı növü - Šryft TeX + Šryft TeX Шрифт — TeX lletra TeX font TeX @@ -11399,17 +11865,18 @@ TeX-skrifttype TeX-Schrift Γραμματοσειρά TeX - TeX font + TeX font TeX-tiparo tipo de letra de TeX TeX letra-tipoa TeX-fontti TeX stavasnið police TeX + caratar TeX cló TeX tipo de letra de TeX גופן TeX - TeX slovo + TeX font TeX-betűkészlet Typo de litteras TeX Fonta TeX @@ -11426,7 +11893,7 @@ poliça TeX Czcionka TeX letra TeX - Fonte TeX + Fonte TeX Font TeX Шрифт TeX Písmo TeX @@ -11434,23 +11901,24 @@ Gërma TeX ТеКс слова TeX-typsnitt - TeX fontu + TeX yazı tipi шрифт TeX Phông chữ TeX - TeX 字体 - TeX 字型 + TeX 字体 + TeX 字型 - - - + + + TeX font metrics + TeX-skriftipeafmetings مقاييس خط TeX TeX yazı növü metrikləri - Metryka šryftu TeX + Metryka šryftu TeX Шрифтова метрика — TeX mètrica de lletra de TeX metrika fontu TeX @@ -11458,16 +11926,17 @@ TeX-skrifttypeinformation TeX-Schriftmetriken Μετρικά γραμματοσειράς TeX - TeX font metrics + TeX font metrics metrikoj de TeX-tiparo métricas tipográficas de TeX TeX letra-tipoen neurriak TeX-fonttimitat métriques de police TeX + metrichis caratar TeX meadarachtaí cló TeX Métricas de tipo de letra de TeX ממדי גופן של TeX - TeX mjere slova + Metrika TeX fonta TeX-betűmetrika Metricas de typo de litteras TeX Fonta metrik TeX @@ -11484,7 +11953,7 @@ metricas de poliça TeX Metryki czcionki TeX métricas de letra TeX - Métrica de fonte TeX + Métrica de fonte TeX Dimensiuni font TeX Метрика шрифта TeX Metrika písma TeX @@ -11495,35 +11964,37 @@ TeX yazı tipi ölçüleri метрики шрифту TeX Cách đo phông chữ TeX - TeX 字体规格 - TeX 字型描述檔 + TeX 字体规格 + TeX 字型描述檔 - - + + TrueType font + TrueType-skriftipe خط TrueType - Šryft TrueType + Šryft TrueType Шрифт — TrueType lletra TrueType font TrueType TrueType-skrifttype TrueType-Schrift Γραμματοσειρά TrueType - TrueType font + TrueType font TrueType-tiparo tipo de letra TrueType TrueType letra-tipoa TrueType-fontti TrueType stavasnið police Truetype + caratar TrueType cló TrueType tipo de letra TrueType גופן מסוג TrueType - TrueType slovo + TrueType font TrueType-betűkészlet Typo de litteras TrueType Fonta TrueType @@ -11540,7 +12011,7 @@ poliça Truetype Czcionka TrueType letra TrueType - Fonte TrueType + Fonte TrueType Font TrueType Шрифт TrueType Písmo TrueType @@ -11548,65 +12019,77 @@ Lloj gërme TrueType Трутајп слова Truetype-typsnitt - TrueType fontu + TrueType yazı tipi шрифт TrueType Phông chữ TrueType - TrueType 字体 - TrueType 字型 + TrueType 字体 + TrueType 字型 - - - + + + Font collection + Skriftipeversameling + Шрифтова колекция ccol·lecció de lletres kolekce fontů + Skrifttypesamling Schriftsammlung - Font collection + Font collection colección tipográfica + Letra-tipo bilduma Fonttikokoelma - Kolekcija slova + Collection de polices + colezion di caratars + bailiúchán clónna + Zbirka fontova Betűkészlet-gyűjtemény Koleksi fonta Raccolta di caratteri Қаріптер жинағы 글꼴 모음 Kolekcja czcionek - coleção de fontes + coleção de letras + coleção de fontes Коллекция шрифтов Zbierka písiem + Zbirka pisav Typsnittssamling + Yazı tipi derlemi збірка шрифтів - 字体集 - 字型集 + 字体集 + 字型集 TrueType XML font + TrueType XML-skriftipe خط TrueType XML - Šryft TrueType XML + Šryft TrueType XML Шрифт — TrueType XML lletra XML de TrueType font TrueType XML TrueType XML-skrifttype TrueType-XML-Schrift Γραμματοσειρά XML TrueType - TrueType XML font + TrueType XML font tipo de letra TrueType XML TrueType XML letra-tipoa TrueType-XML-fontti TrueType XML stavasnið police Truetype XML + caratar TrueType XML cló XML TrueType tipo de letra TrueType XML גופן XML מסוג TrueType - TrueType XML slovo + TrueType XML font TrueType XML betűkészlet Typo de litteras TrueType XML Fonta TrueType XML @@ -11622,7 +12105,7 @@ poliça Truetype XML Czcionka TrueType XML letra TrueType XML - Fonte TrueType XML + Fonte TrueType XML Font XML TrueType Шрифт TrueType XML Písmo TrueType XML @@ -11630,23 +12113,24 @@ Lloj gërme TrueType XML Трутајп ИксМЛ слова Truetype XML-typsnitt - TrueType XML fontu + TrueType XML yazı tipi шрифт TrueType XML Phông chữ XML TrueType - TrueType XML 字体 - TrueType XML 字型 + TrueType XML 字体 + TrueType XML 字型 - + V font + V-skriftipe خط V V yazı növü - Šryft V + Šryft V Шрифт — V lletra V font V @@ -11654,17 +12138,18 @@ V-skrifttype V-Schrift Γραμματοσειρά V - V font + V font V-tiparo tipo de letra V V letra-tipoa V-fontti V stavasnið police V + caratar V cló V tipo de letra V גופן של V - V slovo + V font V-betűkészlet Typo de litteras V Fonta V @@ -11681,7 +12166,7 @@ poliça V Czcionka V letra V - Fonte V + Fonte V Font V Шрифт V font Písmo V @@ -11689,34 +12174,36 @@ Gërmë V В слова V-typsnitt - V fontu + V yazı tipi V-шрифт Phông chữ V - V 字体 - V 字型 + V 字体 + V 字型 - + Adobe FrameMaker document + Adobe FrameMaker-dokument مستند أدوبي الصانع للإطارات Documentu d'Adobe FrameMaker - Dakument Adobe FrameMaker + Dakument Adobe FrameMaker Документ — Adobe FrameMaker document d'Adobe FrameMaker dokument Adobe FrameMaker Adobe FrameMaker-dokument Adobe-FrameMaker-Dokument Έγγραφο Adobe FrameMaker - Adobe FrameMaker document + Adobe FrameMaker document Dokumento de Adobe FrameMaker documento de Adobe FrameMaker Adobe FrameMaker-en dokumentua Adobe FrameMaker -asiakirja Adobe FrameMaker skjal document Adobe FrameMaker + document Adobe FrameMaker cáipéis Adobe FrameMaker documento de Adobe FrameMaker מסמך Adobe FrameMaker @@ -11737,7 +12224,7 @@ document Adobe FrameMaker Dokument Adobe FrameMaker documento Adobe FrameMaker - Documento do Adobe FrameMaker + Documento do Adobe FrameMaker Document Adobe FrameMaker Документ Adobe FrameMaker Dokument Adobe FrameMaker @@ -11748,17 +12235,17 @@ Adobe FrameMaker belgesi документ Adobe FrameMaker Tài liệu Adobe FrameMaker - Adobe FrameMaker 文档 - Adobe FrameMaker 文件 + Adobe FrameMaker 文档 + Adobe FrameMaker 文件 - - - - - - - + + + + + + + @@ -11766,20 +12253,21 @@ Game Boy ROM Game Boy ROM - Game Boy ROM + Game Boy ROM ROM — Game Boy ROM de Game Boy ROM pro Game Boy - Game Boy-rom + Game Boy-ROM Game Boy ROM Game Boy ROM - Game Boy ROM + Game Boy ROM NLM de Game Boy ROM de Game Boy Game Boy-eko ROMa Game Boy -ROM Game Boy ROM ROM Game Boy + ROM Game Boy ROM Game Boy ROM de Game Boy ROM של Game Boy @@ -11801,7 +12289,7 @@ ROM Game Boy Plik ROM konsoli Game Boy ROM Game Boy - ROM de Game Boy + ROM de Game Boy ROM Game Boy Game Boy ROM ROM pre Game Boy @@ -11812,12 +12300,12 @@ Game Boy ROM ППП Game Boy ROM Game Boy - Game Boy ROM - Game Boy ROM + Game Boy ROM + Game Boy ROM - - + + @@ -11825,15 +12313,17 @@ Game Boy Color ROM + ROM — Game Boy Color ROM de Game Boy Color ROM pro Game Boy Color - Game Boy Color ROM + Game Boy Color-ROM Game Boy Color ROM - Game Boy Colour ROM + Game Boy Colour ROM ROM de Game Boy Color Game Boy Color ROM Game Boy Color -ROM ROM Game Boy Color + ROM Game Boy Color ROM Game Boy Color ROM של Game Boy Color Game Boy Color ROM @@ -11843,19 +12333,19 @@ Game Boy Color ROM 게임보이 컬러 롬 Plik ROM konsoli Game Boy Color - ROM de Game Boy Color + ROM de Game Boy Color Game Boy Color ROM ROM pre Game Boy Color Гејм Бој РОМ боје Game Boy Color-rom Game Boy Color ROM ППП Game Boy Color - Game Boy Color ROM - Game Boy Color ROM + Game Boy Color ROM + Game Boy Color ROM - - + + @@ -11864,19 +12354,20 @@ Game Boy Advance ROM Game Boy Advance ROM - Game Boy Advance ROM + Game Boy Advance ROM ROM — Game Boy Advance ROM de Game Boy Advance ROM pro Game Boy Advance - Game Boy Advance-rom + Game Boy Advance-ROM Game Boy Advance ROM Game Boy Advance ROM - Game Boy Advance ROM + Game Boy Advance ROM ROM de Game Boy Advance Game Boy Advance-ko ROMa Game Boy Advance -ROM Game Boy Advance ROM ROM Game Boy Advance + ROM Game Boy Advance ROM Game Boy Advance ROM de Game Boy Advance ROM של Game Boy Advance @@ -11897,7 +12388,7 @@ ROM Game Boy Advance Plik ROM konsoli Game Boy Advance ROM Game Boy Advance - ROM de Game Boy Advance + ROM de Game Boy Advance ROM Game Boy Advance Game Boy Advance ROM ROM pre Game Boy Advance @@ -11908,19 +12399,26 @@ Game Boy Gelişmiş ROM розширений ППП Game Boy ROM Game Boy Advance - Game Boy Advance ROM - Game Boy Advance ROM + Game Boy Advance ROM + Game Boy Advance ROM Virtual Boy ROM + ROM — Virtual Boy ROM de Virtual Boy ROM pro Virtual Boy + Virtual Boy-ROM Virtual Boy ROM - Virtual Boy ROM + Virtual Boy ROM ROM de Virtual Boy + Virtual Boy ROM + Virtual Boy ROM + ROM Virtual Boy + ROM Virtual Boy + ROM Virtual Boy Virtual Boy ROM Virtual Boy ROM ROM Virtual Boy @@ -11928,33 +12426,36 @@ Virtual Boy ROM 버추얼보이 롬 Plik ROM konsoli Virtual Boy - ROM de Virtual Boy + ROM de Virtual Boy Virtual Boy ROM ROM pre Virtual Boy Virtual Boy-rom + Virtual Boy ROM ROM Virtual Boy - Virtual Boy ROM - Virtual Boy ROM + Virtual Boy ROM + Virtual Boy ROM GDBM database + GDBM-databasis قاعدة بيانات GDBM - Baza źviestak GDBM + Baza źviestak GDBM База от данни — GDBM base de dades GDBM databáze GDBM GDBM-database GDBM-Datenbank Βάση δεδομένων GDBM - GDBM database + GDBM database GDBM-datumbazo base de datos GDBM GDBM datu-basea GDBM-tietokanta GDBM dátustovnur base de données GDBM + base di dâts GDBM bunachar sonraí GDBM base de datos GDBM מסד נתונים GDBM @@ -11975,7 +12476,7 @@ banca de donadas GDBM Baza danych GDBM base de dados GDMB - Banco de dados GDBM + Banco de dados GDBM Bază de date GDBM База данных GDBM Databáza GDBM @@ -11983,37 +12484,39 @@ Bazë me të dhëna GDBM ГДБМ база података GDBM-databas - GDBM veritabanı + GDBM veri tabanı база даних GDBM Cơ sở dữ liệu GDBM - GDBM 数据库 - GDBM 資料庫 + GDBM 数据库 + GDBM 資料庫 GDBM GNU Database Manager - - - + + + - + Genesis ROM Genesis ROM - Genesis ROM + Genesis ROM ROM — Genesis ROM de Genesis ROM pro Genesis - Genesis-rom + Genesis-ROM Genesis ROM Genesis ROM - Genesis ROM + Genesis ROM Genesis-NLM ROM de Genesis (Mega Drive) Genesis-eko ROMa Genesis-ROM Genesis ROM ROM Mega Drive/Genesis + ROM Sega Mega Drive ROM Genesis ROM xenérica ROM מסוג Genesis @@ -12034,7 +12537,7 @@ ROM Mega Drive/Genesis Plik ROM konsoli Mega Drive ROM Mega Drive - ROM de Genesis (Mega Drive) + ROM de Genesis (Mega Drive) ROM Genesis Genesis ROM ROM pre Megadrive @@ -12045,30 +12548,35 @@ Genesis ROM ППП Genesis ROM Genesis - Genesis ROM - Genesis ROM + Genesis ROM + Genesis ROM - - - - + + + + + + - + Genesis 32X ROM + ROM — Genesis 32X ROM de Genesis 32X ROM pro Genesis 32X - Genesis 32X ROM + Genesis 32X-ROM Genesis 32X ROM - Genesis 32X ROM + Genesis 32X ROM ROM de Genesis 32X Genesis 32X ROM Genesis 32X -ROM ROM Genesis 32X + ROM Sega Mega Drive 32X ROM Genesis 32X ROM מסוג Genesis 32X Genesis 32X ROM @@ -12078,39 +12586,41 @@ Genesis 32X ROM 제네시스 32X 롬 Plik ROM konsoli Mega Drive 32X - ROM de Genesis 32X + ROM de Genesis 32X Genesis 32X ROM ROM pre Genesis 32X Џенезис 32X РОМ Mega Drive 32X-rom Genesis 32X ROM ППП Genesis 32X - Genesis 32X ROM - Genesis 32X ROM + Genesis 32X ROM + Genesis 32X ROM - + translated messages (machine-readable) + vertaalde boodskappe (masjienleesbaar) رسائل مترجمة (مقروءة آليا) - pierakładzienyja paviedamleńni (dla čytańnia kamputaram) + pierakładzienyja paviedamleńni (dla čytańnia kamputaram) Преведени съобщения — машинен формат missatges traduïts (llegible per màquina) přeložené zprávy (strojově čitelné) oversatte meddelelser (maskinlæsbare) Übersetzte Meldungen (maschinenlesbar) Μεταφρασμένα μηνύματα (για μηχανική ανάγνωση) - translated messages (machine-readable) + translated messages (machine-readable) tradukitaj mesaĝoj (maŝinlegebla) mensajes traducidos (legibles por máquinas) itzulitako mezuak (ordenagailuek irakurtzeko) käännetyt viestit (koneluettava) týdd boð (maskin-lesifør) messages traduits (lisibles par machine) + messaçs tradots (leibii de machine) teachtaireachtaí aistrithe (inléite ag meaisín) mensaxes traducidos (lexíbeis por máquinas) הודעות מתורגמות (מובן ע״י מכונה) @@ -12132,7 +12642,7 @@ messatges tradusits (legibles per maquina) Przetłumaczone komunikaty (czytelne dla komputera) mensagens traduzidas (leitura pelo computador) - Mensagens traduzidas (legível pelo computador) + Mensagens traduzidas (legível pelo computador) mesaje traduse (citite de calculator) Переводы сообщений (откомпилированые) Preložené správy (strojovo čitateľné) @@ -12143,64 +12653,53 @@ çevrilmiş iletiler (makine tarafından okunabilir) перекладені повідомлення (у машинній формі) thông điệp đã dịch (máy đọc được) - 已翻译消息(机读) - 翻譯訊息 (程式讀取格式) + 已翻译消息(机读) + 翻譯訊息 (程式讀取格式) - - + + - GTK+ Builder - constructor de GTK+ - GTK+ Builder - GTK+ Builder - GTK+ Builder - Δομητής GTK+ - GTK+ Builder - GTK+ Builder - GTK+ Builder - GTK+ Builder - GTK+ Builder - Tógálaí GTK+ - Construtor de GTK+ - בנייה של GTK+‎ - GTK+ Builder - GTK+ Builder - GTK+ Builder - GTK+ Builder - GTK+ Builder - GTK+ Builder - GTK+ Builder - GTK+ 빌더 - GTK+ būvētājs - GTK+ Builder - GTK+ Builder - Construtor GTK+ - GTK+ Builder - GTK+ Builder - GTK+ Builder - GTK+ Builder - ГТК+ Градитељ - GTK+ Builder - GTK+ İnşa Edici - GTK+ Builder - GTK+ Builder - GTK+ Builder + GTK+ Builder interface document + Интерфейс — GTK+ Builder + document d'interfície GTK+ Builder + GTK+ Builder-brugerflade-dokument + GTK+-Builder-Oberflächendokument + GTK+ Builder interface document + documento de interfaz de GTK Builder + GTK+ Builder interfaze dokumentua + GTK+ Builder -käyttöliittymän asiakirja + document d'interface GTK+ Builder + GTK+ Graditelj dokument sučelja + GTK+ Builder felületleíró dokumentum + Dokumen antarmuka GTK+ Builder + Documento interfaccia GTK+ Builder + GTK+ Builder интерфейс құжаты + GTK+ 빌더 인터페이스 문서 + Dokument interfejsu GTK Builder + Documento de interface do GTK+ Builder + Документ интерфейса GTK+ Builder + GTK+-Builder-gränssnittsdokument + GTK+ Builder arayüz belgesi + документ інтерфейсу GTK+ Builder + GTK+ Builder 界面文档 + GTK+ Builder 介面文件 - + Glade project + Glade-projek مشروع Glade Glade layihəsi - Prajekt Glade + Prajekt Glade Проект — Glade projecte de Glade projekt Glade @@ -12208,13 +12707,14 @@ Gladeprojekt Glade-Projekt Έργο Glade - Glade project + Glade project Glade-projekto proyecto de Glade Glade proiektua Glade-projekti Glade verkætlan projet Glade + progjet Glade tionscadal Glade proxecto de Glade מיזם Glade @@ -12235,7 +12735,7 @@ projècte Glade Projekt Glade projecto Glade - Projeto do Glade + Projeto do Glade Proiect Glade Проект Glade Projekt Glade @@ -12244,19 +12744,20 @@ Глејдов пројекат Glade-projekt Glade projesi - проект Glade + проєкт Glade Dự án Glade - Glade 工程 - Glade 專案 + Glade 工程 + Glade 專案 - + GnuCash financial data + GnuCash finansiële data معلومات GnuCash المالية Финансови данни — GnuCash dades financeres de GnuCash @@ -12264,12 +12765,13 @@ Finansielle data til GnuCash GnuCash-Finanzdaten Οικονομικά στοιχεία GnuCash - GnuCash financial data + GnuCash financial data datos financieros de GnuCash GnuCash finantzako datuak GnuCash-taloustiedot GnuCash fíggjarligar dátur données financières GnuCash + dâts finanziaris GnuCash sonraí airgeadúla GnuCash datos financeiros de GNUCash מידע כלכלי של GnuCash @@ -12287,7 +12789,7 @@ donadas financières GnuCash Dane finansowe GnuCash dados financeiros GnuCash - Dados financeiros do GnuCash + Dados financeiros do GnuCash Date financiare GnuCash Финансовые данные GnuCash Finančné údaje GnuCash @@ -12297,8 +12799,8 @@ GnuCash mali verisi фінансові дані GnuCash Dữ liệu tài chính GnuCash - GnuCash 财务数据 - GnuCash 財務資料 + GnuCash 财务数据 + GnuCash 財務資料 @@ -12306,21 +12808,23 @@ Gnumeric spreadsheet + Gnumeric-sigblad جدول Gnumeric - Raźlikovy arkuš Gnumeric + Raźlikovy arkuš Gnumeric Таблица — Gnumeric full de càlcul de Gnumeric sešit Gnumeric Gnumeric-regneark Gnumeric-Tabelle Λογιστικό φύλλο Gnumeric - Gnumeric spreadsheet + Gnumeric spreadsheet Gnumeric-kalkultabelo hoja de cálculo de Gnumeric Gnumeric kalkulu-orria Gnumeric-taulukko Gnumeric rokniark feuille de calcul Gnumeric + sfuei di calcul Gnumeric scarbhileog Gnumeric folla de cálculo de Gnumeric גליון עבודה Gnumeric @@ -12341,7 +12845,7 @@ fuèlh de calcul Gnumeric Arkusz Gnumeric folha de cálculo Gnumeric - Planilha do Gnumeric + Planilha do Gnumeric Foaie de calcul Gnumeric Электронная таблица Gnumeric Zošit Gnumeric @@ -12349,36 +12853,38 @@ Fletë llogaritjesh Gnumeric табела Гномовог бројевника Gnumeric-kalkylblad - Gnumeric çalışma sayfası + Gnumeric hesap çizelgesi ел. таблиця Gnumeric Bảng tính Gnumeric. - Gnumeric 电子表格 - Gnumeric 試算表 + Gnumeric 电子表格 + Gnumeric 試算表 - - + + Gnuplot document + Gnuplot-dokument مستند Gnuplot Documentu de Gnuplot - Dakument Gnuplot + Dakument Gnuplot Документ — Gnuplot document gnuplot dokument Gnuplot - Gnuplotdokument + Gnuplot-dokument Gnuplot-Dokument Έγγραφο Gnuplot - Gnuplot document + Gnuplot document Gnuplot-dokumento documento de Gnuplot Gnuplot dokumentua Gnuplot-asiakirja Gnuplot skjal document Gnuplot + document Gnuplot cáipéis Gnuplot documento de Gnuplot מסמך Gnuplot @@ -12398,7 +12904,7 @@ document Gnuplot Dokument Gnuplot documento Gnuplot - Documento do Gnuplot + Documento do Gnuplot Document Gnuplot Документ Gnuplot Dokument Gnuplot @@ -12409,8 +12915,8 @@ Gnuplot belgesi документ Gnuplot Tài liệu Gnuplot - Gnuplot 文档 - Gnuplot 文件 + Gnuplot 文档 + Gnuplot 文件 @@ -12420,20 +12926,21 @@ Graphite scientific graph مبيان الجرافيت العلمي - Navukovy hrafik Graphite + Navukovy hrafik Graphite Графика — Graphite gràfic científic Graphite vědecký graf Graphite Graphite videnskabelig graf Wissenschaftlicher Graphite-Graph Επιστημονικό γράφημα Graphite - Graphite scientific graph + Graphite scientific graph scienca grafikaĵo de Graphite gráfico científico de Graphite Graphite - grafiko zientifikoak Graphite- tieteellinen graafi Grapite vísindarlig ritmynd graphe Graphite scientific + grafic sientific Graphite graf eolaíochta Graphite gráfica científica de Graphite תרשים מדעי של Graphite @@ -12454,7 +12961,7 @@ graphe Graphite scientific Wykres naukowy Graphite gráfico científico Graphite - Gráfico científico do Graphite + Gráfico científico do Graphite Grafic științific Graphite Научная диаграмма Graphite Vedecký graf Graphite @@ -12465,28 +12972,29 @@ Graphite bilimsel grafiği наукова графіка Graphite Biểu đồ khoa học Graphite - Graphite 科学图形 - Graphite 科學圖表 + Graphite 科学图形 + Graphite 科學圖表 GTKtalog catalog كتالوج GTKtalog - Kataloh GTKtalog + Kataloh GTKtalog Каталог — Gtktalog catàleg de GTKtalog katalog GTKtalog GTKtalog-katalog GTKtalog-Katalog Κατάλογος GTKtalog - GTKtalog catalogue + GTKtalog catalogue katalogo de GTKtalog catálogo de GTKtalog Gtktalog katalogoa GTKtalog-luettelo GTKtalog skrá catalogue Gtktalog + catalic GTKtalog catalóg GTKtalog catálogo de GTKtalog קטלוג GTKtalog @@ -12508,7 +13016,7 @@ catalòg Gtktalog Katalog programu GTKtalog catálogo GTKtalog - Catálogo GTKtalog + Catálogo GTKtalog Catalog GTKalog Каталог GTKtalog Katalóg GTKtalog @@ -12516,38 +13024,40 @@ Katallog GTKtalog каталог ГТКталога GTKtalog-katalog - Gtktalog kataloğu + GTKtalog kataloğu каталог GTKtalog Phân loại GTKtalog - GTKtalog 目录 - GTKtalog 光碟目錄 + GTKtalog 目录 + GTKtalog 光碟目錄 - + TeX DVI document (gzip-compressed) + TeX DVI-dokument (gzip-saamgepers) مستند TeX DVI (مضغوط-gzip) Documentu Tex DVI (comprimíu en gzip) - Dakument TeX DVI (gzip-skampresavany) + Dakument TeX DVI (gzip-skampresavany) Документ — TeX DVI, компресиран с gzip document DVI de TeX (amb compressió gzip) dokument TeX DVI (komprimovaný pomocí gzip) TeX DVI-dokument (gzip-komprimeret) TeX-DVI-Dokument (gzip-komprimiert) Έγγραφο TeX DVI (συμπιεσμένο με gzip) - TeX DVI document (gzip-compressed) + TeX DVI document (gzip-compressed) documento DVI de TeX (comprimido con gzip) TeX DVI dokumentua (gzip-ekin konprimitua) TeX DVI -asiakirja (gzip-pakattu) TeX DVI skjal (gzip-stappað) document DVI TeX (compressé gzip) + document DVI TeX (comprimût cun gzip) cáipéis DVI TeX (comhbhrúite le gzip) documento DVI de TeX (comprimido con gzip) מסמך מסוג TeX DVI (מכווץ ע״י gzip) TeX DVI dokument (gzip sažet) - TeX DVI dokumentum (gzip-pel tömörítve) + TeX DVI dokumentum (gzip tömörítésű) Documento TeX DVI (comprimite con gzip) Dokumen TeX DVI (terkompresi gzip) Documento Tex DVI (compresso con gzip) @@ -12562,7 +13072,7 @@ document DVI TeX (compressat gzip) Dokument TeX DVI (kompresja gzip) documento TeX DVI (compressão gzip) - Documento DVI TeX (compactado com gzip) + Documento DVI TeX (compactado com gzip) Document TeX DVI (comprimat gzip) Документ TeX DVI (сжатый gzip) Dokument TeX DVI (komprimovaný pomocou gzip) @@ -12573,29 +13083,31 @@ TeX DVI belgesi (gzip ile sıkıştırılmış) документ TeX DVI (стиснений gzip) Tài liệu DVI TeX (đã nén gzip) - TeX DVI 文档(gzip 压缩) - TeX DVI 文件 (gzip 格式壓縮) + TeX DVI 文档(gzip 压缩) + TeX DVI 文件 (gzip 壓縮) Gzip archive + Gzip-argief أرشيف Gzip - Archiŭ gzip + Archiŭ gzip Архив — gzip arxiu gzip archiv gzip Gzip-arkiv Gzip-Archiv Συμπιεσμένο αρχείο Gzip - Gzip archive + Gzip archive Gzip-arkivo archivador Gzip Gzip artxiboa Gzip-arkisto Gzip skjalasavn archive gzip + archivi Gzip cartlann Gzip arquivo Gzip ארכיון Gzip @@ -12615,10 +13127,10 @@ archiu gzip Archiwum gzip arquivo Gzip - Pacote Gzip + Pacote Gzip Arhivă Gzip Архив GZIP - Archív gzip + Archív Gzip Datoteka arhiva Gzip Arkiv gzip Гзип архива @@ -12626,37 +13138,39 @@ Gzip arşivi архів gzip Kho nén gzip - Gzip 归档文件 - Gzip 封存檔 + Gzip 归档文件 + Gzip 封存檔 - + PDF document (gzip-compressed) + PDF-dokument (gzip-saamgepers) مستند PDF (مضغوط-gzip) Documentu PDF (comprimíu en gzip) - Dakument PDF (gzip-skampresavany) + Dakument PDF (gzip-skampresavany) Документ — PDF, компресиран с gzip document PDF (amb compressió gzip) dokument PDF (komprimovaný pomocí gzip) PDF-dokument (gzip-komprimeret) PDF-Dokument (gzip-komprimiert) Έγγραφο PDF (συμπιεσμένο με gzip) - PDF document (gzip-compressed) + PDF document (gzip-compressed) documento PDF (comprimido con gzip) PDF dokumentua (gzip-ekin konprimitua) PDF-asiakirja (gzip-pakattu) PDF skjal (gzip-stappað) document PDF (compressé gzip) + document PDF (comprimût cun gzip) cáipéis PDF (comhbhrúite le gzip) documento PDF (comprimido en gzip) מסמך PDF (מכווץ ע״י gzip) PDF dokument (gzip sažet) - PDF dokumentum (gzip-tömörítésű) + PDF dokumentum (gzip tömörítésű) Documento PDF (comprimite con gzip) Dokumen PDF (terkompresi gzip) Documento PDF (compresso con gzip) @@ -12671,7 +13185,7 @@ document PDF (compressat gzip) Dokument PDF (kompresja gzip) documento PDF (compressão gzip) - Documento PDF (compactado com gzip) + Documento PDF (compactado com gzip) Document PDF (comprimat gzip) Документ PDF (сжатый gzip) Dokument PDF (komprimovaný pomocou gzip) @@ -12682,35 +13196,37 @@ PDF belgesi (gzip ile sıkıştırılmış) документ PDF (стиснений gzip) Tài liệu PDF (đã nén gzip) - PDF 文档(gzip 压缩) - PDF 文件 (gzip 格式壓縮) + PDF 文档(gzip 压缩) + PDF 文件 (gzip 壓縮) PostScript document (gzip-compressed) + PostScript-dokument (gzip-saamgepers) مستند PostScript (مضغوط-gzip) Documentu PostScript (comprimíu en gzip) - Dakument PostScript (gzip-skampresavany) + Dakument PostScript (gzip-skampresavany) Документ — PostScript, компресиран с gzip document PostScript (amb compressió gzip) dokument PostScript (komprimovaný pomocí gzip) PostScript-dokument (gzip-komprimeret) PostScript-Dokument (gzip-komprimiert) Έγγραφο PostScript (συμπιεσμένο με gzip) - PostScript document (gzip-compressed) + PostScript document (gzip-compressed) PostScript-dokumento (kunpremita per gzip) documento PostScript (comprimido con gzip) PostScript dokumentua (gzip-konprimitua) PostScript-asiakirja (gzip-pakattu) PostScript skjal (gzip-stappað) document PostScript (compressé gzip) + document PostScript (comprimût cun gzip) cáipéis PostScript (comhbhrúite le gzip) documento PostScript (comprimido con gzip) מסמך PostScript (מכוות ע״י gzip) PostScript dokument (gzip sažet) - PostScript-dokumentum (gzip-pel tömörítve) + PostScript-dokumentum (gzip tömörítésű) Documento PostScript (comprimite con gzip) Dokumen PostScript (terkompresi gzip) Documento PostScript (compresso con gzip) @@ -12724,9 +13240,9 @@ PostScript-document (ingepakt met gzip) PostScript-dokument (pakka med gzip) document PostEscript (compressat gzip) - Dokument Postscript (kompresja gzip) + Dokument PostScript (kompresja gzip) documento PostScript (compressão gzip) - Documento PostScript (compactado com gzip) + Documento PostScript (compactado com gzip) Document PostScript (comprimat gzip) Документ PostScript (сжатый gzip) Dokument PostScript (komprimovaný pomocou gzip) @@ -12737,18 +13253,19 @@ PostScript belgesi (gzip ile sıkıştırılmış) документ PostScript (стиснене gzip) Tài liệu PostScript (đã nén gzip) - PostScript 文档(gzip 压缩) - PostScript 文件 (gzip 格式壓縮) + PostScript 文档(gzip 压缩) + PostScript 文件 (gzip 壓縮) HDF document + HDF-dokument مستند HDF Documentu HDF HDF sənədi - Dakument HDF + Dakument HDF Документ — HDF document HDF dokument HDF @@ -12756,13 +13273,14 @@ HDF-dokument HDF-Dokument Έγγραφο HDF - HDF document + HDF document HDF-dokumento documento HDF HDF dokumentua HDF-asiakirja HDF skjal document HDF + document HDF cáipéis HDF documento HDF מסמך HDF @@ -12783,7 +13301,7 @@ document HDF Dokument HDF documento HDF - Documento HDF + Documento HDF Document HDF Документ HDF Dokument HDF @@ -12794,14 +13312,14 @@ HDF belgesi документ HDF Tài liệu HDF - HDF 文档 - HDF 文件 + HDF 文档 + HDF 文件 HDF Hierarchical Data Format - - + + @@ -12811,16 +13329,19 @@ IFF file + IFF-lêer + Пакет — IFF fitxer IFF soubor IFF IFF-fil IFF-Datei Αρχείο IFF - IFF file + IFF file archivo IFF IFF fitxtegia IFF-tiedosto fichier IFF + file IFF comhad IFF Ficheiro IFF קובץ IFF @@ -12836,7 +13357,7 @@ fichièr IFF Plik IFF ficheiro IFF - Arquivo IFF + Arquivo IFF Файл IFF Súbor IFF Datoteka IFF @@ -12844,31 +13365,32 @@ IFF-fil IFF dosyası файл IFF - IFF 文件 - IFF 檔案 + IFF 文件 + IFF 檔案 IFF Interchange File Format - + iPod firmware برنامج عتاد الـiPod - Firmware iPod - Фърмуер за iPod + Firmware iPod + Фърмуер — iPod microprogramari d'iPod firmware iPod iPod-styreprogram iPod-Firmware Υλικολογισμικό iPod - iPod firmware + iPod firmware iPod-mikroprogramaro firmware de iPod iPod firmwarea iPod-laiteohjelmisto iPod fastbúnaður firmware iPod + firmware iPod dochtearraí iPod firmware de iPod קושחת ipod @@ -12889,7 +13411,7 @@ firmware iPod Oprogramowanie wewnętrzne iPod firmware iPod - Firmware do iPod + Firmware do iPod Firmware iPod Микропрограмма iPod Firmware iPod @@ -12897,32 +13419,34 @@ Firmware iPod ајПод-ов уграђени fast iPod-program - iPod üretici yazılımı + iPod donanım yazılımı мікропрограма iPod phần vững iPod - iPod 固件 - iPod 韌體 + iPod 固件 + iPod 韌體 - + Java archive + Java-argief أرشيف Java - Archiŭ Java + Archiŭ Java Архив — Java arxiu de Java archiv Java - Javaarkiv + Java-arkiv Java-Archiv Συμπιεσμένο αρχείο Java - Java archive + Java archive Java-arkivo archivador Java Java artxiboa Java-arkisto Java skjalasavn archive Java + archivi Java cartlann Java arquivo Java ארכיון Java @@ -12943,7 +13467,7 @@ archiu Java Archiwum Java arquivo Java - Pacote Java + Pacote Java Arhivă Java Архив Java Archív Java @@ -12954,8 +13478,8 @@ Java arşivi архів Java Kho nén Java - Java 归档文件 - Java 封存檔 + Java 归档文件 + Java 封存檔 @@ -12964,21 +13488,23 @@ Java class + Java-klas صنف java - Klasa Java - Клас на Java + Klasa Java + Клас — Java classe de Java třída Java - Javaklasse + Java-klasse Java-Klasse Κλάση Java - Java class + Java class Java-klaso clase de Java Java-ko klasea Java-luokka Java flokkur classe Java + classe Java aicme Java clase de Java מחלקת Java @@ -12999,7 +13525,7 @@ classa Java Klasa Java classe Java - Classe Java + Classe Java Clasă Java Класс Java Trieda Java @@ -13010,10 +13536,10 @@ Java sınıfı клас Java Hạng Java - Java 类 - Java class + Java 类 + Java class - + @@ -13022,23 +13548,90 @@ + + Groovy source code + Изходен код — Groovy + codi font en Groovy + Groovy-kildekode + Groovy-Quelltext + Groovy source code + código fuente en Groovy + Groovy iturburu-kodea + Groovy-lähdekoodi + code source Groovy + Groovy izvorni kôd + Groovy forráskód + Kode sumber Groovy + Codice sorgente Groovy + Groovy бастапқы коды + 그루비 소스 코드 + Kod źródłowy Groovy + Código-fonte Groovy + Исходный код Groovy + Groovy-källkod + Groovy kaynak kodu + вихідний код мовою Groovy + Groovy 源代码 + Groovy 原始碼 + + + + + + + + + Gradle scripts + Gradle-skrippe + Скрипт — Gradle + scripts Gradle + skript Gradle + Gradle-programmer + Gradle-Skripte + Gradle scripts + secuencias de órdenes de Gradle + Gradle script-ak + Gradle scriptit + scripts Gradle + script Gradle + scripteanna Gradle + Gradle skripta + Gradle-parancsfájl + Skrip Gradle + Script Gradle + Gradle сценарийлері + Gradle 스크립트 + Skrypty Gradle + Scripts Gradle + Скрипты Gradle + Skripty Gradle + Gradle-skript + Gradle betikleri + скрипти Gradle + Gradle 脚本 + Gradle 指令稿 + + + JNLP file + JNLP-lêer ملف JNLP - Fajł JNLP - Файл — JNLP + Fajł JNLP + Стартер — JNLP fitxer JNLP soubor JNLP JNPL-fil JNLP-Datei Αρχείο JNLP - JNLP file + JNLP file JNLP-dosiero archivo JNPL JNLP fitxategia JNLP-tiedosto JNLP fíla fichier JNLP + file JNLP comhad JNLP ficheiro JNLP קובץ JNLP @@ -13058,7 +13651,7 @@ fichièr JNLP Plik JNLP ficheiro JNLP - Arquivo JNLP + Arquivo JNLP Fișier JNLP Файл JNLP Súbor JNLP @@ -13069,15 +13662,15 @@ JNLP dosyası файл JNLP Tập tin JNLP - JNLP 文件 - JNLP 檔案 + JNLP 文件 + JNLP 檔案 JNLP Java Network Launching Protocol - + @@ -13086,15 +13679,16 @@ Ключодържател — Java magatzem de claus de Java úložiště klíčů Java - Javanøglelager + Java-nøglelager Java-Schlüsselbund Χώρος αποθήκευσης κλειδιών Java - Java keystore + Java keystore almacén de claves de Java Java-ren gako-biltegia Java-avainvarasto Java lyklagoymsla stockage de clés Java + archivi di clâfs Java eochairstór Java almacén de chaves de Java אחסון מפתחות של Java @@ -13112,19 +13706,19 @@ emmagazinatge de claus Java Baza kluczy Java armazém de chaves Java - Keystore de Java + Keystore de Java Stocare chei Java Хранилище ключей Java Úložisko kľúčov Java Datoteka tipkovne razporeditve Java смештај кључа Јаве Java-nyckellager - Java deposu + Java anahtar deposu сховище ключів Java - Java 密钥库 - Java 金鑰儲存 + Java 密钥库 + Java 金鑰儲存 - + @@ -13139,12 +13733,13 @@ Java JCE-nøglelager Java JCE-Schlüsselbund Αποθήκη κλειδιών Java JCE - Java JCE keystore + Java JCE keystore almacén de claves JCE de Java Java JCE-ren gako-biltegia Java JCE -avainvarasto Java JCE lyklagoymsla stockage de clés Java JCE + archivi di clâfs JCE Java eochairstór Java JCE almacén de chves JCE de Java אחסון מפתחות של Java JCE @@ -13162,40 +13757,41 @@ emmagazinatge de claus Java JCE Baza kluczy Java JCE armazém de chaves JavaJCE - Keystore JCE do Java + Keystore JCE do Java Stocare chei Java JCE Хранилище ключей Java JCE Úložisko kľúčov Java JCE Datoteka tipkovne razporeditve Java JCE смештај ЈЦЕ кључа Јаве Java JCE-nyckellager - Java JCE deposu + Java JCE anahtar deposu сховище ключів JCE Java - Java JCE 密钥库 - Java JCE 金鑰儲存 + Java JCE 密钥库 + Java JCE 金鑰儲存 JCE Java Cryptography Extension - + Pack200 Java archive أرشيف Pack200 Java - Archiŭ Pack200 Java + Archiŭ Pack200 Java Архив — Java Pack200 arxiu de Java en Pack200 archiv Java Pack200 Pack200 Java-arkiv Pack200-Java-Archiv Συμπιεσμένο αρχείο Java Pack200 - Pack200 Java archive + Pack200 Java archive archivador Pack200 Java Pack2000 Java artxiboa Pack200-Java-arkisto Pack200 Java skjalasavn archive Java Pack200 + archivi Java Pack200 cartlann Java Pack200 arquivo Pack200 Java ארכיון מסוג Pack200 Java @@ -13215,7 +13811,7 @@ archiu Java Pack200 Archiwum Java Pack200 arquivo Java Pack200 - Pacote Java Pack200 + Pacote Java Pack200 Arhivă Java Pack2000 Архив Java Pack200 Archív Java Pack200 @@ -13226,31 +13822,33 @@ Pack200 Java arşivi архів Java Pack200 Kho nén Java Pack200 - Pack200 Java 归档文件 - Pack200 Java 封存檔 + Pack200 Java 归档文件 + Pack200 Java 封存檔 - + JavaScript program + JavaScript-program برنامج جافاسكربت - Prahrama JavaScript + Prahrama JavaScript Програма на JavaScript programa JavaScript program v JavaScriptu JavaScript-program JavaScript-Programm Πρόγραμμα JavaScript - JavaScript program + JavaScript program JavaScript-programo programa en JavaScript JavaScript programa JavaScript-ohjelma JavaScript forrit programme JavaScript + program JavaScript ríomhchlár JavaScript programa JavaScript תכנית JavaScript @@ -13271,7 +13869,7 @@ programa JavaEscript Pogram JavaScript programa JavaScript - Programa JavaScript + Programa JavaScript Program JavaScript Программа JavaScript Program jazyka JavaScript @@ -13282,23 +13880,23 @@ JavaScript programı програма мовою JavaScript Chương trình JavaScript - JavaScript 程序 - JavaScript 程式 + JavaScript 程序 + JavaScript 程式 - - - - - - - - - - + + + + + + + + + + @@ -13306,17 +13904,20 @@ JSON document + JSON-dokument Documentu JSON + Документ — JSON document JSON dokument JSON JSON-dokument JSON-Dokument Έγγραφο JSON - JSON document + JSON document documento JSON JSON dokumentua JSON-asiakirja document JSON + document JSON cáipéis JSON Documento JSON מסמך JSON @@ -13330,7 +13931,7 @@ document JSON Dokument JSON documento JSON - Documento JSON + Documento JSON Документ JSON Dokument JSON Dokument JSON @@ -13338,8 +13939,8 @@ JSON-dokument JSON belgesi документ JSON - JSON 文档 - JSON 文件 + JSON 文档 + JSON 文件 JSON JavaScript Object Notation @@ -13348,17 +13949,20 @@ JRD document + JRD-dokument Documentu JRD + Документ — JRD document JRD dokument JRD JRD-dokument JRD-Dokument Έγγραφο JRD - JRD document + JRD document documento JRD JRD dokumentua JRD-asiakirja document JRD + document JRD cáipéis JRD מסמך JRD JRD dokument @@ -13371,15 +13975,16 @@ document JRD Dokument JRD doxumento JRD - Documento JRD + Documento JRD Документ JRD Dokument JRD + Dokument JRD ЈРД документ JRD-dokument JRD belgesi документ JRD - JRD 文档 - JRD 文件 + JRD 文档 + JRD 文件 JRD JSON Resource Descriptor @@ -13388,14 +13993,17 @@ JSON patch + Кръпка — JSON pedaç de JSON cesta JSON JSON-rettelse JSON-Patch - JSON patch + JSON patch parche en JSON JSON adabakia + JSON-paikkatiedosto correctif JSON + blec JSON paiste JSON טלאי JSON JSON zakrpa @@ -13408,15 +14016,15 @@ correctiu JSON Łata JSON patch JSON - Patch JSON + Patch JSON Патч JSON Záplata JSON ЈСОН закрпа JSON patch JSON yaması латка JSON - JSON 补丁 - JSON 修補檔 + JSON 补丁 + JSON 修補檔 JSON JavaScript Object Notation @@ -13426,16 +14034,18 @@ JSON-LD document Documentu JSON-LD + Документ — JSON-LD document JSON-LD dokument JSON-LD JSON-LD-dokument JSON-LD-Dokument Έγγραφο JSON-LD - JSON-LD document + JSON-LD document documento JSON-LD JSON-LD dokumentua JSON-LD-asiakirja document JSON-LD + document JSON-LD cáipéis JSON-LD מסמך JSON-LD JSON-LD dokument @@ -13448,15 +14058,16 @@ Document JSON-LD Dokument JSON-LD documento JSON-LD - Documento JSON-LD + Documento JSON-LD Документ JSON-LD Dokument JSON-LD + Dokument JSON-LD ЈСОН-ЛД документ JSON-LD-dokument JSON-LD belgesi документ JSON-LD - JSON-LD 文档 - JSON-LD 文件 + JSON-LD 文档 + JSON-LD 文件 JSON-LD JavaScript Object Notation for Linked Data @@ -13464,55 +14075,55 @@ - Jupyter Notebook - llibreta de notes de Jupyter - sešit Jupyter - Jupyter Notebook - Jupyter-Dokument - Jupyter Notebook - libreta de Jupyter - Jupyter Notebook + Jupyter notebook document + Скицник — Jupyter + document de llibreta de notes de Jupyter + Jupyter notebook-dokument + Jupyter-Notebook-Dokument + Jupyter notebook document + documento de cuaderno de Jupyter + Jupyter notebook dokumentua + Jupyter notebook -asiakirja carnet de notes Jupyter - Leabhar nótaí Jupyter - מחברת Jupyter - Jupyter bilježnica - Jupyter notesz - Notebook Jupyter - Notebook Jupyter - Jupyter Notebook - Jupyter 노트북 - Notatnik Jupyter - Bloco de Notas Jupyter - Jupyter Notebook - Zošit programu Jupyter - Џупитер бележница - Jupyter Notebook-dokument - Jupyter Notebook - записник Jupyter - Jupyter 笔记本 - Jupyter 記事本 + Jupyter notebook dokument + Jupyter munkafüzet dokumentum + Dokumen Jupyter notebook + Documento notebook Jupyter + Jupyter блокнот құжаты + 주피터 노트북 문서 + Dokument notatnika Jupyter + Documento Jupyter Notebook + Документ Jupyter notebook + Jupyter-anteckningsboksdokument + Jupyter notebook belgesi + документ нотатника Jupyter + Jupyter 笔记本文档 + Jupyter 記事本文件 - - + + CoffeeScript document + CoffeeScript-dokument Documentu de CoffeScript + Документ — CoffeeScript document CoffeeScript dokument CoffeeScript CoffeeScript-dokument CoffeeScript-Dokument Έγγραφο CoffeeScript - CoffeeScript document + CoffeeScript document documento en CoffeeScript CoffeeScript dokumentua CoffeeScript-asiakirja document CoffeeScript + document CoffeeScript cáipéis CoffeeScript מסמך CoffeeScript CoffeeScript dokument @@ -13525,36 +14136,39 @@ Document CoffeScript Dokument CoffeeScript documento CoffeeScript - Documento CoffeeScript + Documento CoffeeScript Документ CoffeeScript Dokument CoffeeScript + Dokument CoffeeScript Кофи скрипт документ CoffeeScript-dokument CoffeeScript belgesi документ CoffeeScript - CoffeeScript 文档 - CoffeeScript 文件 + CoffeeScript 文档 + CoffeeScript 文件 JBuilder project + JBuilder-projek مشروع JBuilder - Prajekt JBuilder + Prajekt JBuilder Проект — JBuilder projecte de JBuilder projekt JBuilder JBuilder-projekt JBuilder-Projekt Εργο JBuilder - JBuilder project + JBuilder project JBuilder-projekto proyecto de JBuilder JBuilder proiektua JBuilder-projekti JBuilder verkætlan projet JBuilder + progjet JBuilder tionscadal JBuilder proxecto de JBuilder מיזם JBuilder @@ -13575,7 +14189,7 @@ projècte JBuilder Projekt JBuilder projecto JBuilder - Projeto do JBuilder + Projeto do JBuilder Proiect JBuilder Проект JBuilder Projekt JBuilder @@ -13584,31 +14198,33 @@ пројекат ЈГрадитеља JBuilder-projekt JBuilder projesi - проект JBuilder + проєкт JBuilder Dự án JBuilder - JBuilder 工程 - JBuilder 專案 + JBuilder 工程 + JBuilder 專案 Karbon14 drawing + Karbon14-tekening تصميم Karbon14 - Rysunak Karbon14 + Rysunak Karbon14 Чертеж — Karbon14 dibuix de Karbon14 kresba Karbon14 Karbon14-tegning Karbon14-Zeichnung Σχέδιο Karbon14 - Karbon14 drawing + Karbon14 drawing Karbon14-grafikaĵo dibujo de Karbon14 Karbon14 marrazkia Karbon14-piirros Karbon14 tekning dessin Karbon14 + dissen Karbon14 líníocht Karbon14 debuxo de Karbon14 ציור Karbon14 @@ -13629,7 +14245,7 @@ dessenh Karbon14 Rysunek Karbon14 desenho Karbon14 - Desenho do Karbon14 + Desenho do Karbon14 Desen Karbon14 Рисунок Karbon14 Kresba Karbon14 @@ -13640,18 +14256,18 @@ Karbon14 çizimi малюнок Karbon14 Bản vẽ Karbon14 - Karbon14 绘图 - Karbon14 繪圖 + Karbon14 绘图 + Karbon14 繪圖 - - - + + + - - - + + + @@ -13659,21 +14275,23 @@ KChart chart + KChart-grafiek رسم بياني KChart - Hrafik KChart + Hrafik KChart Диаграма — KChart diagrama de KChart graf Chart KChart-diagram KChart-Diagramm Γράφημα KChart - KChart chart + KChart chart KChart-diagramo gráfico de KChart KChart diagrama KChart-kaavio KChart strikumynd graphique KChart + grafic KChart cairt KChart gráfica de KChart תרשים KChart @@ -13694,7 +14312,7 @@ grafic KChart Wykres KChart gráfico KChart - Gráfico do KChart + Gráfico do KChart Diagramă KChart Диаграмма KChart Graf KChart @@ -13705,224 +14323,159 @@ KChart çizgesi діаграма KChart Sơ đồ KChart - KChart 图表 - KChart 圖表 + KChart 图表 + KChart 圖表 - - - + + + - - - + + + - Kexi settings for database server connection - إعدادات Kexi للإتصال بخادم قاعدة البيانات - Връзка към база от данни — Kexi - ajusts de Kexi per a la connexió al servidor de bases de dades - nastavení Kexi ke spojení s databázovým serverem - Kexiopsætning til forbindelsen for databaseserveren - Kexi-Einstellungen für Verbindung zum Datenbankserver - Ρυθμίσεις Kexi για σύνδεση με εξυπηρετητή βάσεων δεδομένων - Kexi settings for database server connection - configuración de Kexi para conectar con un servidor de bases de datos - Kexi-ren ezarpenak datu-basearen zerbitzariarekin konektatzeko - Kexi-tietokantayhteysasetukset - Kexi stillingar fyri dátustovnsambætara sambinding - paramètres Kexi pour connexion au serveur de base de données - socruithe Kexi do cheangal le freastalaí bunachair sonraí - configuración de Kexi para conexión con servidor de base de datos - הגדרות של Kexi עבור חיבור שרת למסד נתונים - Kexi postavke za povezeivanje baza podataka poslužitelja - Kexi beállítások adatbáziskiszolgáló-kapcsolathoz - Configuration Kexi pro connexion al servitor de base de datos - Tatanan Kexi bagi koneksi server basis data - Impostazioni Kexi per connessione a server di database - データベースサーバ接続用の Kexi 設定 - Дерекқор серверге байланыс Kexi баптаулары - Kexi 데이터베이스 서버 연결 설정 - Kexi duomenų bazės ryšio su serveriu parametrai - Kexi iestatījumi datubāzes servera savienojumam - Kexi instellingen voor database server connectie - paramètres Kexi per connexion al servidor de banca de donadas - Ustawienia Kexi dla połączenia serwera bazy danych - definições Kexi para ligação de servidor de base de dados - Configurações do Kexi para conexão a servidor de banco de dados - Configurări Kexi pentru conexiunea la serverul de baze de date - Параметры Kexi для подключения к серверу БД - Nastavenia Kexi pre pripojenie k databázovému serveru - Strežniška povezava do nastavitvene datoteke Kexi. - подешавања Кексија за везу са сервером базе података - Kexi-inställningar för anslutning till databasserver - Veritabanı sunucu bağlantısı için Kexi ayarları - параметри Kexi для встановлення з’єднання з сервером бази даних - Kexi 数据库服务器连接设置 - Kexi 設定值 (資料庫伺服器連線用) + Kexi settings + Настройки — Kexi + ajusts de Kexi + Kexi-indstillinger + Kexi-Einstellungen + Kexi settings + configuración de Kexi + Kexi ezarpenak + Kexi-asetukset + réglages Kexi + Kexi postavke + Kexi beállítások + Pengaturan Kexi + Impostazioni Kexi + Kexi баптаулары + Kexi 설정 + Ustawienia Kexi + Configurações do Kexi + Файл настроек Kexi + Nastavenia Kexi + Nastavitve Kexi + Kexi-inställningar + Kexi ayarları + параметри Kexi + Kexi 设置 + Kexi 設定 - shortcut to Kexi project on database server - اختصار لمشروع Kexi على خادم قاعدة بيانات - Връзка към проект — Kexi - drecera al projecte de Kexi en un servidor de base de dades - zástupce projektu Kexi na databázovém serveru - genvej til Kexiprojekt på databaseserver - Schnellzugriff zum Kexi-Projekt auf dem Datenbankserver - Συντόμευση σε έργο Kexi στον εξυπηρετητή βάσης δεδομένων - shortcut to Kexi project on database server - acceso directo a proyecto Kexi en el servidor de bases de datos - lasterbidea datu-basearen zerbitzariko Kexi proiekturako - pikakuvake tietokantapalvelimella olevaan Kexi-projektiin - snarvegur til Kexi verkætlan á dátustovnsambætara - raccourci vers projet Kexi sur serveur de base de données - aicearra go tionscadal Kexi ar fhreastalaí bunachair sonraí - acceso directo a proxecto Kexi no servidor de bases de datos - קיצור דרך לפרוירט Kexi בשרת נתונים - Prečac do Kexi projekta na poslužitelju baze podataka - indítóikon adatbázis-kiszolgálón lévő Kexi projektre - Ligamine a projecto Kexi in servitor de base de datos - pintasan ke projek Kexi pada server basis data - Scorciatoia a progetto Kexi su server di database - データベースサーバの Kexi プロジェクトへのショートカット - дерекқор серверіндегі Kexi жобасына сілтеме - 데이터베이스 서버의 Kexi 프로젝트 바로 가기 - nuoroda į Kexi projektą duomenų bazės serveryje - īsceļš uz Kexi projektu datubāzes serverī - shortcut naar Kexi project op database server - acorchi cap a projècte Kexi sus servidor de banca de donadas - Skrót do projektu Kexi na serwerze bazy danych - atalho para projeto Kexi em servidor de base de dados - Atalho para projeto Kexi no servidor de banco de dados - scurtătură către un proiect Kexi pe un server de baze de date - Ссылка на проект Kexi на сервере БД - Zástupca projektu Kexi na databázovom serveri - bližnjica do Kexi projekta na podatkovnem strežniku - пречица до пројекта Кексија на серверу базе података - genväg till Kexi-projekt på databasserver - veritabanı üzerindeki Kexi projesine kısayol - скорочення для проекту Kexi на сервері бази даних - 数据库服务器上 Kexi 项目的快捷方式 - 資料庫伺服器上 Kexi 專案的捷徑 + Kexi shortcut + Ускорител — Kexi + drecera de Kexi + Kexi-genvej + Kexi-Verweis + Kexi shortcut + atajo de Kexi + Kexi lasterbidea + KEXI-pikakuvake + raccourci Kexi + Kexi prečac + Kexi parancsiko + Pintasan Kexi + Scorciatoia Kexi + Kexi жарлығы + Kexi 바로 가기 + Skrót Kexi + Atalho do Kexi + Ссылка Kexi + Odkaz Kexi + Kexi-genväg + Kexi kısayolu + скорочення Kexi + Kexi 快捷方式 + Kexi 捷徑 - Kexi database file-based project - مشروع قاعدة بيانات Kexi يعتمد على ملفات - Проект с база от данни — Kexi - projecte basat en fitxer de base de dades de Kexi - projekt založený na souboru databáze Kexi - Filbaseret projekt for Kexidatabase - Dateibasiertes Kexi-Datenbankprojekt - Έργο βάσης δεδομένων Kexi βασισμένο σε αρχεία - Kexi database file-based project - proyecto de base de datos basada en archivos de Kexi - Kexi datu-baseko fitxategian oinarritutako proiektua - Kexin tiedostoperustainen tietokantaprojekti - Kexi dátustovns fílugrundað verkætlan - projet de base de données Kexi en mode fichier - tionscadal bunachair sonraí Kexi bunaithe ar chomhaid - proxecto baseado no ficheiro-base de datos Kexi - מיזם מסד נתונים מבוסס-קובץ של Kexi - Kexi baza podataka datotekom temeljen projekt - Kexi adatbázisfájl-alapú projekt - Projecto de base de datos Kexi in modo file - Projek berbasis berkas basis data Kexi - Progetto su file di database Kexi - Kexi データベース ファイルベースプロジェクト - Файл негізінде жоба үшін Kexi дерекқоры - Kexi 데이터베이스 파일 기반 프로젝트 - Kexi duomenų bazės failo tipo projektas - Kexi datubāzes datnes balstīts projekts - Kexi database bestandgebaseerd project - projècte de banca de donadas Kexi en mòde fichièr - Projekt bazy danych Kexi na podstawie plików - projeto Kexi em base de dados baseada em ficheiros - Projeto de banco de dados baseado em arquivo do Kexi - Proiect bazat pe fișiere al bazei de date Kexi - Файловый проект базы данных Kexi - Projekt databázy Kexi s úložiskom typu súbor - Datoteka projekta podatkovne zbirke Kexi - пројекат Кексијеве базе података на основу датотеке - Kexi-databas för filbaserat projekt - Dosya temelli Kexi veritabanı projesi - проект файлової бази даних Kexi - Kexi 基于文件的数据库项目 - Kexi 資料庫檔案基礎專案 + Kexi database file + База от данни — Kexi + fitxer de base de dades de Kexi + Kexi database-fil + Kexi-Datenbankdatei + Kexi database file + archivo de base de datos de Kexi + Kexi datu-base fitxategia + KEXI-tietokanta + fichier de base de données Kexi + Kexi datoteka baze podataka + Kexi adatbázisfájl + Berkas basis data Kexi + File database Kexi + Kexi дерекқор файлы + Kexi 데이터베이스 파일 + Plik bazy danych Kexi + Arquivo de banco de dados do Kexi + Файл базы данных Kexi + Súbor databázy Kexi + Kexi-databasfil + Kexi veri tabanı dosyası + файл бази даних Kexi + Kexi 数据库文件 + Kexi 資料庫檔案 - Kexi database file-based project - مشروع قاعدة بيانات Kexi يعتمد على ملفات - Проект с база от данни — Kexi - projecte basat en fitxer de base de dades de Kexi - projekt založený na souboru databáze Kexi - Filbaseret projekt for Kexidatabase - Dateibasiertes Kexi-Datenbankprojekt - Έργο βάσης δεδομένων Kexi βασισμένο σε αρχεία - Kexi database file-based project - proyecto de base de datos basada en archivos de Kexi - Kexi datu-baseko fitxategian oinarritutako proiektua - Kexin tiedostoperustainen tietokantaprojekti - Kexi dátustovns fílugrundað verkætlan - projet de base de données Kexi en mode fichier - tionscadal bunachair sonraí Kexi bunaithe ar chomhaid - proxecto baseado no ficheiro-base de datos Kexi - מיזם מסד נתונים מבוסס-קובץ של Kexi - Kexi baza podataka datotekom temeljen projekt - Kexi adatbázisfájl-alapú projekt - Projecto de base de datos Kexi in modo file - Projek berbasis berkas basis data Kexi - Progetto su file di database Kexi - Kexi データベース ファイルベースプロジェクト - Файл негізінде жоба үшін Kexi дерекқоры - Kexi 데이터베이스 파일 기반 프로젝트 - Kexi duomenų bazės failo tipo projektas - Kexi datubāzes datnes balstīts projekts - Kexi database bestandgebaseerd project - projècte de banca de donadas Kexi en mòde fichièr - Projekt bazy danych Kexi na podstawie plików - projeto Kexi em base de dados baseada em ficheiros - Projeto de banco de dados baseado em arquivo do Kexi - Proiect bazat pe fișiere al bazei de date Kexi - Файловый проект базы данных Kexi - Projekt databázy Kexi s úložiskom typu súbor - Datoteka projekta podatkovne zbirke Kexi - пројекат Кексијеве базе података на основу датотеке - Kexi-databas för filbaserat projekt - Dosya temelli Kexi veritabanı projesi - проект файлової бази даних Kexi - Kexi 基于文件的数据库项目 - Kexi 資料庫檔案基礎專案 - + Kexi database file + База от данни — Kexi + fitxer de base de dades de Kexi + Kexi database-fil + Kexi-Datenbankdatei + Kexi database file + archivo de base de datos de Kexi + Kexi datu-base fitxategia + KEXI-tietokanta + fichier de base de données Kexi + Kexi datoteka baze podataka + Kexi adatbázisfájl + Berkas basis data Kexi + File database Kexi + Kexi дерекқор файлы + Kexi 데이터베이스 파일 + Plik bazy danych Kexi + Arquivo de banco de dados do Kexi + Файл базы данных Kexi + Súbor databázy Kexi + Kexi-databasfil + Kexi veri tabanı dosyası + файл бази даних Kexi + Kexi 数据库文件 + Kexi 資料庫檔案 + KFormula formula + KFormula-formule صيغة KFormula - Formuła KFormula + Formuła KFormula Формула — KFormula fórmula de KFormula vzorec KFormula KFormula-formel KFormula-Formel Μαθηματικός τύπος KFormula - KFormula formula + KFormula formula KFormula-formulo fórmula de KFormula KFormula formula KFormula-kaava KFormula frymil formule KFormula + formule KFormula foirmle KFormula fórmula de KFormula נוסחת KFormula @@ -13943,7 +14496,7 @@ formula KFormula Formuła KFormula fórmula KFormula - Fórmula do KFormula + Fórmula do KFormula Formulă KFormula Формула KFormula Vzorec KFormula @@ -13954,18 +14507,18 @@ KFormula formülü формула KFormula Công thức KFormula - KFormula 公式 - KFormula 公式 + KFormula 公式 + KFormula 公式 - - - + + + - - - + + + @@ -13973,21 +14526,23 @@ KIllustrator drawing + KIllustrator-tekening تصميم KIllustrator - Rysunak KIllustrator + Rysunak KIllustrator Чертеж — KIllustrator dibuix de KIllustrator kresba KIllustrator KIllustrator-tegning KIllustrator-Zeichnung Σχέδιο KIllustrator - KIllustrator drawing + KIllustrator drawing KIllustrator-grafikaĵo dibujo de KIllustrator KIllustrator marrazkia KIllustrator-piirros KIllustrator tekning dessin KIllustrator + dissen KIllustrator líníocht KIllustrator debuxo de KIllustrator ציור KIllustrator @@ -14008,7 +14563,7 @@ dessenh KIllustrator Rysunek KIllustrator desenho KIllustrator - Desenho do KIllustrator + Desenho do KIllustrator Desen KIllustrator Рисунок KIllustrator Kresba KIllustrator @@ -14019,13 +14574,13 @@ KIllustrator çizimi малюнок KIllustrator Bản vẽ KIllustrator - KIllustrator 绘图 - KIllustrator 繪圖 + KIllustrator 绘图 + KIllustrator 繪圖 - - - + + + @@ -14033,21 +14588,23 @@ Kivio flowchart + Kivio-vloeidiagram قائمة تدفق Kivio - Blok-schiema Kivio + Blok-schiema Kivio Диаграма — Kivio diagrama de flux de Kivio vývojový diagram Kivio Kiviorutediagram Kivio-Flussdiagramm Διάγραμμα ροής Kivio - Kivio flowchart + Kivio flowchart Kivo-fluskemo diagrama de flujo de Kivio Kivio diagrama Kivio-vuokaavio Kivio leiðarit diagramme de flux Kivio + diagram di flus Kivio sreabhchairt Kivio gráfica de fluxo de Kivio תרשים זרימה של Kivio @@ -14068,7 +14625,7 @@ diagrama de flux Kivio Diagram przepływów Kivio gráfico de fluxo Kivio - Fluxograma do Kivio + Fluxograma do Kivio Diagramă Kivio Диаграмма Kivio Vývojový diagram Kivio @@ -14076,21 +14633,21 @@ Diagramë fluksi Kivio Кивиов дијаграм тока Kivio-flödesschema - Kivio akış şeması + Kivio akış çizgesi блок-схема Kivio Lược đồ Kivio - Kivio 流程图 - Kivio 圖表 + Kivio 流程图 + Kivio 流程圖 - - - + + + - - - + + + @@ -14098,21 +14655,23 @@ Kontour drawing + Kontour-tekening تصميم Kontour - Rysunak Kontour + Rysunak Kontour Чертеж — Kontour dibuix de Kontour kresba Kontour Kontourtegning Kontour-Zeichnung Σχέδιο Kontour - Kontour drawing + Kontour drawing Kontour-grafikaĵo dibujo de Kontour Kontour marrazkia Kontour-piirros Kontour tekning dessin Kontour + dissen Kontour líníocht Kontour debuxo de Kontour ציור Kontour @@ -14133,7 +14692,7 @@ dessenh Kontour Rysunek Kontour desenho Kontour - Desenho do Kontour + Desenho do Kontour Desen Kontour Рисунок Kontour Kresba Kontour @@ -14144,18 +14703,18 @@ Kontour çizimi малюнок Kontour Bản vẽ Kontour - Kontour 绘图 - Kontour 繪圖 + Kontour 绘图 + Kontour 繪圖 - - - + + + - - - + + + @@ -14163,21 +14722,23 @@ KPovModeler scene + KPovModeler-toneel مشهد KPovModeler - Scena KPovModeler + Scena KPovModeler Сцена — KPovModeler escena de KPovModeler scéna KPovModeler KPovModeler-scene KPovModeler-Szene Σκηνή KPovModeler - KPovModeler scene + KPovModeler scene KPovModeler-sceno escena de KPovModeler KPovModeler eszena KPovModeler-näkymä KPovModeler leikmynd scène KPovModeler + sene KPovModeler radharc KPovModeler escena de KPovModeler סצנת KPovModeler @@ -14198,7 +14759,7 @@ scène KPovModeler Scena KPovModeler cenário KPovModeler - Cena do KPovModeler + Cena do KPovModeler Scenă KPovModeler Сцена KPovModeler Scéna KPovModeler @@ -14209,28 +14770,30 @@ KPovModeler sahnesi сцена KPovModeler Cảnh KPovModeler - KPovModeler 场景 - KPovModeler 場景 + KPovModeler 场景 + KPovModeler 場景 KPresenter presentation + KPresenter-voorlegging عرض تقديمي KPresenter - Prezentacyja KPresenter + Prezentacyja KPresenter Презентация — KPresenter presentació de KPresenter prezentace KPresenter KPresenter-præsentation KPresenter-Präsentation Παρουσίαση KPresenter - KPresenter presentation + KPresenter presentation KPresenter-prezentaĵo presentación de KPresenter Kpresenter aurkezpena KPresenter-esitys KPresenter framløga présentation KPresenter + presentazion KPresenter láithreoireacht KPresenter presentación de KPresenter מצגת KPresenter @@ -14251,7 +14814,7 @@ presentacion KPresenter Prezentacja KPresenter apresentação KPresenter - Apresentação do KPresenter + Apresentação do KPresenter Prezentare KPresenter Презентация KPresenter Prezentácia KPresenter @@ -14262,18 +14825,18 @@ KPresenter sunum dosyası презентація KPresenter Trình diễn KPresenter - KPresenter 演示文稿 - KPresenter 簡報檔 + KPresenter 演示文稿 + KPresenter 簡報 - - - + + + - - - + + + @@ -14282,22 +14845,24 @@ Krita document + Krita-dokument مستند Krita Documentu de Krita - Dakument Krita + Dakument Krita Документ — Krita - document Krita + document de Krita dokument Krita Kritadokument Krita-Dokument Έγγραφο Krita - Krita document + Krita document Krita-dokumento documento de Krita Krita dokumentua Krita-asiakirja Krita skjal document Krita + document Krita cáipéis Krita documento de Krita מסמך Krita @@ -14318,7 +14883,7 @@ document Krita Dokument Krita documento Krita - Documento do Krita + Documento do Krita Document Krita Документ Krita Dokument Krita @@ -14329,18 +14894,18 @@ Krita belgesi документ Krita Tài liệu Krita - Krita 文档 - Krita 文件 + Krita 文档 + Krita 文件 - - - + + + - - - + + + @@ -14348,21 +14913,23 @@ KSpread spreadsheet + KSpread-sigblad جدول KSpread - Raźlikovy arkuš KSpread + Raźlikovy arkuš KSpread Таблица — KSpread full de càlcul de KSpread sešit KSpread KSpread-regneark KSpread-Tabelle Λογιστικό φύλλο KSpread - KSpread spreadsheet + KSpread spreadsheet KSpread-kalkultabelo hoja de cálculo de KSpread KSpread kalkulu-orria KSpread-taulukko KSpread rokniark feuille de calcul KSpread + sfuei di calcul KSpread scarbhileog KSpread folla de cálculo de KSpread גליון נתונים של Kspread @@ -14383,7 +14950,7 @@ fuèlh de calcul KSpread Arkusz KSpread folha de cálculo KSpread - Planilha do KSpread + Planilha do KSpread Foaie de calcul KSpread Электронная таблица KSpread Zošit KSpread @@ -14391,21 +14958,21 @@ Fletë llogaritjesh KSpread табела К-табеле KSpread-kalkylblad - KSpread çalışma sayfası + KSpread hesap çizelgesi ел. таблиця KSpread Bảng tính KSpread - KSpread 电子表格 - KSpread 試算表 + KSpread 电子表格 + KSpread 試算表 - - - + + + - - - + + + @@ -14413,21 +14980,23 @@ KSpread spreadsheet (encrypted) + KSpread-sigblad (geënkripteer) جدول KSpread (مشفر) - Raźlikovy arkuš KSpread (zašyfravany) + Raźlikovy arkuš KSpread (zašyfravany) Таблица — KSpread, шифрирана full de càlcul de KSpread (xifrat) sešit KSpread (šifrovaný) KSpread-regneark (krypteret) KSpread-Tabelle (verschlüsselt) Λογιστικό φύλλο KSpread (κρυπτογραφημένο) - KSpread spreadsheet (encrypted) + KSpread spreadsheet (encrypted) KSpread-kalkultabelo (ĉifrita) hoja de cálculo de KSpread (cifrada) - KSpread kalkulu-orria (enkriptatua) + KSpread kalkulu-orria (zifratuta) KSpread-taulukko (salattu) KSpread rokniark (bronglað) feuille de calcul KSpread (chiffrée) + sfuei di calcul KSpread (cifrât) scarbhileog KSpread (criptithe) folla de cálculo de KSpread (cifrada) גליון נתונים של KSpread (מוצפן) @@ -14448,7 +15017,7 @@ fuèlh de calcul KSpread (chifrada) Arkusz KSpread (zaszyfrowany) folha de cálculo KSpread (encriptada) - Planilha do KSpread (criptografada) + Planilha do KSpread (criptografada) Foaie de calcul KSpread (criptat) Электронная таблица KSpread (зашифрованная) Zošit KSpread (šifrovaný) @@ -14456,32 +15025,33 @@ Fletë llogaritjesh KSpread (e kriptuar) табела К-табеле (шифрована) KSpread-kalkylblad (krypterat) - KSpread çalışma sayfası (şifreli) + KSpread hesap çizelgesi (şifreli) ел. таблиця KSpread (зашифрована) Bảng tính KSpread (đã mật mã) - KSpread 电子表格(加密) - KSpread 試算表 (已加密) + KSpread 电子表格(加密) + KSpread 試算表 (加密) - + KSysV init package حزمة KSysV init - Inicyjalny pakunak KSysV + Inicyjalny pakunak KSysV Пакет — KSysV init - paquet d'inici KSysV + paquet de KSysV init balíček init KSysV KSsV init-pakke KSysV-Init-Paket Αρχικό πακέτο KSysV - KSysV init package + KSysV init package paquete de configuración de init para KSysV KSysV hasieratzeko paketea KSysV init -paketti KSysV init pakki paquet d'initialisation KSysV + pachet init KSysV pacáiste túsaithe KSysV paquete de KsysV init חבילת KSysV init @@ -14501,7 +15071,7 @@ paquet d'initializacion KSysV Pakiet KSysV init pacote inicial KSysV - Pacote init do KSysV + Pacote init do KSysV Pachet KSysV init Пакет инициализации KSysV Balíček KSysV init @@ -14512,33 +15082,35 @@ KSysV init paketi пакунок KSysV init Gói sở khởi KSysV - KSysV init 软件包 - KSysV init 軟體包 + KSysV init 软件包 + KSysV init 軟體包 - - + + Kugar document + Kugar-dokument مستند Kugar Documentu de Kugar - Dakument Kugar + Dakument Kugar Документ — Kugar document Kugar dokument Kugar Kugardokument Kugar-Dokument Έγγραφο Kugar - Kugar document + Kugar document Kugar-dokumento documento de Kugar Kugar dokumentua Kugar-asiakirja Kugar skjal document Kugar + document Kugar cáipéis Kugar documento de Kugar מסמך Kugar @@ -14559,7 +15131,7 @@ document Kugar Dokument Kuguar documento Kugar - Documento do Kugar + Documento do Kugar Document Kugar Документ Kugar Dokument Kugar @@ -14570,16 +15142,17 @@ Kugar belgesi документ Kugar Tài liệu Kugar - Kugar 文档 - Kugar 文件 + Kugar 文档 + Kugar 文件 KWord document + KWord-dokument مستند KWord Documentu de Kword - Dakument KWord + Dakument KWord Документ — KWord document KWord dokument KWord @@ -14587,13 +15160,14 @@ KWord-dokument KWord-Dokument Έγγραφο KWord - KWord document + KWord document KWord-dokumento documento de KWord KWord dokumentua KWord-asiakirja KWord skjal document KWord + document KWord cáipéis KWord documento de KWord מסמך KWord @@ -14614,7 +15188,7 @@ document KWord Dokument KWord documento KWord - Documento do KWord + Documento do KWord Document KWord Документ KWord Dokument KWord @@ -14625,18 +15199,18 @@ KWord belgesi документ KWord Tài liệu KWord - KWord 文档 - KWord 文件 + KWord 文档 + KWord 文件 - - - + + + - - - + + + @@ -14645,22 +15219,24 @@ KWord document (encrypted) + KWord-dokument (geënkripteer) مستند KWord (مشفر) Documentu de Kword (cifráu) - Dakument KWord (zašyfravany) + Dakument KWord (zašyfravany) Документ — KWord, шифриран document KWord (xifrat) dokument KWord (šifrovaný) KWord-dokument (krypteret) KWord-Dokument (verschlüsselt) Έγγραφο KWord (κρυπτογραφημένο) - KWord document (encrypted) + KWord document (encrypted) KWord-dokumento (ĉifrita) documento de KWord (cifrado) - KWord dokumentua (enkriptatua) + KWord dokumentua (zifratuta) KWord-asiakirja (salattu) KWord skjal (bronglað) document KWord (chiffré) + document KWord (cifrât) cáipéis KWord (criptithe) documento de KWord (cifrado) מסמך KWord (מוצפן) @@ -14681,7 +15257,7 @@ document KWord (chifrat) Dokument KWord (zaszyfrowany) documento KWord (encriptado) - Documento do KWord (criptografado) + Documento do KWord (criptografado) Document KWord (criptat) Документ KWord (зашифрованный) Dokument KWord (šifrovaný) @@ -14692,18 +15268,19 @@ KWord belgesi (şifreli) документ KWord (зашифрований) Tài liệu KWord (đã mật mã) - KWord 文档(加密) - KWord 文件 (已加密) + KWord 文档(加密) + KWord 文件 (加密) - + LHA archive + LHA-argief أرشيف LHA LHA arxivi - Archiŭ LHA + Archiŭ LHA Архив — LHA arxiu LHA archiv LHA @@ -14711,13 +15288,14 @@ LHA-arkiv LHA-Archiv Συμπιεσμένο αρχείο LHA - LHA archive + LHA archive LHA-arkivo archivador LHA LHA artxiboa LHA-arkisto LHA skjalasavn archive LHA + archivi LHA cartlann LHA arquivo LHA ארכיון LHA @@ -14738,7 +15316,7 @@ archiu LHA Archiwum LHA arquivo LHA - Pacote LHA + Pacote LHA Arhivă LHA Архив LHA Archív LHA @@ -14749,22 +15327,22 @@ LHA arşivi архів LHA Kho nén LHA - LHA 归档文件 - LHA 封存檔 + LHA 归档文件 + LHA 封存檔 - - - - - - - - - - - - + + + + + + + + + + + + @@ -14772,21 +15350,23 @@ LHZ archive + LHZ-argief أرشيف LHZ - Archiŭ LHZ + Archiŭ LHZ Архив — LHZ arxiu LHZ archiv LHZ LHZ-arkiv LHZ-Archiv Συμπιεσμένο αρχείο LHZ - LHZ archive + LHZ archive LHZ-arkivo archivador LHZ LHZ artxiboa LHZ-arkisto LHZ skjalasavn archive LHZ + archivi LHZ cartlann LHZ arquivo LHZ ארכיון LHZ @@ -14807,7 +15387,7 @@ archiu LHZ Archiwum LHZ arquivo LHZ - Pacote LHZ + Pacote LHZ Arhivă LHZ Архив LHZ Archív LHZ @@ -14818,28 +15398,30 @@ LHZ arşivi архів LHZ Kho nén LHZ (LHA đã nén) - LHZ 归档文件 - LHZ 封存檔 + LHZ 归档文件 + LHZ 封存檔 - + message catalog + boodskaplêer كتالوج الرسالة - kataloh paviedamleńniaŭ + kataloh paviedamleńniaŭ Каталог със съобщения catàleg de missatges katalog zpráv meddelelseskatalog Nachrichtenkatalog Κατάλογος μηνυμάτων - message catalogue + message catalogue katalogo de mesaĝoj catálogo de mensajes mezuen katalogoa viestiluettelo boðskrá catalogue de messages + catalic di messaçs catalóg theachtaireachtaí catálogo de mensaxes קטלוג הודעות @@ -14860,7 +15442,7 @@ catalòg de messatges Katalog wiadomości catálogo de mensagens - Catálogo de mensagens + Catálogo de mensagens catalog de mesaje Каталог сообщений Katalóg správ @@ -14871,34 +15453,37 @@ ileti kataloğu каталог повідомлень phân loại thông điệp - 消息库 - 訊息目錄 + 消息库 + 訊息目錄 - + + - + LyX document + LyX-dokument مستند LyX Documentu de Lyx - Dakument LyX + Dakument LyX Документ — LyX document LyX dokument LyX LyX-dokument LyX-Dokument Έγγραφο LyX - LyX document + LyX document LyX-dokumento documento de LyX LyX dokumentua LyX-asiakirja LyX skjal document LyX + document LyX cáipéis LyX documento LyX מסמך Lyx @@ -14919,7 +15504,7 @@ document LyX Dokument LyX documento LyX - Documento LyX + Documento LyX Document LyX Документ LyX Dokument LyX @@ -14930,28 +15515,31 @@ LyX belgesi документ LyX Tài liệu LyX - LyX 文档 - LyX 文件 + LyX 文档 + LyX 文件 - + LZ4 archive + LZ4-argief + Архив — LZ4 arxiu LZ4 archiv LZ4 LZ4-arkiv LZ4-Archiv Συμπιεσμένο αρχείο LZ4 - LZ4 archive + LZ4 archive archivador LZ4 LZ4 artxiboa LZ4-arkisto archive LZ4 + archivi LZ4 Cartlann LZ4 Arquivo LZ4 ארכיון LZ4 @@ -14965,7 +15553,7 @@ archiu LZ4 Archiwum LZ4 arquivo LZ4 - Pacote LZ4 + Pacote LZ4 Архив LZ4 Archív LZ4 Datoteka arhiva LZ4 @@ -14973,64 +15561,69 @@ LZ4-arkiv LZ4 arşivi архів LZ4 - LZ4 归档文件 - LZ4 封存檔 + LZ4 归档文件 + LZ4 封存檔 - - + + Tar archive (LZ4-compressed) + Tar-argief (LZ4-saamgepers) + Архив — tar, компресиран с LZ4 arxiu tar (amb compressió LZ4) archiv Tar (komprimace LZ4) Tar-arkiv (LZ4-komprimeret) Tar-Archiv (LZ4-komprimiert) - Tar archive (LZ4-compressed) + Tar archive (LZ4-compressed) archivador Tar (comprimido con LZ4) Tar artxiboa (LZ4-rekin konprimatua) Tar-arkisto (LZ4-pakattu) archive tar (compression LZ4) + archivi Tar (comprimût cun LZ4) cartlann Tar (comhbhrúite le LZ4) ארכיון Tar (מכווץ ע״י LZ4) Tar arhiva (LZ4 sažeto) - Tar archívum (LZ4-el tömörítve) - arsip tar (terkompresi LZ4) + Tar archívum (LZ4 tömörítésű) + Arsip tar (terkompresi LZ4) Archivio tar (compresso con LZ4) Tar архиві (LZ4-пен сығылған) Tar 묶음 파일(LZ4 압축) Archiwum tar (kompresja LZ4) - Arquvio Tar (compactado com LZ4) + Arquivo Tar (compactado com LZ4) Архив TAR (сжатый lz4) - Archív tar (komprimovaný pomocou LZ4) + Archív Tar (komprimovaný pomocou LZ4) Тар архива (запакована ЛЗ4-ом) Tar-arkiv (LZ4-komprimerat) Tar arşivi (LZ4 ile sıkıştırılmış) архів tar (стиснений LZ4) - Tar 归档文件(LZ4 压缩) - Tar 封存檔 (LZ4 格式壓縮) + Tar 归档文件(LZ4 压缩) + Tar 封存檔 (LZ4 壓縮) Lzip archive + Lzip-argief أرشيف Lzip - Архив — lzip + Архив — Lzip arxiu lzip archiv Lzip Lzip-arkiv Lzip-Archiv Συμπιεσμένο αρχείο Lzip - Lzip archive + Lzip archive Lzip-arkivo archivador Lzip Lzip artxiboa Lzip-arkisto Lzip skjalasavn archive lzip + archivi Lzip cartlann Lzip arquivo Lzip ארכיון Lzip @@ -15048,7 +15641,7 @@ archiu lzip Archiwum lzip arquivo LZip - Pacote Lzip + Pacote Lzip Arhivă Lzip Архив LZIP Archív Lzip @@ -15057,96 +15650,105 @@ Lzip-arkiv Lzip arşivi архів lzip - Lzip 归档文件 - Lzip 封存檔 + Lzip 归档文件 + Lzip 封存檔 - + Tar archive (lzip-compressed) + Tar-argief (lzip-saamgepers) + Архив — tar, компресиран с Lzip arxiu tar (amb compressió lzip) archiv Tar (komprimace lzip) Tar-arkiv (lzip-komprimeret) Tar-Archiv (lzip-komprimiert) - Tar archive (lzip-compressed) + Tar archive (lzip-compressed) archivador Tar (comprimido con lzip) Tar artxiboa (lzip-rekin konprimatua) Tar-arkisto (lzip-pakattu) archive tar (compressée lzip) + archivi Tar (comprimût cun lzip) cartlann Tar (comhbhrúite le lzip) ארכיון Tar (מכווץ ע״י lzip) Tar arhiva (lzip sažeto) - Tar archívum (lzippel tömörítve) - arsip tar (terkompresi lzip) + Tar archívum (lzip tömörítésű) + Arsip tar (terkompresi lzip) Archivio tar (compresso con lzip) Tar архиві (lzip-пен сығылған) TAR 묶음 파일(LZIP 압축) Archiwum tar (kompresja lzip) - Arquivo Tar (compactado com lzip) + Arquivo Tar (compactado com lzip) Архив TAR (сжатый lzip) - Archív tar (komprimovaný pomocou lzip) + Archív Tar (komprimovaný pomocou lzip) Тар архива (запакована лзипом) Tar-arkiv (lzip-komprimerat) Tar arşivi (lzip ile sıkıştırılmış) архів tar (стиснений lzip) - Tar 归档文件(lzip 压缩) - Tar 封存檔 (lzip 格式壓縮) + Tar 归档文件(lzip 压缩) + Tar 封存檔 (lzip 壓縮) PDF document (lzip-compressed) + PDF-dokument (lzip-saamgepers) Documentu PDF (comprimíu en lzip) + Документ — PDF, компресиран с Lzip document PDF (amb compressió lzip) dokument PDF (komprimace lzip) + PDF-dokument (lzip-komprimeret) PDF-Dokument (lzip-komprimiert) - PDF document (lzip-compressed) + PDF document (lzip-compressed) documento PDF (comprimido con lzip) PDF dokumentua (lzip-rekin konprimitua) PDF-asiakirja (lzip-pakattu) document PDF (compressé lzip) + document PDF (comprimût cun lzip) cáipéis PDF (comhbhrúite le lzip) PDF dokument (lzip sažeto) - PDF dokumentum (lzip-tömörítésű) - dokumen PDF (termkompresi lzip) + PDF dokumentum (lzip tömörítésű) + Dokumen PDF (termkompresi lzip) Documento PDF (compresso con lzip) PDF құжаты (lzip-пен сығылған) PDF 문서(LZIP 압축) Dokument PDF (kompresja lzip) - Documento PDF (compactado com lzip) + Documento PDF (compactado com lzip) Документ PDF (сжатый lzip) Dokument PDF (komprimovaný pomocou lzip) ПДФ документ (запакован лзип-ом) PDF-dokument (lzip-komprimerat) PDF belgesi (lzip ile sıkıştırılmış) документ PDF (стиснений lzip) - PDF 文档(lzip 压缩) - PDF 文件 (lzip 格式壓縮) + PDF 文档(lzip 压缩) + PDF 文件 (lzip 壓縮) LZMA archive + LZMA-argief أرشيف LZMA - Archiŭ LZMA + Archiŭ LZMA Архив — LZMA arxiu LZMA archiv LZMA LZHA-arkiv LZMA-Archiv Συμπιεσμένο αρχείο LZMA - LZMA archive + LZMA archive LZMA-arkivo archivador LZMA LZMA artxiboa LZMA-arkisto LZMA skjalasavn archive LZMA + archivi LZMA cartlann LZMA arquivo LZMA ארכיון LZMA @@ -15166,7 +15768,7 @@ archiu LZMA Archiwum LZMA arquivo LZMA - Pacote LZMA + Pacote LZMA Arhivă LZMA Архив LZMA Archív LZMA @@ -15177,8 +15779,8 @@ LZMA arşivi архів LZMA Kho nén LZMA - LZMA 归档文件 - LZMA 封存檔 + LZMA 归档文件 + LZMA 封存檔 LZMA Lempel-Ziv-Markov chain-Algorithm @@ -15186,25 +15788,27 @@ Tar archive (LZMA-compressed) + Tar-argief (LZMA-saamgepers) أرشيف Tar (مضغوط-LZMA) - Archiŭ tar (LZMA-skampresavany) + Archiŭ tar (LZMA-skampresavany) Архив — tar, компресиран с LZMA arxiu tar (amb compressió LZMA) archiv Tar (komprimace LZMA) Tar-arkiv (LZMA-komprimeret) Tar-Archiv (LZMA-komprimiert) Αρχείο Tar (συμπιεσμένο με LZMA) - Tar archive (LZMA-compressed) + Tar archive (LZMA-compressed) archivador Tar (comprimido con LZMA) Tar artxiboa (LZMA-rekin konprimitua) Tar-arkisto (LZMA-pakattu) Tar skjalasavn (LZMA-stappað) archive tar (compression LZMA) + archivi Tar (comprimût cun LZMA) cartlann Tar (comhbhrúite le LZMA) arquivo Tar (comprimido con LZMA) ארכיון Tar (מכווץ ע״י LZMA) Tar arhiva (LZMA sažeta) - Tar archívum (LZMA-val tömörítve) + Tar archívum (LZMA tömörítésű) Archivo Tar (comprimite con LZMA) Arsip Tar (terkompresi LZMA) Archivio tar (compresso con LZMA) @@ -15219,10 +15823,10 @@ archiu tar (compression LZMA) Archiwum tar (kompresja LZMA) arquivo Tar (compressão LZMA) - Pacote Tar (compactado com LZMA) + Pacote Tar (compactado com LZMA) Arhivă Tar (comprimată LZMA) Архив TAR (сжатый lzma) - Archív tar (komprimovaný pomocou LZMA) + Archív Tar (komprimovaný pomocou LZMA) Datoteka arhiva Tar (stisnjen z LZMA) Arkiv tar (i kompresuar me LZMA) Тар архива (запакована ЛЗМА-ом) @@ -15230,8 +15834,8 @@ Tar arşivi (LZMA ile sıkıştırılmış) архів tar (стиснений LZMA) Kho nén tar (đã nén LZMA) - Tar 归档文件(LZMA 压缩) - Tar 封存檔 (LZMA 格式壓縮) + Tar 归档文件(LZMA 压缩) + Tar 封存檔 (LZMA 壓縮) @@ -15239,21 +15843,23 @@ LZO archive + LZO-argief أرشيف LZO - Archiŭ LZO + Archiŭ LZO Архив — LZO arxiu LZO archiv LZO LZO-arkiv LZO-Archiv Συμπιεσμένο αρχείο LZO - LZO archive + LZO archive LZO-arkivo archivador LZO LZO artxiboa LZO-arkisto LZO skjalasavn archive LZO + archivi LZO cartlann LZO arquivo LZO ארכיון LZO @@ -15274,7 +15880,7 @@ archiu LZO Archiwum LZO arquivo LZO - Pacote LZO + Pacote LZO Arhivă LZO Архив LZO Archív LZO @@ -15285,27 +15891,31 @@ LZO arşivi архів LZO Kho nén LZO - LZO 归档文件 - LZO 封存檔 + LZO 归档文件 + LZO 封存檔 LZO Lempel-Ziv-Oberhumer - + Qpress archive + Qpress-argief + Архив — Qpress arxiu Qpress archiv Qpress Qpress-arkiv Qpress-Archiv Συμπιεσμένο αρχείο Qpress - Qpress archive + Qpress archive archivador de Qpress + Qpress artxiboa Qpress-arkisto Archive Qpress + archivi Qpress cartlann Qpress Arquivo Qpress ארכיון Qpress @@ -15319,7 +15929,7 @@ Archiu Qpress Archiwum Qpress arquivo Qpress - Pacote Qpress + Pacote Qpress Архив Qpress Archív Qpress Datoteka arhiva Qpress @@ -15327,25 +15937,28 @@ Qpress-arkiv Qpress arşivi архів Qpress - Qpress 归档文件 - Qpress 封存檔 + Qpress 归档文件 + Qpress 封存檔 - + XAR archive + XAR-argief + Архив — XAR arxiu XAR archiv XAR XAR-arkiv XAR-Archiv - XAR archive + XAR archive archivador XAR XAR artxiboa XAR-arkisto archive XAR + archivi XAR cartlann XAR ארכיון XAR XAR arhiva @@ -15356,36 +15969,40 @@ XAR 아카이브 Archiu XAR Archiwum XAR - Arquivo XAR + Arquivo XAR Архив XAR Archív XAR ИксАР архива XAR-arkiv XAR arşivi архів XAR - XAR 归档文件 - XAR 封存檔 + XAR 归档文件 + XAR 封存檔 XAR eXtensible ARchive - + - + Zlib archive + Zlib-argief + Архив — Zlib arxiu Zlib archiv Zlib Zlib-arkiv Zlib-Archiv Συμπιεσμένο αρχείο Zlib - Zlib archive + Zlib archive archivador Zlib + Zlib artxiboa Zlib-arkisto Archive Zlib + archivi Zlib cartlann Zlib Arquivo Zlib ארכיון Zlib @@ -15399,7 +16016,7 @@ Archiu Zlib Archiwum Zlib arquivo Zlib - Pacote Zlib + Pacote Zlib Архив Zlib Archív Zlib Datoteka arhiva Zlib @@ -15407,15 +16024,16 @@ Zlib-arkiv Zlib arşivi архів zlib - Alzip 归档文件 - Zlib 封存檔 + Alzip 归档文件 + Zlib 封存檔 MagicPoint presentation + MagicPoint-voorlegging عرض تقديمي MagicPoint - Prezentacyja MagicPoint + Prezentacyja MagicPoint Презентация — MagicPoint presentació de MagicPoint prezentace MagicPoint @@ -15423,13 +16041,14 @@ MagicPoint-præsentation MagicPoint-Präsentation Παρουσίαση MagicPoint - MagicPoint presentation + MagicPoint presentation MagicPoint-prezentaĵo presentación de MagicPoint MagicPoint aurkezpena MagicPoint-esitys MagicPoint framløga présentation MagicPoint + presentazion MagicPoint láithreoireacht MagicPoint presentación de MagicPoint מצגת MagicPoint @@ -15451,7 +16070,7 @@ presentacion MagicPoint Prezentacja programu MagicPoint apresentação MagicPoint - Apresentação do MagicPoint + Apresentação do MagicPoint Prezentare MagicPoint Презентация MagicPoint Prezentácia MagicPoint @@ -15462,29 +16081,31 @@ MagicPoint sunumu презентація MagicPoint Trình diễn MagicPoint - MagicPoint 演示文稿 - MagicPoint 簡報檔 + MagicPoint 演示文稿 + MagicPoint 簡報 Macintosh MacBinary file + Macintosh MacBinary-lêer ملف Macintosh MacBinary - Fajł Macintosh MacBinary + Fajł Macintosh MacBinary Файл — MacBinary fitxer MacBinary de Macintosh soubor MacBinary pro Macintosh Macintosh MacBinary-fil Macintosh-MacBinary-Datei Εκτελέσιμο Macintosh MacBinary - Macintosh MacBinary file + Macintosh MacBinary file MacBinary-dosiero de Macintosh archivo de Macintosh MacBinary Macintosh MacBinary fitxategia Macintosh MacBinary -tiedosto Macintosh MacBinary fíla fichier Macintosh MacBinary + file MacBinary di Macintosh comhad Macintosh MacBinary ficheiro MacBinary de Macintosh קובץ בינרי של מקינטוש @@ -15505,7 +16126,7 @@ fichièr Macintosh MacBinary Plik MacBinary Macintosh ficheiro MacBinary de Macintosh - Arquivo do Macintosh MacBinary + Arquivo do Macintosh MacBinary Fișier Macintosh MacBinary Файл Macintosh MacBinary Súbor pre Macintosh MacBinary @@ -15516,29 +16137,31 @@ Macintosh MacBinary dosyası файл Macintosh MacBinary Tập tin nhị phân MacBinary của Macintosh - Macintosh MacBinary 文件 - Macintosh MacBinary 檔 + Macintosh MacBinary 文件 + Macintosh MacBinary 檔 - + Matroska stream + Matroska-stroom دفق Matroska - Płyń Matroska + Płyń Matroska Поток — Matroska flux Matroska proud Matroska - Matroskastrøm + Matroska-strøm Matroska-Datenstrom Ροή Matroska - Matroska stream + Matroska stream flujo Matroska Matroska korrontea Matroska-virta Matroska streymur flux Matroska + flus Matroska sruth Matroska fluxo de Matroska זרימת Matroska @@ -15558,7 +16181,7 @@ flux Matroska Strumień Matroska fluxo Matroska - Transmissão do Matroska + Transmissão do Matroska Flux Matroska Поток Matroska Stream Matroska @@ -15569,38 +16192,40 @@ Matroska akışı потік даних Matroska Luồng Matroska - Matroska 流 - Matroska 串流 + Matroska 流 + Matroska 串流 - - - - - - + + + + + + Matroska video + Matroska-video Matroska مرئي Videu en Matroska - Videa Matroska + Videa Matroska Видео — Matroska vídeo Matroska video Matroska - Matroskavideo + Matroska-video Matroska-Video Βίντεο Matroska - Matroska video + Matroska video Matroska-video vídeo Matroska Matroska bideoa Matroska-video Matroska video vidéo Matroska + video Matroska físeán Matroska vídeo de Matroska וידאו Matroska @@ -15622,7 +16247,7 @@ vidèo Matroska Plik wideo Matroska vídeo Matroska - Vídeo Matroska + Vídeo Matroska Video Matroska Видео Matroska Video Matroska @@ -15633,24 +16258,27 @@ Matroska video відеокліп Matroska Ảnh động Matroska - Matroska 视频 - Matroska 視訊 + Matroska 视频 + Matroska 視訊 Matroska 3D video + Matroska 3D video Videu en Matroska 3D + Видео — Matroska 3D vídeo Matroska 3D 3D video Matroska Matroska 3D-video Matroska 3D-Video Βίντεο 3Δ Matroska - Matroska 3D video + Matroska 3D video vídeo Matroska en 3D Matroska 3D bideoa Matroska 3D-video vidéo Matroska 3D + video 3D Matroska físeán Matroska 3D Video Matroska 3D סרטון תלת ממדי מסוג Matroska @@ -15664,7 +16292,7 @@ vidèo Matroska 3D Plik wideo Matroska 3D vídeo 3D Matroska - Vídeo 3D Matroska + Vídeo 3D Matroska Видео Matroska 3D 3D video Matroska Video datoteka Matroska 3D @@ -15672,28 +16300,30 @@ Matroska 3D-video Matroska 3B video відеокліп Matroska 3D - Matroska 3D 视频 - Matroska 3D 視訊 + Matroska 3D 视频 + Matroska 3D 視訊 Matroska audio + Matroska-oudio سمعي Matroska - Aŭdyjo Matroska + Aŭdyjo Matroska Аудио — Matroska - àudio de Matroska + àudio Matroska zvuk Matroska - Matroskalyd + Matroska-lyd Matroska-Audio Ήχος Matroska - Matroska audio + Matroska audio Matroska-sondosiero - sonido Matroska + audio Matroska Matroska audioa Matroska-ääni Matroska ljóður audio Matroska + audio Matroska fuaim Matroska son de Matroska שמע Matroska @@ -15714,7 +16344,7 @@ àudio Matroska Plik dźwiękowy Matroska áudio Matroska - Áudio Matroska + Áudio Matroska Audio Matroska Аудио Matroska Zvuk Matroska @@ -15725,13 +16355,14 @@ Matroska ses звук Matroska Âm thanh Matroska - Matroska 音频 - Matroska 音訊 + Matroska 音频 + Matroska 音訊 WebM video + WebM-video WebM مرئي Videu en WebM Видео — WebM @@ -15740,13 +16371,14 @@ WebM-video WebM-Video Βίντεο WebM - WebM video + WebM video WebM-video vídeo WebM WebM bideoa WebM-video WebM video vidéo WebM + video WebM físeán WebM vídeo WebM וידאו WebM @@ -15764,7 +16396,7 @@ vidèo WebM Plik wideo WebM vídeo WebM - Vídeo WebM + Vídeo WebM Video WebM Видео WebM Video WebM @@ -15773,36 +16405,38 @@ WebM-video WebM video відео WebM - WebM 视频 - WebM 視訊 + WebM 视频 + WebM 視訊 - - - - - - + + + + + + WebM audio + WebM-oudio WebM سمعي Аудио — WebM - àudio de WebM + àudio WebM zvuk WebM WebM-lyd WebM-Audio Ήχος WebM - WebM audio + WebM audio WebM-sondosiero - sonido WebM + audio WebM WebM audioa WebM-ääni WebM ljóður audio WebM + audio WebM fuaim WebM son WebM שמע WebM @@ -15820,7 +16454,7 @@ àudio WebM Plik dźwiękowy WebM áudio WebM - Áudio WebM + Áudio WebM Audio WebM Аудио WebM Zvuk WebM @@ -15829,22 +16463,25 @@ WebM-ljud WebM sesi звук WebM - WebM 音频 - WebM 音訊 + WebM 音频 + WebM 音訊 MHTML web archive + MHTML-webargief + Архив — MHTML arxiu web MHTML webový archiv MHTML - MHTML-netarkiv + MHTML-webarkiv MHTML-Webarchiv Συμπιεσμένο αρχείο ιστού MHTML - MHTML web archive + MHTML web archive archivador web MHTML MHTML web artxiboa MHTML-kooste archive web MHTML + archivi web MHTML cartlann ghréasáin MHTML Arquivo web MHTML ארכיון רשת MHTML @@ -15860,7 +16497,7 @@ archiu web MHTML Archiwum witryny MHTML arquivo web MHTML - Pacote web MHTML + Pacote web MHTML Веб-архив MHTML Webový archív MHTML Spletni arhiv MHTML @@ -15868,8 +16505,8 @@ MHTML-webbarkiv MHTML web arşivi вебархів MHTML - MHTML 网络归档 - MHTML 網頁封存檔 + MHTML 网络归档 + MHTML 網頁封存檔 MHTML MIME HTML @@ -15878,6 +16515,7 @@ MXF video + MXF-video MXF مرئي Videu en MXF Видео — MXF @@ -15886,13 +16524,14 @@ MXF-video MXF-Video Βίντεο MXF - MXF video + MXF video MXF-video vídeo MXF MXF bideoa MXF-video MXF video vidéo MXF + video MXF físeán MXF vídeo MXF וידאו MXF @@ -15911,7 +16550,7 @@ vidèo MXF Plik wideo MXF vídeo MXF - Vídeo MXF + Vídeo MXF Video MXF Видео MXF Video MXF @@ -15920,33 +16559,35 @@ MXF-video MXF video відеокліп MXF - MXF 视频 - MXF 視訊 + MXF 视频 + MXF 視訊 MXF Material Exchange Format - + OCL file + OCL-lêer ملف OCL - Fajł OCL + Fajł OCL Файл — OCL fitxer OCL soubor OCL OCL-fil OCL-Datei Αρχείο OCL - OCL file + OCL file OCL-dosiero archivo OCL OCL fitxategia OCL-tiedosto OCL fíla fichier OCL + file OCL comhad OCL ficheiro OCL קובץ OCL @@ -15966,7 +16607,7 @@ fichièr OCL Plik OCL ficheiro OCL - Arquivo OCL + Arquivo OCL Fișier OCL Файл OCL Súbor OCL @@ -15977,54 +16618,39 @@ OCL dosyası файл OCL Tập tin OCL - OCL 文件 - OCL 檔 + OCL 文件 + OCL 檔 OCL Object Constraint Language - COBOL source file + COBOL source code Изходен код — COBOL codi font en COBOL - zdrojový soubor COBOL - COBOL-kildefil - COBOL-Quelldatei - Πηγαίο αρχείο COBOL - COBOL source file - COBOL-fontdosiero - archivo fuente de COBOL + COBOL-kildekode + COBOL-Quelltext + COBOL source code + código fuente en COBOL COBOL iturburu-kodea COBOL-lähdekoodi - fichier source COBOL - cód foinseach COBOL - ficheiro fonte de COBOL - קובץ מקור של COBOL - COBOL izvorna datoteka - COBOL forrásfájl - File de codice fonte COBOL - Berkas sumber COBOL - File sorgente COBOL - COBOL ソースファイル - COBOL-ის საწყისი ფაილი + code source COBOL + COBOL izvorni kôd + COBOL forráskód + Kode sumber COBOL + Codice sorgente COBOL COBOL бастапқы коды - COBOL 소스 파일 - COBOL pirmkods - COBOL bronbestand - fichièr font COBOL - Plik źródłowy COBOL - ficheiro origem COBOL - Arquivo de código-fonte em COBOL - Файл исходного кода на COBOL - Zdrojový súbor COBOLu - Izvorna koda COBOL - изворна датотека КОБОЛ-а - COBOL-källkodsfil - COBOL kaynak dosyası + 코볼 소스 코드 + Kod źródłowy COBOL + Código-fonte COBOL + Исходный код COBOL + Zdrojový kód COBOL + COBOL-källkod + COBOL kaynak kodu вихідний код мовою COBOL - COBOL 源文件 - COBOL 源檔 + COBOL 源代码 + COBOL 原始碼 COBOL COmmon Business Oriented Language @@ -16033,24 +16659,26 @@ Mobipocket e-book + Mobipocket e-boek Е-книга — Mobipocket llibre electrònic Mobipocket elektronická kniha Mobipocket Mobipocket e-bog Mobipocket E-Book Ηλεκτρονικό βιβλίο Mobipocket - Mobipocket e-book + Mobipocket e-book libro electrónico de Mobipocket Mobipocket liburua Mobipocket e-kirja livre numérique Mobipocket + e-book Mobipocket r-leabhar Mobipocket E-book Mobipocket ספר אלקטרוני של Mobipocket Mobipocket e-knjiga Mobipocket e-könyv E-libro Mobipocket - e-book Mobipocket + E-book Mobipocket E-book Mobipocket Mobipocket 電子書籍 Mobipocket-ის ელწიგნი @@ -16061,7 +16689,7 @@ libre numeric Mobipocket E-book Mobipocket ebook Mobipocket - E-book Mobipocket + E-book Mobipocket Электронная книга Mobipocket E-kniha Mobipocket e-knjiga Mobipocket @@ -16069,38 +16697,40 @@ Mobipocket-e-bok Mobipocket e-kitap електронна книга Mobipocket - Mobipocket 电子书 - Mobipocket e-book + Mobipocket 电子书 + Mobipocket e-book - - + + - + Adobe FrameMaker MIF document + Adobe FrameMaker MIF-dokument مستند أدوبي الصانع للإطارات MIF Documentu MIF d'Adobe FrameMaker - Dakument Adobe FrameMaker MIF + Dakument Adobe FrameMaker MIF Документ — Adobe FrameMaker MIF document MIF d'Adobe FrameMaker dokument Adobe FrameMaker MIF Adobe FrameMaker MIF-dokument Adobe-FrameMaker-MIF-Dokument Έγγραφο MIF του Adobe FrameMaker - Adobe FrameMaker MIF document + Adobe FrameMaker MIF document MIF-dokumento de Adobe FrameMaker documento MIF de Adobe FrameMaker Adobe FrameMaker-en MIF dokumentua Adobe FrameMaker MIF -asiakirja Adobe FrameMaker MIF skjal document MIF Adobe FrameMaker + document MIF di Adobe FrameMaker cáipéis MIF Adobe FrameMaker documento MIF de Adobe FrameMaker מסמך MIF של Adobe FrameMaker @@ -16121,7 +16751,7 @@ document MIF Adobe FrameMaker Dokument MIF Adobe FrameMaker documento Adobe FrameMaker MIF - Documento MIF do Adobe FrameMaker + Documento MIF do Adobe FrameMaker Document Adobe FrameMaker MIF Документ Adobe FrameMaker MIF Dokument Adobe FrameMaker MIF @@ -16132,27 +16762,29 @@ Adobe FrameMaker MIF belgesi документ Adobe FrameMaker MIF Tài liệu Adobe FrameMaker MIF - Adobe FrameMaker MIF 文档 - Adobe FrameMaker MIF 文件 + Adobe FrameMaker MIF 文档 + Adobe FrameMaker MIF 文件 Mozilla bookmarks + Mozilla-boekmerke علامات موزيلا - Zakładki Mozilla + Zakładki Mozilla Отметки — Mozilla llista d'adreces d'interès de Mozilla záložky Mozilla Mozillabogmærker Mozilla-Lesezeichen Σελιδοδείκτες Mozilla - Mozilla bookmarks + Mozilla bookmarks Mozilla-legosignoj marcadores de Mozilla Mozillako laster-markak Mozilla-kirjanmerkit Mozilla bókamerki marque-pages Mozilla + segnelibris Mozilla leabharmharcanna Mozilla Marcadores de Mozilla סימניה של Mozilla @@ -16173,7 +16805,7 @@ marcapaginas Mozilla Zakładki Mozilla marcadores do Mozilla - Favoritos do Mozilla + Favoritos do Mozilla Semne de carte Mozilla Закладки Mozilla Záložky Mozilla @@ -16184,32 +16816,34 @@ Mozilla yer imleri закладки Mozilla Liên kết đã lưu Mozilla - Mozilla 书签 - Mozilla 書籤 + Mozilla 书签 + Mozilla 書籤 - + DOS/Windows executable + DOS/Windows-uitvoerbaar تنفيذي DOS/Windows - Vykonvalny fajł DOS/Windows + Vykonvalny fajł DOS/Windows Изпълним файл — DOS/Windows executable de DOS o de Windows spustitelný soubor pro DOS/Windows DOS-/Windowskørbar DOS/Windows-Programmdatei Εκτελέσιμο DOS/Windows - DOS/Windows executable + DOS/Windows executable DOS/Windows-plenumebla ejecutable de DOS/Windows DOS/Windows-eko exekutagarria DOS/Windows-ohjelma DOS/Windows inningarfør exécutable DOS/Windows + eseguibil DOS/Windows comhad inrite DOS/Windows executábel de DOS/Windows קובץ בר־הרצה של DOS/חלונות @@ -16231,7 +16865,7 @@ executable DOS/Windows Program DOS/Windows executável DOS/Windows - Executável do DOS/Windows + Executável do DOS/Windows Executabil DOS/Windows Исполняемый файл DOS/Windows Spustiteľný súbor pre DOS/Windows @@ -16239,33 +16873,35 @@ I ekzekutueshëm DOS/Windows ДОС/Виндоуз извршна Körbar DOS/Windows-fil - DOS/Windows çalıştırılabilir + DOS/Windows çalıştırılabiliri виконуваний файл DOS/Windows Tập tin có thực hiện được DOS/Windows - DOS/Windows 可执行文件 - DOS/Windows 可執行檔 + DOS/Windows 可执行文件 + DOS/Windows 可執行檔 - + Internet shortcut + Internet-kortpad اختصار الإنترنت - Sieciŭnaja spasyłka + Sieciŭnaja spasyłka Адрес в Интернет drecera d'Internet odkaz do Internetu Internetgenvej Internet-Verweis Συντόμευση διαδικτύου - Internet shortcut + Internet shortcut acceso directo a Internet Interneteko lasterbidea Internet-pikakuvake Alnetssnarvegur raccourci Internet + scurte di internet aicearra Idirlín atallo de Internet קיצור דרך של האינטרנט @@ -16285,7 +16921,7 @@ acorchi Internet Skrót internetowy atalho da Internet - Atalho da Internet + Atalho da Internet Scurtătură Internet Интернет-ссылка Internetový odkaz @@ -16296,34 +16932,36 @@ İnternet kısayolu інтернет-посилання Lối tắt Internet - Internet 快捷方式 - 網際網路捷徑 + Internet 快捷方式 + 網際網路捷徑 - - - + + + WRI document + WRI-dokument مستند WRI Documentu WRI - Dakument WRI + Dakument WRI Документ — WRI document WRI dokument WRI WRI-dokument WRI-Dokument Έγγραφο WRI - WRI document + WRI document WRI-dokumento documento WRI WRI dokumentua WRI-asiakirja WRI skjal document WRI + document WRI cáipéis WRI documento WRI מסמך WRI @@ -16343,7 +16981,7 @@ document WRI Dokument WRI documento WRI - Documento WRI + Documento WRI Document WRI Документ WRI Dokument WRI @@ -16354,29 +16992,30 @@ WRI belgesi документ WRI Tài liệu WRI - WRI 文档 - WRI 文件 + WRI 文档 + WRI 文件 MSX ROM MSX ROM - MSX ROM + MSX ROM ROM — MSX ROM de MSX ROM pro MSX ROM MSX - MSX-rom + MSX-ROM MSX ROM MSX ROM - MSX ROM + MSX ROM MSX-NLM ROM de MSX MSX-ko ROMa MSX-ROM MSX ROM ROM MSX + ROM MSX ROM MSX ROM de MSX MSX ROM @@ -16398,7 +17037,7 @@ ROM MSX Plik ROM konsoli MSX ROM MSX - ROM de MSX + ROM de MSX ROM MSX MSX ROM ROM pre MSX @@ -16409,27 +17048,29 @@ MSX ROM ППП MSX ROM MSX - MSX ROM - MSX ROM + MSX ROM + MSX ROM M4 macro + M4-makro M4 macro - Makras M4 + Makras M4 Макроси — M4 macro M4 makro M4 M4-makro M4-Makro Μακροεντολή m4 - M4 macro + M4 macro macro M4 M4 makroa M4-makro M4 fjølvi macro M4 + macro M4 macra M4 macro M4 מאקרו M4 @@ -16449,7 +17090,7 @@ macro M4 Makro M4 macro M4 - Macro M4 + Macro M4 Macro M4 Макрос M4 Makro M4 @@ -16460,8 +17101,8 @@ M4 makrosu макрос M4 Vĩ lệnh M4 - M4 宏 - M4 巨集 + M4 宏 + M4 巨集 @@ -16469,20 +17110,21 @@ Nintendo64 ROM Nintendo64 ROM - Nintendo64 ROM + Nintendo64 ROM ROM — Nintendo64 ROM de Nintendo64 ROM pro Nintendo64 - Nintendo64-rom + Nintendo64-ROM Nintendo64 ROM Nintendo64 ROM - Nintendo64 ROM + Nintendo64 ROM Nintendo64-NLM ROM de Nintendo64 Nintendo64-ko ROMa Nintendo64-ROM Nintendo64 ROM ROM Nintendo64 + ROM Nintendo64 ROM Nintendo64 ROM de Nintendo64 ROM של Nintendo64 @@ -16503,7 +17145,7 @@ ROM Nintendo64 Plik ROM konsoli Nintendo64 ROM Nintendo64 - ROM de Nintendo64 + ROM de Nintendo64 ROM Nintendo64 Nintendo64 ROM ROM pre Nintendo64 @@ -16514,26 +17156,27 @@ Nintendo64 ROM ППП Nintendo64 ROM Nintendo64 - 任天堂 64 ROM - Nintendo64 ROM + 任天堂 64 ROM + Nintendo64 ROM - - - - - - + + + + + + Nautilus link + Nautilus-skakel وصلة Nautilus Nautilus körpüsü - Spasyłka Nautilus + Spasyłka Nautilus Връзка — Nautilus enllaç de Nautilus odkaz Nautilus @@ -16541,13 +17184,14 @@ Nautilus-henvisning Nautilus-Verknüpfung Σύνδεσμος Nautilus - Nautilus link + Nautilus link Nautilus-ligilo enlace de Nautilus Nautilus esteka Nautilus-linkki Nautilus leinkja lien Nautilus + colegament Nautilus nasc Nautilus ligazón de nautilus קישור של Nautilus @@ -16568,7 +17212,7 @@ ligam Nautilus Odnośnik Nautilus atalho Nautilus - Link do Nautilus + Link do Nautilus Legătură Nautilus Ссылка Nautilus Odkaz Nautilus @@ -16579,25 +17223,27 @@ Nautilus bağlantısı посилання Nautilus Liên kết Nautilus - Nautilus 链接 - Nautilus 鏈結 + Nautilus 链接 + Nautilus 連結 - + Neo-Geo Pocket ROM + ROM — Neo-Geo Pocket ROM de Neo-Geo Pocket ROM pro Neo-Geo Pocket - Neo-Geo Pocket ROM + Neo-Geo Pocket-ROM Neo-Geo Pocket ROM - Neo-Geo Pocket ROM + Neo-Geo Pocket ROM ROM de Neo-Geo Pocket Neo-Geo Pocket ROM Neo-Geo Pocket -ROM ROM Neo-Geo Pocket + ROM Neo-Geo Pocket ROM Neo-Geo Pocket Neo-Geo Pocket ROM Neo-Geo Pocket ROM @@ -16606,54 +17252,82 @@ Neo-Geo Pocket ROM 네오지오 포켓 롬 Plik ROM konsoli Neo-Geo Pocket - ROM de Neo-Geo Pocket + ROM de Neo-Geo Pocket Neo-Geo Pocket ROM ROM pre Neo-Geo Pocket Нео-Гео Покет РОМ Neo-Geo Pocket-rom Neo-Geo Pocket ROM ППП Neo-Geo Pocket - Neo-Geo Pocket ROM - Neo-Geo Pocket ROM + Neo-Geo Pocket ROM + Neo-Geo Pocket ROM - - - + + + Neo-Geo Pocket Color ROM + ROM — Neo-Geo Pocket Color + ROM de Neo-Geo Pocket Color + ROM pro Neo-Geo Pocket Color + Neo-Geo Pocket Color-ROM + Neo-Geo Pocket Color ROM + Neo-Geo Pocket Colour ROM + ROM de Neo-Geo Pocket Color + Neo-Geo Pocket Color ROM + Neo-Geo Pocket Color ROM + ROM Neo-Geo Pocket Color + ROM Neo-Geo Pocket Color + ROM datha Neo-Geo Pocket + Neo-Geo Pocket Color ROM + Neo-Geo Pocket Color ROM + ROM Neo-Geo Pocket Color + ROM Neo-Geo Pocket Color + Neo-Geo Pocket Color ROM + 네오지오 포켓 컬러 롬 + Plik ROM konsoli Neo-Geo Pocket Color + ROM de Neo-Geo Pocket Color + Neo-Geo Pocket Color ROM + ROM pre Neo-Geo Pocket Color + Neo-Geo Pocket Color ROM + Neo-Geo Pocket Color ROM + ППП Neo-Geo Pocket Color + Neo-Geo Pocket Color ROM + Neo-Geo Pocket Color ROM - - - + + + - + NES ROM NES ROM - NES ROM + NES ROM ROM — NES ROM de NES ROM pro NES ROM NES - NES-rom + NES-ROM NES ROM NES ROM - NES ROM + NES ROM NES-NLM ROM de NES NES-eko ROMa NES-ROM NES ROM ROM NES + ROM NES ROM NES ROM de NES ROM של NES @@ -16674,7 +17348,7 @@ ROM NES Plik ROM konsoli NES ROM NES - ROM de NES + ROM de NES ROM NES NES ROM ROM pre NES @@ -16685,8 +17359,8 @@ NES ROM ППП NES ROM NES - NES ROM - 任天堂 ROM + NES ROM + 任天堂紅白機 ROM @@ -16697,20 +17371,21 @@ Unidata NetCDF document مستند Unidata NetCDF Documentu NetCDF d'Unidata - Dakument Unidata NetCDF + Dakument Unidata NetCDF Документ — Unidata NetCDF document d'Unidata NetCDF dokument Unidata NetCDF Unidata NetCDF-dokument Unidata-NetCDF-Dokument Έγγραφο Unidata NetCDF - Unidata NetCDF document + Unidata NetCDF document dokumento en NetCDF-formato de Unidata documento de Unidata NetCDF Unidata NetCDF dokumentua Unidata NetCDF -asiakirja Unidata NetCDF skjal document Unidata NetCDF + document Unidata NetCDF cáipéis Unidata NetCDF Documentno de Unixdata NetCDF מסמך של Unidata NetCDF @@ -16731,7 +17406,7 @@ document Unidata NetCDF Dokument Unidata NetCDF documento Unidata NetCDF - Documento do Unidata NetCDF + Documento do Unidata NetCDF Document Unidata NetCDF Документ Unidata NetCDF Dokument Unidata NetCDF @@ -16742,8 +17417,8 @@ Unidata NetCDF belgesi документ Unidata NetCDF Tài liệu NetCDF Unidata - Unidata NetCDF 文档 - Unidata NetCDF 文件 + Unidata NetCDF 文档 + Unidata NetCDF 文件 NetCDF Network Common Data Form @@ -16755,13 +17430,15 @@ Индекс — Usenet, NewzBin índex d'Usenet NewzBin index NewzBin diskuzních skupin Usenet - NewzBin-brugernetindex + NewzBin usenet-indeks NewzBin-Usenet-Index Ευρετήριο usenet NewzBin - NewzBin usenet index + NewzBin usenet index índice NewzBin de usenet NewzBin usenet indizea + NewzBin usenet indeksi index usenet + tabele usenet NewzBin innéacs usenet NewzBin Índice de usenet NEwzBin אינדקס שרתי חדשות NewzBin @@ -16778,7 +17455,7 @@ indèx usenet NewzBin Indeks grup dyskusyjnych NewzBin índice usenet NewzBin - Índice de usenet NewzBin + Índice de usenet NewzBin Индекс usenet NewzBin Index Usenetu NewzBin Kazalo usenet NewzBin @@ -16786,30 +17463,32 @@ NewzBin-usenetindex NewzBin usenet dizini покажчик usenet NewzBin - NewzBin Usenet 索引 - NewzBin usenet 索引 + NewzBin Usenet 索引 + NewzBin usenet 索引 - + object code + objekkode رمز الكائن - abjektny kod + abjektny kod Обектен код codi objecte objektový kód objektkode Objektcode Μεταφρασμένος κώδικας - object code + object code celkodo código objeto objektu kodea objektikoodi code objet + codiç ogjet cód réada código obxecto קוד אובייקט @@ -16830,7 +17509,7 @@ còde objet Kod obiektowy código de objeto - Código-objeto + Código-objeto cod sursă obiect Объектный код Objektový kód @@ -16841,18 +17520,18 @@ nesne kodu об'єктний код mã đối tượng - 目标代码 - 目的碼 + 目标代码 + 目的碼 - - - + + + - - - + + + @@ -16867,12 +17546,13 @@ Udvekslingsformat for Annodex Annodex-Wechselformat Μορφή ανταλλαγής Annodex - Annodex exchange format + Annodex exchange format formato de intercambio de Annodex Annodex trukatze-formatua Annodex-siirtomuoto Annodex umbýtingarsnið format d'échange Annodex + formât di scambi Annodex formáid mhalairte Annodex formato intercambiábel de Annodex תבנית החלפת Annodex @@ -16891,7 +17571,7 @@ format d'escambi Annodex Format wymiany Annodex formato de troca Annodex - Formato de troca Annodex + Formato de troca Annodex Format schimb Annodex Формат обмена Annodex Formát pre výmenu Annodex @@ -16901,13 +17581,13 @@ Annodex değişim biçimi формат обміну даними Annodex Định dạng trao đổi Annodex - Annodex 交换格式 - Annodex 交換格式 + Annodex 交换格式 + Annodex 交換格式 - - - + + + @@ -16915,57 +17595,35 @@ - Annodex Video - Annodex مرئي - Videu n'Annodex + Annodex video Видео — Annodex - Annodex Video - video Annodex - Annodexvideo + vídeo Annodex + Annodex-video Annodex-Video - Βίντεο Annodex - Annodex Video - Annodex-video + Annodex video vídeo Annodex Annodex bideoa - Annodex-video - Annodex video + Annodex video vidéo Annodex - Físeán Annodex - vídeo de Annodex - וידאו Annodex Annodex video snimka Annodex videó - Video Annodex Video Annodex Video Annodex - Annodex 動画 - Annodex-ის ვიდეო Annodex видеосы Annodex 동영상 - Annodex vaizdo įrašas - Annodex video - Annodex Video - vidèo Annodex Plik wideo Annodex - vídeo Annodex - Vídeo Annodex - Video Annodex + Vídeo Annodex Видео Annodex - Video Annodex - Video datoteka Annodex - Анодекс видео Annodex-video - Annodex Video - відеокліп Annodex - Ảnh động Annodex - Annodex 视频 - Annodex 視訊 + Annodex video + відео Annodex + Annodex 视频 + Annodex 視訊 - - - + + + @@ -16973,56 +17631,35 @@ - Annodex Audio - Annodex سمعي + Annodex audio Аудио — Annodex - Annodex Audio - zvuk Annodex - Annodexlyd + àudio Annodex + Annodex-lyd Annodex-Audio - Ήχος Annodex - Annodex Audio - Annodex-sondosiero - sonido Annodex + Annodex audio + audio Annodex Annodex audioa - Annodex-ääni - Annodex ljóður + Annodex ääni audio Annodex - Fuaim Annodex - son de Annodex - שמע Annodex Annodex zvučni zapis Annodex hang - Audio Annodex Audio Annodex Audio Annodex - Annodex オーディオ - Annodex-ის აუდიო Annodex аудиосы Annodex 오디오 - Annodex garso įrašas - Annodex audio - Annodex Audio - àudio Annodex Plik dźwiękowy Annodex - áudio Annodex - Áudio Annodex - Audio Annodex + Áudio Annodex Аудио Annodex - Zvuk Annodex - Zvočna datoteka Annodex - Анодекс аудио Annodex-ljud - Annodex Sesi + Annodex sesi звук Annodex - Âm thanh Annodex - Annodex 音频 - Annodex 音訊 + Annodex 音频 + Annodex 音訊 - - - + + + @@ -17031,20 +17668,22 @@ Ogg multimedia file + Ogg-multimedialêer ملف وسائط متعددة Ogg - Multymedyjny fajł Ogg + Multymedyjny fajł Ogg Мултимедия — Ogg fitxer multimèdia Ogg multimediální soubor Ogg Ogg multimedie-fil Ogg-Multimediadatei Αρχείο πολυμέσων Ogg - Ogg multimedia file + Ogg multimedia file archivo multimedia Ogg Ogg multimediako fitxategia Ogg-multimediatiedosto Ogg margmiðlafíla fichier multimédia Ogg + file multimediâl Ogg comhad ilmheán Ogg ficheiro multimedia Ogg קובץ מולטימדיה Ogg @@ -17065,7 +17704,7 @@ fichièr multimèdia Ogg Plik multimedialny Ogg ficheiro multimédia Ogg - Arquivo multimídia Ogg + Arquivo multimídia Ogg Fișier multimedia Ogg Мультимедийный файл Ogg Súbor multimédií Ogg @@ -17073,70 +17712,47 @@ File multimedial Ogg Огг мултимедијална датотека Ogg-multimediafil - Ogg çokluortam dosyası + Ogg çoklu ortam dosyası мультимедійний файл Ogg Tập tin đa phương tiện Ogg - Ogg 多媒体文件 - Ogg 多媒體檔案 + Ogg 多媒体文件 + Ogg 多媒體檔案 - + - Ogg Audio - Ogg سمعي - Aŭdyjo Ogg + Ogg audio Аудио — Ogg - àudio d'Ogg - zvuk Ogg + àudio Ogg Ogg-lyd Ogg-Audio - Ήχος Ogg - Ogg Audio - sonido Ogg + Ogg audio + audio Ogg Ogg audioa Ogg-ääni - Ogg ljóður audio Ogg - Fuaim Ogg - son Ogg - שמע Ogg Ogg zvučni zapis Ogg hang - Audio Ogg Audio Ogg Audio Ogg - Ogg オーディオ - Ogg-ის აუდიო - Ogg аудиосы + Ogg аулиосы Ogg 오디오 - Ogg garso įrašas - Ogg audio - Ogg lyd - Ogg-audio - Ogg-lyd - àudio Ogg Plik dźwiękowy Ogg - áudio Ogg - Áudio Ogg - Audio Ogg + Áudio Ogg Аудио Ogg Zvuk Ogg - Zvočna datoteka Ogg - Audio Ogg - Огг звук Ogg-ljud - Ogg Sesi + Ogg sesi звук ogg - Âm thanh Ogg - Ogg 音频 - Ogg 音訊 + Ogg 音频 + Ogg 音訊 - + @@ -17144,58 +17760,34 @@ - Ogg Video - Ogg مرئي - Videu n'Ogg - Videa Ogg + Ogg video Видео — Ogg vídeo Ogg - video Ogg Ogg-video Ogg-Video - Βίντεο Ogg - Ogg Video + Ogg video vídeo Ogg Ogg bideoa Ogg-video - Ogg Video vidéo Ogg - Físeán Ogg - vídeo Ogg - וידאו Ogg Ogg video snimka Ogg videó - Video Ogg Video Ogg Video Ogg - Ogg 動画 - Ogg ვიდეო Ogg видеосы Ogg 동영상 - Ogg vaizdo įrašas - Ogg video - Ogg video - Ogg-video - Ogg-video - vidèo Ogg Plik wideo Ogg - vídeo Ogg - Vídeo Ogg - Video Ogg + Vídeo Ogg Видео Ogg Video Ogg - Video datoteka Ogg - Video Ogg - Огг снимак Ogg-video - Ogg Video - відеокліп ogg - Ảnh động Ogg - Ogg 视频 - Ogg 視訊 + Ogg video + відео ogg + Ogg 视频 + Ogg 視訊 - + @@ -17203,23 +17795,25 @@ Ogg Vorbis audio + Ogg Vorbis-oudio Ogg Vorbis سمعي Ogg Vorbis audio faylı - Aŭdyjo Ogg Vorbis + Aŭdyjo Ogg Vorbis Аудио — Ogg Vorbis - àudio d'Ogg Vorbis + àudio Ogg Vorbis zvuk Ogg Vorbis Sain Ogg Vorbis Ogg Vorbis-lyd Ogg-Vorbis-Audio Ήχος Ogg Vobris - Ogg Vorbis audio + Ogg Vorbis audio Ogg-Vorbis-sondosiero - sonido Ogg Vorbis + audio Ogg Vorbis Ogg Vorbis audioa Ogg Vorbis -ääni Ogg Vorbis ljóður audio Ogg Vorbis + audio Ogg Vorbis fuaim Ogg Vorbis son Ogg Vorbis שמע Ogg Vorbis @@ -17241,7 +17835,7 @@ àudio Ogg Vorbis Plik dźwiękowy Ogg Vorbis áudio Ogg Vorbis - Áudio Ogg Vorbis + Áudio Ogg Vorbis Audio Ogg Vorbis Аудио Ogg Vorbis Zvuk Ogg Vorbis @@ -17252,14 +17846,14 @@ Ogg Vorbis sesi звук ogg Vorbis Âm thanh Vorbis Ogg - Ogg Vorbis 音频 - Ogg Vorbis 音訊 + Ogg Vorbis 音频 + Ogg Vorbis 音訊 - - + + @@ -17267,20 +17861,22 @@ Ogg FLAC audio + Ogg FLAC-oudio Ogg FLAC سمعي - Aŭdyjo Ogg FLAC + Aŭdyjo Ogg FLAC Аудио — Ogg FLAC - àudio FLAC d'Ogg + àudio Ogg FLAC zvuk Ogg FLAC Ogg FLAC-lyd Ogg-FLAC-Audio Ήχος Ogg FLAC - Ogg FLAC audio - sonido Ogg FLAC + Ogg FLAC audio + audio Ogg FLAC Ogg FLAC audioa Ogg FLAC -ääni Ogg FLAC ljóður audio Ogg FLAC + audio Ogg FLAC fuaim Ogg FLAC son Ogg FLAC שמע Ogg FLAC @@ -17301,7 +17897,7 @@ àudio Ogg FLAC Plik dźwiękowy Ogg FLAC áudio Ogg FLAC - Áudio Ogg FLAC + Áudio Ogg FLAC Audio Ogg FLAC Аудио Ogg FLAC Zvuk Ogg FLAC @@ -17312,13 +17908,13 @@ Ogg FLAC sesi звук ogg FLAC Âm thanh FLAC Ogg - Ogg FLAC 音频 - Ogg FLAC 音訊 + Ogg FLAC 音频 + Ogg FLAC 音訊 - - + + @@ -17329,16 +17925,19 @@ Opus audio - àudio d'Opus + Opus-oudio + Аудио — Opus + àudio Opus zvuk Opus Opus-lyd Opus-Audio Ήχος Opus - Opus audio - sonido Opus + Opus audio + audio Opus Opus audioa Opus-ääni audio Opus + audio Opus fuaim Opus Son Opus שמע Opus @@ -17352,7 +17951,7 @@ àudio Opus Plik dźwiękowy Opus áudio Opus - Áudio Opus + Áudio Opus Аудио Opus Zvuk Opu Zvočna datoteka Opus @@ -17360,32 +17959,34 @@ Opus-ljud Opus sesi звук Opus - Opus 音频 - Opus 音訊 + Opus 音频 + Opus 音訊 - - + + Ogg Speex audio + Ogg Speex-oudio Ogg Speex سمعي - Aŭdyjo Ogg Speex + Aŭdyjo Ogg Speex Аудио — Ogg Speex - àudio Speex d'Ogg + àudio Ogg Speex zvuk Ogg Speex Ogg Speex-lyd Ogg-Speex-Audio Ήχος Ogg Speex - Ogg Speex audio - sonido Ogg Speex + Ogg Speex audio + audio Ogg Speex Ogg Speex audioa Ogg Speex -ääni Ogg Speex ljóður audio Ogg Speex + audio Ogg Speex fuaim Ogg Speex son Ogg Speex שמע Ogg Speex @@ -17406,7 +18007,7 @@ àudio Ogg Speex Plik dźwiękowy Ogg Speex áudio Ogg Speex - Áudio Ogg Speex + Áudio Ogg Speex Audio Ogg Speex Аудио Ogg Speex Zvuk Ogg Speex @@ -17417,33 +18018,36 @@ Ogg Speex sesi звук ogg Speex Âm thanh Speex Ogg - Ogg Speex 音频 - Ogg Speex 音訊 + Ogg Speex 音频 + Ogg Speex 音訊 - - + + + Speex audio + Speex-oudio Speex سمعي - Aŭdyjo Speex + Aŭdyjo Speex Аудио — Speex - àudio de Speex + àudio Speex zvuk Speex - Speexlyd + Speex-lyd Speex-Audio Ήχος Speex - Speex audio - sonido Speex + Speex audio + audio Speex Speex audioa Speex-ääni Speex ljóður audio Speex + audio Speex fuaim Speex son Speex שמע של Speex @@ -17463,7 +18067,7 @@ àudio Speex Plik dźwiękowy Speex áudio Speex - Áudio Speex + Áudio Speex Audio Speex Аудио Speex Zvuk Speex @@ -17474,30 +18078,32 @@ Speex sesi звук Speex Âm thanh Speex - Speex 音频 - Speex 音訊 + Speex 音频 + Speex 音訊 - + Ogg Theora video + Ogg Theora-video Ogg Theora مرئي Videu n'Ogg Theora - Videa Ogg Theora + Videa Ogg Theora Видео — Ogg Theora vídeo Ogg Theora video Ogg Theora Ogg Theora-video Ogg-Theora-Video Βίντεο Ogg Theora - Ogg Theora video + Ogg Theora video vídeo Ogg Theora Ogg Theora bideoa Ogg Theora -video Ogg Theora video vidéo Ogg Theora + video Ogg Theora físeán Ogg Theora vídeo Ogg Theora שמע Ogg Theora @@ -17518,7 +18124,7 @@ vidèo Ogg Theora Plik wideo Ogg Theora vídeo Ogg Theora - Vídeo Ogg Theora + Vídeo Ogg Theora Video Ogg Theora Видео Ogg Theora Video Ogg Theora @@ -17529,35 +18135,37 @@ Ogg Theora video відеокліп ogg Theora Ảnh động Theora Ogg - Ogg Theora 视频 - Ogg Theora 視訊 + Ogg Theora 视频 + Ogg Theora 視訊 - - + + OGM video + OGM-video OGM مرئي Videu n'OGM - Videa OGM + Videa OGM Видео — OGM vídeo OGM video OGM OGM-video OGM-Video Βίντεο OGM - OGM video + OGM video OGM-video vídeo OGM OGM bideoa OGM-video OGM video vidéo OGM + video OGM físeán OGM vídeo OGM וידאו OGM @@ -17578,7 +18186,7 @@ vidèo OGM Plik wideo OGM vídeo OGM - Vídeo OGM + Vídeo OGM Video OGM Видео OGM Video OGM @@ -17589,43 +18197,45 @@ OGM video відеокліп OGM Ảnh động OGM - OGM 视频 - OGM 視訊 + OGM 视频 + OGM 視訊 - - + + - + OLE2 compound document storage تخزين مجمع مستند OLE2 Almacenamientu de documentos compuestu por OLE2 - Schovišča dla kampanentaŭ dakumentu OLE2 + Schovišča dla kampanentaŭ dakumentu OLE2 Съставен документ-хранилище — OLE2 emmagatzematge de documents compostos OLE2 úložiště složeného dokumentu OLE2 OLE2-sammensat dokumentlager OLE2-Verbunddokumentenspeicher Αρχείο συμπαγούς αποθήκευσης εγγράφων OLE2 - OLE2 compound document storage + OLE2 compound document storage OLE2-deponejo de parentezaj dokumentoj almacenamiento de documentos compuestos OLE2 OLE2 konposatutako dokumentu-bilduma OLE2-yhdisteasiakirjatallenne OLE2 samansett skjalagoymsla document de stockage composé OLE2 + memorizazion document compost OLE2 stóras cáipéisí comhshuite OLE2 almacenamento de documento composto OLE2 אחסון מסמך משותף OLE2 OLE2 pohrana složenog dokumenta OLE2 összetett dokumentumtároló Magazin de documentos composite OLE2 - penyimpan dokumen kompon OLE2 + Penyimpan dokumen kompon OLE2 Memorizzazione documento composto OLE2 OLE2 複合ドキュメントストレージ OLE2 құрама құжаттар қоймасы @@ -17639,7 +18249,7 @@ document d'emmagazinatge compausat OLE2 Magazyn dokumentu złożonego OLE2 armazenamento de documento composto OLE2 - Armazenamento de documento composto OLE2 + Armazenamento de documento composto OLE2 Document de stocare compus OLE2 Хранилище составных документов OLE2 Úložisko zloženého dokumentu OLE2 @@ -17650,27 +18260,30 @@ OLE2 bileşik belge depolama сховище складних документів OLE2 Kho lưu tài liệu ghép OLE2 - OLE2 组合文档存储 - OLE2 複合文件儲存 + OLE2 组合文档存储 + OLE2 複合文件儲存 - - + + Microsoft Publisher document + Microsoft Publisher-dokument Documentu de Microsoft Publisher + Документ — Microsoft Publisher document de Microsoft Publisher dokument Microsoft Publisher Microsoft Publisher-dokument Microsoft-Publisher-Dokument Έγγραφο Microsoft Publisher - Microsoft Publisher document + Microsoft Publisher document documento de Microsoft Publisher Microsoft Publisher dokumentua Microsoft Publisher -asiakirja document Microsoft Publisher + document Microsoft Publisher cáipéis Microsoft Publisher Documento de Microsoft Publisher מסמך Microsoft Publisher @@ -17684,7 +18297,7 @@ document Microsoft Publisher Dokument Microsoft Publisher documento Microsoft Publisher - Documento do Microsoft Publisher + Documento do Microsoft Publisher Документ Microsoft Publisher Dokument Microsoft Publisher Dokument Microsoft Publisher @@ -17692,27 +18305,29 @@ Microsoft Publisher-dokument Microsoft Publisher belgesi документ Microsoft Publisher - Microsoft Publisher 文档 - Microsoft Publisher 文件 + Microsoft Publisher 文档 + 微軟 Publisher 文件 Windows Installer package + Windows-installeerpakket حزمة مثبّت ويندوز - Pakunak Windows Installer + Pakunak Windows Installer Пакет — инсталация за Windows paquet de Windows Installer balíček Windows Installer - Windows Installer-pakke + Windows installationsprogram-pakke Windows-Installationspaket Πακέτο Windows Installer - Windows Installer package + Windows Installer package paquete de instalación de Windows Windows-eko pakete instalatzailea Windows-asennuspaketti Windows innleggingarpakki paquet d'installation Windows + pachet Windows Installer pacáiste Windows Installer paquete de instalación de Windows חבילה של Windows Installer @@ -17731,7 +18346,7 @@ paquet d'installacion Windows Pakiet instalatora Windows pacote de instalação Windows - Pacote do Windows Installer + Pacote do Windows Installer Pachet instalator Windows Пакет Windows Installer Balík Windows Installer @@ -17742,28 +18357,30 @@ Windows Installer paketi пакунок Windows Installer Gói cài đặt Windows - Windows 程序安装包 - Windows Installer 軟體包 + Windows 程序安装包 + Windows Installer 軟體包 GNU Oleo spreadsheet + GNU Oleo-sigblad جدول جنو Oleo - Raźlikovy arkuš GNU Oleo + Raźlikovy arkuš GNU Oleo Таблица — GNU Oleo full de càlcul de GNU Oleo sešit GNU Oleo GNU Oleo-regneark GNU-Oleo-Tabelle Λογιστικό φύλλο GNU Oleo - GNU Oleo spreadsheet + GNU Oleo spreadsheet Kalkultabelo de GNU Oleo hoja de cálculo de GNU Oleo GNU Oleo kalkulu-orria GNU Oleo -taulukko GNU Oleo rokniark feuille de calcul GNU Oleo + sfuei di calcul GNU Oleo scarbhileog GNU Oleo folla de cálculo de Oleo GNU גליון נתונים של GNU Oleo @@ -17785,7 +18402,7 @@ fuèlh de calcul GNU Oleo Arkusz GNU Oleo folha de cálculo GNU Oleo - Planilha do GNU Oleo + Planilha do GNU Oleo Foaie de calcul GNU Oleo Электронная таблица GNU Oleo Zošit GNU Oleo @@ -17793,34 +18410,36 @@ Fletë llogaritje GNU Oleo ГНУ Олео табела GNU Oleo-kalkylblad - GNU Oleo çalışma sayfası + GNU Oleo hesap çizelgesi ел. таблиця GNU Oleo Bảng tính Oleo của GNU - GNU Oleo 电子表格 - GNU Oleo 試算表 + GNU Oleo 电子表格 + GNU Oleo 試算表 - + PAK archive + PAK-argief أرشيف PAK - Archiŭ PAK + Archiŭ PAK Архив — PAK arxiu PAK archiv PAK PAK-arkiv PAK-Archiv Συμπιεσμένο αρχείο PAK - PAK archive + PAK archive PAK-arkivo archivador PAK PAK artxiboa PAK-arkisto PAK skjalasavn archive PAK + archivi PAK cartlann PAK arquivo PAK ארכיון PAK @@ -17841,7 +18460,7 @@ archiu PAK Archiwum PAK arquivo PAK - Pacote PAK + Pacote PAK Arhivă PAK Архив PAK Archív PAK @@ -17852,19 +18471,20 @@ PAK arşivi архів PAK Kho nén PAK - PAK 归档文件 - PAK 封存檔 + PAK 归档文件 + PAK 封存檔 - + Palm OS database + Palm OS-databasis قاعدة بيانات Palm OS Palm OS mə'lumat bazası - Baza źviestak Palm OS + Baza źviestak Palm OS База от данни — Palm OS base de dades Palm OS databáze Palm OS @@ -17872,13 +18492,14 @@ Palm OS-database Palm-OS-Datenbank Βάση δεδομένων Palm OS - Palm OS database + Palm OS database datumbazo de Palm OS base de datos de Palm OS Palm OS datu-basea Palm OS -tietokanta Palm OS dátustovnur base de données Palm OS + base di dâts Palm OS bunachar sonraí Palm OS base de datos de Palm OS מסד נתונים של Palm OS @@ -17899,7 +18520,7 @@ banca de donadas Palm OS Baza danych Palm OS base de dados Palm OS - Banco de dados do Palm OS + Banco de dados do Palm OS Bază de date Palm OS База данных Palm OS Databáza Palm OS @@ -17907,11 +18528,11 @@ Bankë me të dhëna Palm OS база података Палм ОС-а Palm OS-databas - Palm OS veritabanı + Palm OS veri tabanı база даних Palm OS Cơ sở dữ liệu PalmOS - Palm OS 数据库 - Palm OS 資料庫 + Palm OS 数据库 + Palm OS 資料庫 @@ -17920,20 +18541,22 @@ Parchive archive + Parchive-argief أرشيف Parchive - Archiŭ Parchive + Archiŭ Parchive Архив — parchive arxiu Parchive archiv Parchive Parchive-arkiv Parchive-Archiv Συμπιεσμένο αρχείο Parchive - Parchive archive + Parchive archive archivador Parchive Parchive artxiboa Parchive-arkisto Parchive skjalasavn archive Parchive + archivi Parchive cartlann Parchive arquivo Parchive ארכיון של Parchive @@ -17953,7 +18576,7 @@ archiu Parchive Archiwum parchive arquivo Parchive - Pacote Parchive + Pacote Parchive Arhivă Parchive Архив Parchive Archív Parchive @@ -17964,34 +18587,36 @@ Parchive arşivi архів Parchive Kho nén Parchive - Parchive 归档文件 - Parchive 封存檔 + Parchive 归档文件 + Parchive 封存檔 Parchive Parity Volume Set Archive - + PEF executable + PEF-uitvoerbaar PEF تنفيذي - Vykonvalny fajł PEF + Vykonvalny fajł PEF Изпълним файл — PEF executable PEF spustitelný soubor PEF PEF-kørbar PEF-Programm Εκτελέσιμο PEF - PEF executable + PEF executable PEF-plenumebla ejecutable PEF PEF exekutagarria PEF-ohjelma PEF inningarfør exécutable PEF + eseguibil PEF comhad inrite PEF Executábel PEF קובץ הרצה PEF @@ -18012,7 +18637,7 @@ executable PEF Program PEF executável PEF - Executável PEF + Executável PEF Executabil PEF Исполняемый файл PEF Spustiteľný súbor PEF @@ -18023,31 +18648,33 @@ PEF çalıştırılabilir виконуваний файл PEF Tập tin thực hiện được PEF - PEF 可执行文件 - PEF 可執行檔 + PEF 可执行文件 + PEF 可執行檔 - + Perl script + Perl-skrip سكربت بيرل - Skrypt Perl + Skrypt Perl Скрипт — Perl script Perl skript v Perlu Sgript Perl - Perlprogram + Perl-program Perl-Skript Δέσμη ενεργειών Perl - Perl script + Perl script Perl-skripto secuencia de órdenes en Perl Perl script-a Perl-komentotiedosto Perl boðrøð script Perl + script Perl script Perl Script de Perl תסריט מעטפת של Perl @@ -18068,7 +18695,7 @@ escript Perl Skrypt Perl script Perl - Script Perl + Script Perl Script Perl Сценарий Perl Skript jazyka Perl @@ -18079,40 +18706,41 @@ Perl betiği скрипт на Perl Văn lệnh Perl - Perl 脚本 - Perl 指令稿 + Perl 脚本 + Perl 指令稿 - - - - - - - - + + + + + - - - + + + + + + - - - + + + - - + + PHP script + PHP-skrip سكربت PHP PHP skripti - Skrypt PHP + Skrypt PHP Скрипт — PHP script PHP skript PHP @@ -18120,13 +18748,14 @@ PHP-program PHP-Skript Δέσμη ενεργειών PHP - PHP script + PHP script PHP-skripto secuencia de órdenes en PHP PHP script-a PHP-komentotiedosto PHP boðrøð script PHP + script PHP script PHP Script de PHP תסריט מעטפת של PHP @@ -18147,7 +18776,7 @@ escript PHP Skrypt PHP script PHP - Script PHP + Script PHP Script PHP Сценарий PHP Skript PHP @@ -18158,12 +18787,12 @@ PHP betiği скрипт PHP Văn lệnh PHP - PHP 脚本 - PHP 指令稿 + PHP 脚本 + PHP 指令稿 - + @@ -18173,19 +18802,21 @@ PKCS#7 certificate bundle + PKCS#7-sertifikaatbundel رزمة الشهادة PKCS#7 - Сбор със сертификати — PKCS#7 + Пакет със сертификати — PKCS#7 conjunt de certificats PKCS#7 svazek certifikátů PKCS#7 PKCS#7-certifikatbundt PKCS#7-Zertifikatspaket Πακέτο ψηφιακών πιστοποιητικών PKCS#7 - PKCS#7 certificate bundle + PKCS#7 certificate bundle lote de certificados PCKS#7 PKCS#7 zertifikazio sorta PKCS#7-varmennenippu PKCS#7 váttanar bundi lot de certificats PKCS#7 + côl di certificâts PKCS#7 burla teastas PKCS#7 paquete de certificado PKCS#7 בקשה מוסמכת PKCS#7 @@ -18203,7 +18834,7 @@ lòt de certificats PKCS#7 Pakiet certyfikatu PKCS#7 pacote de certificação PKCS#7 - Pacote de certificados PKCS#7 + Pacote de certificados PKCS#7 Pachet certificat PKCS#7 Пакет сертификата PKCS#7 Zväzok certifikátov PKCS#7 @@ -18213,8 +18844,8 @@ PKCS#7 sertifika paketi комплект сертифікатів PKCS#7 Bó chứng nhận PKCS#7 - PKCS#7 证书束 - PKCS#7 憑證綁包 + PKCS#7 证书束 + PKCS#7 憑證綁包 PKCS Public-Key Cryptography Standards @@ -18222,21 +18853,23 @@ PKCS#12 certificate bundle + PKCS#12-sertifikaatbundel رزمة الشهادة PKCS#12 - Viazka sertyfikataŭ PKCS#12 - Сбор със сертификати — PKCS#12 + Viazka sertyfikataŭ PKCS#12 + Пакет със сертификати — PKCS#12 conjunt de certificats PKCS#12 svazek certifikátů PKCS#12 PKCS#12-certifikatbundt PKCS#12-Zertifikatspaket Πακέτο ψηφιακών πιστοποιητικών PKCS#12 - PKCS#12 certificate bundle + PKCS#12 certificate bundle ligaĵo de PKCS#12-atestiloj lote de certificados PCKS#12 PKCS#12 zertifikazio sorta PKCS#12-varmennenippu PKCS#12 váttanar bundi lot de certificats PKCS#12 + côl di certificâts PKCS#12 burla teastas PKCS#12 paquete de certificado PKCS#12 בקשה מוסמכת PKCS#12 @@ -18257,7 +18890,7 @@ lòt de certificats PKCS#12 Pakiet certyfikatu PKCS#12 pacote de certificação PKCS#12 - Pacote de certificados PKCS#12 + Pacote de certificados PKCS#12 Certificat împachetat PKCS#12 Пакет сертификата PKCS#12 Zväzok certifikátov PKCS#12 @@ -18268,8 +18901,8 @@ PKCS#12 sertifika paketi комплект сертифікатів PKCS#12 Bó chứng nhận PKCS#12 - PKCS#12 证书束 - PKCS#12 憑證檔綁包 + PKCS#12 证书束 + PKCS#12 憑證綁包 PKCS Public-Key Cryptography Standards @@ -18278,20 +18911,22 @@ PlanPerfect spreadsheet + PlanPerfect-sigblad جدول PlanPerfect - Raźlikovy arkuš PlanPerfect + Raźlikovy arkuš PlanPerfect Таблица — PlanPerfect full de càlcul de PlanPerfect sešit PlanPerfect PlanPerfect-regneark PlanPerfect-Tabelle Φύλλο εργασίας PlanPerfect - PlanPerfect spreadsheet + PlanPerfect spreadsheet hoja de cálculo de PlanPerfect PlanPerfect kalkulu-orria PlanPerfect-taulukko PlanPerfect rokniark feuille de calcul PlanPerfect + sfuei di calcul PlanPerfect scarbhileog PlanPerfect folla de cálculo de PlanPerfect גליון נתונים של PlanPerfect @@ -18311,7 +18946,7 @@ fuèlh de calcul PlanPerfect Arkusz PlanPerfect folha de cálculo PlanPerfect - Planilha do PlanPerfect + Planilha do PlanPerfect Foaie de calcul PlanPerfect Электронная таблица PlanPerfect Zošit PlanPerfect @@ -18319,16 +18954,17 @@ Fletë llogaritjesh PlanPerfect табела План Перфекта PlanPerfect-kalkylblad - PlanPerfect çalışma sayfası + PlanPerfect hesap çizelgesi ел. таблиця PlanPerfect Bảng tính PlanPerfect - PlanPerfect 电子表格 - PlanPerfect 試算表 + PlanPerfect 电子表格 + PlanPerfect 試算表 Pocket Word document + Pocket Word-dokument مستند Pocket Word Documentu de PocketWord Документ — Pocket Word @@ -18337,12 +18973,13 @@ Pocket Word-dokument Pocket-Word-Dokument Έγγραφο Pocket Word - Pocket Word document + Pocket Word document documento de Pocket Word Pocket Word dokumentua Pocket Word -asiakirja Pocket Word skjal document Pocket Word + document Pocket Word cáipéis Pocket Word documento de Pocket Word מסמך של Pocket Word @@ -18360,7 +18997,7 @@ document Pocket Word Dokument Pocket Word documento Pocket Word - Documento do Pocket Word + Documento do Pocket Word Document Pocket Word Документ Pocket Word Dokument Pocket Word @@ -18370,32 +19007,34 @@ Pocket Word belgesi документ Pocket Word Tài liệu Pocket Word - Pocket Word 文档 - Pocket Word 文件 + Pocket Word 文档 + Pocket Word 文件 - + profiler results + profieldata نتائج المحلل profiler nəticələri - vyniki profilera + vyniki profilera Резултати от анализатора - resultats de profiler + resultats del perfilador výsledky profileru canlyniadau proffeilio profileringsresultater Profiler-Ergebnisse Αποτελέσματα μετρήσεων για την εκτέλεση προγράμματος - profiler results + profiler results resultoj de profililo resultados del perfilador profiler-aren emaitzak profilointitulokset résultats de profileur + risultâts profiladôr torthaí próifíleora resultados do perfilador תוצאות מאבחן @@ -18416,7 +19055,7 @@ resultats de perfilador Wyniki profilowania resultados de análise de perfil - Resultados do profiler + Resultados do profiler rezultate profiler Результаты профилирования Výsledky profilera @@ -18424,33 +19063,35 @@ Rezultate të profiluesit резултати профилатора profilerarresultat - profil sonuçları + profiler sonuçları результати профілювання kết quả nét hiện trạng - 探查器结果 - 硬體資訊產生器成果 + 探查器结果 + 硬體資訊產生器成果 Pathetic Writer document + Pathetic Writer-dokument مستند Pathetic Writer Documentu de Pathetic Writer - Dakument Pathetic Writer + Dakument Pathetic Writer Документ — Pathetic Writer document de Pathetic Writer dokument Pathetic Writer Pathetic Writer-dokument Pathetic-Writer-Dokument Έγγραφο Pathetic Writer - Pathetic Writer document + Pathetic Writer document dokumento de Pathetic Writer documento de Pathetic Writer Pathetic Writer dokumentua Pathetic Writer -asiakirja Pathetic Writer skjal document Pathetic Writer + document Pathetic Writer cáipéis Pathetic Writer documento de Pathetic Writer מסמך של Pathetic Writer @@ -18471,7 +19112,7 @@ document Pathetic Writer Dokument Pathetic Writer documento do Pathetic Writer - Documento do Pathetic Writer + Documento do Pathetic Writer Document Pathetic Writer Документ Pathetic Writer Dokument Pathetic Writer @@ -18482,30 +19123,32 @@ Pathetic Writer belgesi документ Pathetic Writer Tài liệu Pathetic Writer - Pathetic Writer 文档 - Pathetic Writer 文件 + Pathetic Writer 文档 + Pathetic Writer 文件 Python bytecode + Python binêre kode Python bytecode Python bayt kodu - Bajtavy kod Python + Bajtavy kod Python Байт код — Python bytecode de Python bajtový kód Python Côd beit Python - Pythonbytekode + Python-bytekode Python-Bytecode Συμβολοκώδικας Python - Python bytecode + Python bytecode Python-bajtkodo bytecode de Python Python byte-kodea Python-tavukoodi Python býtkota bytecode Python + bytecode di Python beartchód Python bytecode de Python Bytecode של Python @@ -18526,7 +19169,7 @@ bytecode Python Kod bajtowy Python código binário Python - Código compilado Python + Código compilado Python Bytecode Python Байт-код Python Bajtový kód Python @@ -18537,27 +19180,30 @@ Python bayt kodu байт-код Python Mã byte Python - Python 字节码 - Python 位元組碼 + Python 字节码 + Python 位元組碼 - + QtiPlot document + QtiPlot-dokument Documentu de QtiPlot + Документ — QtiPlot document QtiPlot dokument GtiPlot QtiPlot-dokument QtiPlot-Dokument Έγγραφο QtiPlot - QtiPlot document + QtiPlot document documento de QtiPlot QtiPlot dokumentua QtiPlot-asiakirja document QtiPlot + document QtiPlot cáipéis QtiPlot Documento de QtiPilot מסמך QtiPlot @@ -18573,7 +19219,7 @@ document QtiPlot Dokument QtiPlot documento QtiPlot - Documento do QtiPlot + Documento do QtiPlot Документ QtiPlot Dokument QtiPlot Dokument QtiPlot @@ -18581,8 +19227,8 @@ QtiPlot-dokument QtiPlot belgesi документ QtiPlot - QtiPlot 文档 - QtiPlot 文件 + QtiPlot 文档 + QtiPlot 文件 @@ -18593,21 +19239,23 @@ Quattro Pro spreadsheet + Quattro Pro-sigblad جدول Quattro Pro - Raźlikovy arkuš Quattro Pro + Raźlikovy arkuš Quattro Pro Таблица — Quattro Pro full de càlcul de Quattro Pro sešit Quattro Pro Quattro Pro-regneark Quattro-Pro-Tabelle Λογιστικό φύλλο Quattro Pro - Quattro Pro spreadsheet + Quattro Pro spreadsheet sterntabelo de Quattro Pro hoja de cálculo de Quattro Pro Quattro Pro kalkulu-orria Quattro Pro -taulukko Quattro Pro rokniark feuille de calcul Quattro Pro + sfuei di calcul Quattro Pro scarbhileog Quattro Pro folla de cálculo Quattro Pro גליון נתונים של Quattro Pro @@ -18628,7 +19276,7 @@ fuèlh de calcul Quattro Pro Arkusz Quattro Pro folha de cálculo Quattro Pro - Planilha do Quattro Pro + Planilha do Quattro Pro Foaie de calcul Quattro Pro Электронная таблица Quattro Pro Zošit Quattro Pro @@ -18636,70 +19284,48 @@ Fletë llogaritjesh Quattro Pro Кватро Про табела Quattro Pro-kalkylblad - Quattro Pro çalışma sayfası + Quattro Pro hesap çizelgesi ел. таблиця Quattro Pro Bảng tính Quattro Pro - Quattro Pro 电子表格 - Quattro Pro 試算表 + Quattro Pro 电子表格 + Quattro Pro 試算表 - QuickTime metalink playlist - قائمة تشغيل QuickTime metalink - śpis metaspasyłak na pieśni QuickTime + QuickTime playlist Списък за изпълнение — QuickTime - llista de reproducció de metaenllaços QuickTime - seznam k přehrání metalink QuickTime - QuickTime metalink-afspilningsliste - QuickTime-Metalink-Wiedergabeliste - Λίστα αναπαραγωγής metalinks QuickTime - QuickTime metalink playlist - lista de reproducción de metaenlaces QuickTime - QuickTime meta-esteken erreprodukzio-zerrenda - QuickTime metalink -soittolista - QuickTime metaleinkju avspælingarlisti - liste de lecture metalink QuickTime - seinmliosta meiteanasc QuickTime - lista de reprodución de metaligazóns QuickTime - רשימת השמעה מקושרת של QuickTime - QuickTime meta poveznica popisa izvođenja - QuickTime metalink lejátszólista - Lista de selection Metalink QuickTime - Senarai berkas taut meta QuickTime - Playlist metalink QuickTime - QuickTime メタリンク再生リスト - QuickTime метасілтемелер ойнау тізімі - 퀵타임 메타링크 재생 목록 - QuickTime metanuorodos grojaraštis - QuickTime metasaites repertuārs - QuickTime metalink-spilleliste - QuickTime metalink-afspeellijst - QuickTime metalink-speleliste - lista de lectura metalink QuickTime - Lista odtwarzania metaodnośników QuickTime - lista de reprodução QuickTime metalink - Lista de reprodução metalink do QuickTime - Listă cu metalegături QuickTime - Список воспроизведения мета-ссылок QuickTime - Zoznam skladieb metalink QuickTime - Seznam predvajanja QuickTime - Listë titujsh metalink QuickTime - списак нумера мета везе Квик Тајма - QuickTime-metalänkspellista - QuickTime metalink çalma listesi - список відтворення QuickTime metalink - Danh mục nhạc siêu liên kết Quicktime - QuickTime Metalink 播放列表 - QuickTime metalink 播放清單 + llista de reproducció QuickTime + QuickTime-afspilningsliste + QuickTime-Wiedergabeliste + QuickTime playlist + lista de reproducción de QuickTime + QuickTime erreprodukzio-zerrenda + QuickTime-soittolista + liste de lecture QuickTime + QuickTime popis izvođenja + QuickTime lejátszólista + Daftar putar QuickTime + Playlist QuickTime + QuickTime ойнау тізімі + 퀵타임 재생 목록 + Lista odtwarzania QuickTime + Lista de reprodução do QuickTime + Список воспроизведения QuickTime + Zoznam skladieb QuickTime + QuickTime-spellista + QuickTime çalma listesi + список відтворення QuickTime + QuickTime 播放列表 + QuickTime 播放清單 - + @@ -18709,10 +19335,11 @@ Quicken document + Quicken-dokument مستند Quicken Documentu de Quicken Quicken sənədi - Dakument Quicken + Dakument Quicken Документ — Quicken document Quicken dokument Quicken @@ -18720,13 +19347,14 @@ Quickendokument Quicken-Dokument Έγγραφο Quicken - Quicken document + Quicken document Quicken-dokumento documento de Quicken Quicken dokumentua Quicken-asiakirja Quicken skjal document Quicken + document Quicken cáipéis Quicken documento de Quicken מסמך של Quicken @@ -18747,7 +19375,7 @@ document Quicken Dokument Quicken documento Quicken - Documento do Quicken + Documento do Quicken Document Quicken Документ Quicken Dokument Quicken @@ -18758,15 +19386,16 @@ Quicken belgesi документ Quicken Tài liệu Quicken - Quicken 文档 - Quicken 文件 + Quicken 文档 + Quicken 文件 RAR archive + RAR-argief أرشيف RAR - Archiŭ RAR + Archiŭ RAR Архив — RAR arxiu RAR archiv RAR @@ -18774,13 +19403,14 @@ RAR-arkiv RAR-Archiv Συμπιεσμένο αρχείο RAR - RAR archive + RAR archive RAR-arkivo archivador RAR RAR artxiboa RAR-arkisto RAR skjalasavn archive RAR + archivi RAR cartlann RAR ficheiro RAR ארכיון RAR @@ -18801,7 +19431,7 @@ archiu RAR Archiwum RAR arquivo RAR - Pacote RAR + Pacote RAR Arhivă RAR Архив RAR Archív RAR @@ -18812,35 +19442,37 @@ RAR arşivi архів RAR Kho nén RAR - RAR 归档文件 - RAR 封存檔 + RAR 归档文件 + RAR 封存檔 RAR Roshal ARchive - + DAR archive + DAR-argief أرشيف DAR - Archiŭ DAR + Archiŭ DAR Архив — DAR arxiu DAR archiv DAR DAR-arkiv DAR-Archiv Συμπιεσμένο αρχείο DAR - DAR archive + DAR archive DAR-arkivo archivador DAR DAR artxiboa DAR-arkisto DAR skjalasavn archive DAR + archivi DAR cartlann DAR arquivo DAR ארכיון DAR @@ -18861,7 +19493,7 @@ archiu DAR Archiwum DAR arquivo DAR - Pacote DAR + Pacote DAR Arhivă DAR Архив DAR Archív DAR @@ -18872,31 +19504,33 @@ DAR arşivi архів DAR Kho nén DAR - DAR 归档文件 - DAR 封存檔 + DAR 归档文件 + DAR 封存檔 - + Alzip archive + Alzip-argief أرشيف Alzip - Archiŭ Alzip + Archiŭ Alzip Архив — alzip arxiu Alzip archiv Alzip - Alziparkiv + Alzip-arkiv Alzip-Archiv Συμπιεσμένο αρχείο Alzip - Alzip archive + Alzip archive Alzip-arkivo archivador Alzip Alzip artxiboa Alzip-arkisto Alsip skjalasavn archive alzip + archivi Alzip cartlann Alzip arquivo Alzip ארכיון Alzip @@ -18917,7 +19551,7 @@ archiu alzip Archiwum alzip arquivo Alzip - Pacote Alzip + Pacote Alzip Arhivă Alzip Архив ALZIP Archív Alzip @@ -18928,31 +19562,32 @@ Alzip arşivi архів Alzip Kho nén Alzip - Alzip 归档文件 - Alzip 封存檔 + Alzip 归档文件 + Alzip 封存檔 - + rejected patch رقعة مرفوضة - niepryniaty patch + niepryniaty patch Отхвърлен файл с кръпка pedaç rebutjat odmítnutá záplata - afvist tekstlap + afvist rettelse Abgelehnter Patch Διόρθωση που απορρίφθηκε - rejected patch + rejected patch reĵeta flikaĵo parche rechazado baztertutako adabakia hylättyjen muutosten tiedosto vrakað rætting correctif rejeté + blec refudât paiste diúltaithe parche rexeitado טלאי שנדחה @@ -18973,7 +19608,7 @@ correctiu regetat Odrzucona łata patch rejeitado - Arquivo de patch rejeitado + Arquivo de patch rejeitado petec respsins Отклонённый патч Odmietnutá záplata @@ -18984,8 +19619,8 @@ reddedilmiş yama відхилена латка đắp vá bị từ chối - 拒绝的补丁 - 回絕的修補 + 拒绝的补丁 + 回絕的修補 @@ -18993,21 +19628,23 @@ RPM package + RPM-pakket حزمة RPM - Pakunak RPM + Pakunak RPM Пакет — RPM paquet RPM balíček RPM RPM-pakke RPM-Paket Πακέτο RPM - RPM package + RPM package RPM-pakaĵo paquete RPM RPM paketea RPM-paketti RPM pakki paquet RPM + pachet RPM pacáiste RPM paquete RFM חבילת RPM @@ -19028,7 +19665,7 @@ paquet RPM Pakiet RPM pacote RPM - Pacote RPM + Pacote RPM Pachet RPM Пакет RPM Balík RPM @@ -19039,27 +19676,30 @@ RPM paketi пакунок RPM Gói RPM - RPM 软件包 - RPM 軟體包 + RPM 软件包 + RPM 軟體包 - + Source RPM package + Bron-RPM-pakket + Пакет — RPM с изходен код paquet RPM de codi font zdrojový balíček RPM Kilde RPM-pakke Quell-RPM-Paket Πακέτο πηγής RPM - Source RPM package + Source RPM package paquete de fuente RPM Iturburu RPM paketea RPM-lähdepaketti paquet source RPM + pachet sorzint RPM pacáiste foinse RPM Paquete RPM de fontes חבילת מקור RPM @@ -19075,7 +19715,7 @@ paquet font RPM Źródłowy pakiet RPM pacote origem RPM - Pacote fonte RPM + Pacote fonte RPM Пакет RPM с исходным кодом Zdrojový balík RPM Paket izvorne kode RPM @@ -19083,8 +19723,8 @@ Käll-RPM-paket Kaynak RPM paketi пакунок RPM з початковим кодом - 源码 RPM 软件包 - 來源 RPM 軟體包 + 源码 RPM 软件包 + 來源 RPM 軟體包 @@ -19092,21 +19732,23 @@ Ruby script + Ruby-skrip سكربت روبي - Skrypt Ruby + Skrypt Ruby Скрипт — Ruby script Ruby skript Ruby - Rubyprogram + Ruby-program Ruby-Skript Δέσμη ενεργειών Ruby - Ruby script + Ruby script Ruby-skripto secuencia de órdenes en Ruby Ruby script-a Ruby-komentotiedosto Ruby boðrøð script Ruby + script Ruby script Ruby Script de Ruby תסריט Ruby @@ -19127,7 +19769,7 @@ escript Ruby Skrypt Ruby script Ruby - Script Ruby + Script Ruby Script Ruby Сценарий Ruby Skript Ruby @@ -19138,34 +19780,36 @@ Ruby betiği скрипт Ruby Văn lệnh Ruby - Ruby 脚本 - Ruby 指令稿 + Ruby 脚本 + Ruby 指令稿 - - + + Markaby script + Markaby-skrip سكربت Markaby - Skrypt Markaby + Skrypt Markaby Скрипт — Markaby script Markaby skript Markaby - Markabyprogram + Markaby-program Markaby-Skript Δέσμη ενεργειών Markaby - Markaby script + Markaby script Markaby-skripto secuencia de órdenes en Markaby Markaby script-a Markaby-komentotiedosto Markaby boðrøð script Markaby + script Markaby script Markaby Script de Markaby תסריט Markby @@ -19186,7 +19830,7 @@ escript Markaby Skrypt Markaby script Markaby - Script Markaby + Script Markaby Script Markaby Сценарий Markaby Skript Markaby @@ -19197,24 +19841,27 @@ Markaby betiği скрипт Markaby Văn lệnh Markaby - RMarkaby 脚本 - Markaby 指令稿 + RMarkaby 脚本 + Markaby 指令稿 Rust source code + Rust-bronkode + Изходен код — Rust codi font en Rust zdrojový kód v jazyce Rust Rust-kildekode Rust-Quelltext Πηγαίος κώδικας Rust - Rust source code + Rust source code código fuente en Rust Rust iturburu-kodea Rust-lähdekoodi code source Rust + codiç sorzint Rust cód foinseach Rust קוד מקור של Rust Rust izvorni kôd @@ -19227,35 +19874,38 @@ còde font Rust Kod źródłowy Rust código origem Rust - Código-fonte Rust + Código-fonte Rust Исходный код Rust Zdrojový kód Rust + Izvorna koda Rust Раст изворни ко̂д Rust-källkod Rust kaynak kodu вихідний код мовою Rust - Rust 源代码 - Rust 源碼 + Rust 源代码 + Rust 源碼 SC/Xspread spreadsheet + SC/Xspread-sigblad جدول SC/Xspread - Raźlikovy arkuš SC/Xspread + Raźlikovy arkuš SC/Xspread Таблица — SC/Xspread full de càlcul de SC/Xspread sešit SC/Xspread SC/Xspread-regneark SX/Xspread-Tabelle Λογιστικό φύλλο SC/Xspread - SC/Xspread spreadsheet + SC/Xspread spreadsheet SC/Xspread-kalkultabelo hoja de cálculo SC/Xspread SC/Xspread kalkulu-orria SC/Xspread-taulukko SC/Xspread rokniark feuille de calcul SC/Xspread + sfuei di calcul SC/Xspread scarbhileog SC/Xspread folla de cálculo SC/Xspread גליון נתונים של SC/Xspread @@ -19275,7 +19925,7 @@ fuèlh de calcul SC/Xspread Arkusz SC/Xspread folha de cálculo SC/Xspread - Planilha do SC/Xspread + Planilha do SC/Xspread Foaie de calcul SC/Xspread Электронная таблица SC/Xspread Zošit SC/Xspread @@ -19283,35 +19933,37 @@ Fletë llogaritjesh SC/Xspread табела СЦ/Икс-табеле SC/Xspread-kalkylblad - SC/Xspread çalışma sayfası + SC/Xspread hesap çizelgesi ел. таблиця SC/Xspread Bảng tính SC/Xspread - SC/Xspread 电子表格 - SC/Xspread 試算表 + SC/Xspread 电子表格 + SC/Xspread 試算表 - + shell archive + shell-argief أرشيف شِل qabıq arxivi - archiŭ abałonki + archiŭ abałonki Архив на обвивката arxiu de shell archiv shellu archif plisgyn - skalarkiv + skal-arkiv Shell-Archiv Αρχείο κέλυφους - shell archive + shell archive ŝel-arkivo archivador shell shell artxiboa komentotulkkiarkisto skel savn archive shell + archivi shell cartlann bhlaoisce ficheiro shell ארכיון מעטפת @@ -19332,7 +19984,7 @@ archiu shell Archiwum powłoki arquivo de terminal - Pacote shell + Pacote shell arhivă shell Архив shell Archív shellu @@ -19343,27 +19995,29 @@ kabuk arşivi архів оболонки kho trình bao - shell 归档文件 - shell 封存檔 + shell 归档文件 + shell 封存檔 libtool shared library + libtool- gedeelde biblioteek مكتبة libtool المشتركة - supolnaja biblijateka libtool + supolnaja biblijateka libtool Споделена библиотека — libtool biblioteca compartida libtool sdílená knihovna libtool libtool delt bibliotek Gemeinsame libtool-Bibliothek Κοινόχρηστη βιβλιοθήκη libtool - libtool shared library + libtool shared library biblioteca compartida de libtool libtool partekatutako liburutegia jaettu libtool-kirjasto libtool felagssavn bibliothèque partagée libtool + librarie condividude libtool comhleabharlann libtool biblioteca compartida de libtool ספרייה משותפת של libtool @@ -19383,7 +20037,7 @@ bibliotèca partejada libtool Biblioteka współdzielona libtool biblioteca partilhada libtool - Biblioteca compartilhada libtool + Biblioteca compartilhada libtool bibliotecă partajată libtool Разделяемая библиотека libtool Zdieľaná knižnica libtool @@ -19394,17 +20048,18 @@ libtool paylaşımlı kitaplığı спільна бібліотека libtool thư viện dùng chung libtool - libtool 共享库 - libtool 共享函式庫 + libtool 共享库 + libtool 共享函式庫 shared library + gedeelde biblioteek مكتبة مشتركة bölüşülmüş kitabxana - supolnaja biblijateka + supolnaja biblijateka Споделена библиотека biblioteca compartida sdílená knihovna @@ -19412,13 +20067,14 @@ delt bibliotek Gemeinsame Bibliothek Αρχείο κοινόχρηστης βιβλιοθήκης - shared library + shared library dinamike bindebla biblioteko biblioteca compartida partekatutako liburutegia jaettu kirjasto felagssavn bibliothèque partagée + librarie condividude comhleabharlann biblioteca compartida ספרייה משותפת @@ -19439,7 +20095,7 @@ bibliotèca partejada Biblioteka współdzielona biblioteca partilhada - Biblioteca compartilhada + Biblioteca compartilhada bibliotecă partajată Разделяемая библиотека Zdieľaná knižnica @@ -19450,45 +20106,36 @@ paylaşımlı kitaplık спільна бібліотека thư viện dùng chung - 共享库 - 共享函式庫 + 共享库 + 共享函式庫 - - - - + + - - - - - - - - - shell script + shell-skrip سكربت شِل qabıq skripti - skrypt abałonki + skrypt abałonki Скрипт на обвивката script shell skript shellu sgript plisgyn - skalprogram + skal-program Shell-Skript Δέσμη ενεργειών κελύφους - shell script + shell script ŝelskripto secuencia de órdenes en shell shell script-a komentotulkin komentotiedosto skel boðrøð script shell + script shell script bhlaoisce script de shell תסריט מעטפת @@ -19509,7 +20156,7 @@ escript shell Skrypt powłoki script de terminal - Script shell + Script shell script shell Сценарий shell Skript shellu @@ -19520,44 +20167,46 @@ kabuk betiği скрипт оболонки văn lệnh trình bao - shell 脚本 - shell 指令稿 + shell 脚本 + shell 指令稿 - - - - - - - - - - - + + + + + + + + + + + Shockwave Flash file + Shockwave Flash-lêer ملف Shockwave Flash - Fajł Shockwave Flash + Fajł Shockwave Flash Файл — Shockwave Flash fitxer Shockwave Flash soubor Shockwave Flash Shockwave Flash-fil Shockwave-Flash-Datei Αρχείο Shockwave Flash - Shockwave Flash file + Shockwave Flash file dosiero de Shockwave Flash archivo Shockwave Flash Shockwave Flash fitxategia Shockwave Flash -tiedosto Shockwave Flash fíla fichier Shockwave Flash + file Shockwave Flash comhad Shockwave Flash ficheiro sockwave Flash קובץ של Shockwave Flash @@ -19578,7 +20227,7 @@ fichièr Shockwave Flash Plik Shockwave Flash ficheiro Shockwave Flash - Arquivo Shockwave Flash + Arquivo Shockwave Flash Fișier Shockwave Flash Файл Shockwave Flash Súbor Shockwave Flash @@ -19589,36 +20238,38 @@ Shockwave Flash dosyası файл Shockwave Flash Tập tin Flash Shockwave - Shockwave Flash 文件 - Shockwave Flash 檔案 + Shockwave Flash 文件 + Shockwave Flash 檔案 - - + + - + Shorten audio + Shorten-oudio Shorten سمعي - Aŭdyjo Shorten + Aŭdyjo Shorten Аудио — Shorten àudio de Shorten zvuk Shorten - Shortenlyd + Shorten-lyd Shorten-Audio Ήχος Shorten - Shorten audio + Shorten audio Shorten-sondosiero - sonido Shorten + audio Shorten Shorten audioa Shorten-ääni Shorten ljóður audio Shorten + audio Shorten fuaim Shorten son Shorten שמע של Shorten @@ -19638,7 +20289,7 @@ àudio Shorten Plik dźwiękowy Shorten áudio Shorten - Áudio Shorten + Áudio Shorten Audio Shorten Аудио Shorten Zvuk Shorten @@ -19646,35 +20297,37 @@ Audio Shorten Шортен звук Shorten-ljud - Kısaltılmış ses + Shorten sesi звук Shorten Âm thanh Shorten - Shorten 音频 - Shorten 音訊 + Shorten 音频 + Shorten 音訊 - + Siag spreadsheet + Siag-sigblad جدول Siag - Raźlikovy arkuš Siag + Raźlikovy arkuš Siag Таблица — Siag full de càlcul Siag sešit Siag Siagregneark Siag-Tabelle Λογιστικό φύλλο Siag - Siag spreadsheet + Siag spreadsheet Siag-kalkultabelo hoja de cálculo de Siag Siag kalkulu-orria Siag-taulukko Siag rokniark feuille de calcul Siag + sfuei di calcul Siag scarbhileog Siag folla de cálculo de Siag גליון נתונים של Siag @@ -19695,7 +20348,7 @@ fuèlh de calcul Siag Arkusz Siag folha de cálculo Siag - Planilha do Siag + Planilha do Siag Foaie de calcul Siag Электронная таблица Siag Zošit Siag @@ -19703,32 +20356,34 @@ Fletë llogaritjesh Siag Сјаг табела Siag-kalkylblad - Siag çalışma sayfası + Siag hesap çizelgesi ел. таблиця Siag Bảng tính Slag - Siag 电子表格 - Siag 試算表 + Siag 电子表格 + Siag 試算表 Skencil document + Skencil-dokument مستند Skencil Documentu de Skencil - Dakument Skencil + Dakument Skencil Документ — Skencil document Skencil dokument Skencil Skencildokument Skencil-Dokument Έγγραφο Skencil - Skencil document + Skencil document Skencil-dokumento documento de Skencil Skencil dokumentua Skencil-asiakirja Skencil skjal document Skencil + document Skencil cáipéis Skencil documento Skencil מסמך Skencil @@ -19747,7 +20402,7 @@ document Skencil Dokument Skencil documento Skencil - Documento do Skencil + Documento do Skencil Document Skencil Документ Skencil Dokument Skencil @@ -19758,19 +20413,20 @@ Skencil belgesi документ Skencil Tài liệu Skencil - Skencil 文档 - Skencil 文件 + Skencil 文档 + Skencil 文件 - + Stampede package + Stampede-pakket حزمة Stampede Stampede paketi - Pakunak Stampede + Pakunak Stampede Пакет — Stampede paquet Stampede balíček Stampede @@ -19778,13 +20434,14 @@ Stampedepakke Stampede-Paket Πακέτο Stampede - Stampede package + Stampede package Stampede-pakaĵo paquete Stampede Stampede paketea Stampede-paketti Stampede pakki paquet Stampede + pachet Stampede pacáiste Stampede paquete Stampede חבילה של Stampede @@ -19805,7 +20462,7 @@ paquet Stampede Pakiet Stampede pacote Stampede - Pacote Stampede + Pacote Stampede Pachet Stampede Пакет Stampede Balíček Stampede @@ -19816,21 +20473,23 @@ Stampede paketi пакунок Stampede Gói Stampede - Stampede 软件包 - Stampede 軟體包 + Stampede 软件包 + Stampede 軟體包 SG-1000 ROM + ROM — SG-1000 ROM de SG-1000 ROM pro SG-1000 - SG-1000 ROM + SG-1000-ROM SG-1000 ROM - SG-1000 ROM + SG-1000 ROM ROM de SG-1000 SG-1000 ROM SG-1000 -ROM ROM SG-1000 + ROM SG-1000 ROM SG-1000 SG-1000 ROM SG-1000 ROM @@ -19839,30 +20498,33 @@ SG-1000 ROM SG-1000 롬 Plik ROM konsoli SG-1000 - ROM de SG-1000 + ROM de SG-1000 SG-1000 ROM ROM pre SG-1000 + SG-1000 ROM СГ-1000 РОМ SG-1000-rom SG-1000 ROM ППП SG-1000 - SG-1000 ROM - SG-1000 ROM + SG-1000 ROM + SG-1000 ROM - + Master System ROM + ROM — Master System ROM de Master System ROM pro Master System - Master System ROM + Master System-ROM Master System ROM - Master System ROM + Master System ROM ROM de Master System Master System ROM Master System -ROM ROM Master System + ROM Master System ROM Master System Master System ROM Master System ROM @@ -19871,30 +20533,38 @@ Master System ROM 마스터 시스템 롬 Plik ROM konsoli SMS - ROM de Master System + ROM de Master System Master System ROM ROM pre Master System Мастер Систем РОМ Master System-rom Master System ROM ППП Master System - Master System ROM - Master System ROM + Master System ROM + Master System ROM - + Game Gear ROM + ROM — Game Gear ROM de Game Gear ROM pro Game Gear - Game Gear ROM + Game Gear-ROM Game Gear ROM - Game Gear ROM + Game Gear ROM ROM de Game Gear Game Gear ROM Game Gear -ROM ROM Game Gear + ROM Game Gear ROM Game Gear Game Gear ROM Game Gear ROM @@ -19903,36 +20573,44 @@ Game Gear ROM 게임 기어 롬 Plik ROM konsoli Game Gear - ROM de Game Gear + ROM de Game Gear Game Gear ROM ROM pre Game Gear Гејм Гир РОМ Game Gear-rom Game Gear ROM ППП Game Gear - Game Gear ROM - Game Gear ROM + Game Gear ROM + Game Gear ROM - + - + Super NES ROM Super NES ROM - Super Nintendo ROM + Super Nintendo ROM ROM — Super NES ROM de Super NES ROM pro Super Nintendo - Super NES-rom + Super NES-ROM Super NES ROM Super NES ROM - Super NES ROM + Super NES ROM ROM de Super NES Super Nintendo-ko ROMa Super Nintendo -ROM Super NES ROM ROM Super Nintendo + ROM Super Nintendo ROM Super NES ROM de Super NES ROM של Super NES @@ -19952,7 +20630,7 @@ ROM Super Nintendo Plik ROM konsoli SNES ROM Super Nintendo - ROM de Super Nintendo + ROM de Super Nintendo ROM Super Nintendo Super NES ROM ROM pre Super Nintendo @@ -19963,8 +20641,8 @@ Super NES ROM ППП Super NES ROM Super Nintendo - Super NES ROM - 超級任天堂 ROM + Super NES ROM + 超級任天堂 ROM @@ -19972,21 +20650,23 @@ StuffIt archive + StuffIt-argief أرشيف StuffIt - Archiŭ StuffIt + Archiŭ StuffIt Архив — StuffIt arxiu StuffIt archiv StuffIt StuffIt-arkiv StuffIt-Archiv Συμπιεσμένο αρχείο StuffIt - StuffIt archive + StuffIt archive StuffIt-arkivo archivador de StuffIt StuffIt artxiboa StuffIt-arkisto StuffIt skjalasavn archive StuffIt + archivi StuffIt cartlann StuffIt arquivo StuffIt ארכיון של StuffIt @@ -20006,7 +20686,7 @@ archiu StuffIt Archiwum StuffIt arquivo StuffIt - Pacote StuffIt + Pacote StuffIt Arhivă StuffIt Архив StuffIt Archív StuffIt @@ -20017,34 +20697,36 @@ StuffIt arşivi архів StuffIt Kho nén Stuffit - Macintosh StuffIt 归档文件 - StuffIt 封存檔 + Macintosh StuffIt 归档文件 + StuffIt 封存檔 - - + + SubRip subtitles + SubRip-onderskrifte ترجمات SubRip - Subtytry SubRip + Subtytry SubRip Субтитри — SubRip subtítols SubRip titulky SubRip SubRip-undertekster SubRip-Untertitel Υπότιτλοι SubRip - SubRip subtitles + SubRip subtitles SubRip-subtekstoj subtítulos SubRip SubRip azpitituluak SubRip-tekstitykset SubRip undirtekstir sous-titres SubRip + sottitui SubRip fotheidil SubRip subtítulos SubRip כתוביות של SubRip @@ -20064,7 +20746,7 @@ sostítols SubRip Napisy SubRip legendas SubRip - Legendas SubRip + Legendas SubRip Subtitrare SubRip Субтитры SubRip Titulky SubRip @@ -20072,34 +20754,36 @@ Nëntituj SubRip Суб Рип преводи SubRip-undertexter - SubRip altyazıları + SubRip alt yazıları субтитри SubRip Phụ đề SubRip - SubRip 字幕 - SubRip 字幕 + SubRip 字幕 + SubRip 字幕 - - + + WebVTT subtitles + WebVTT-onderskrifte Субтитри — WebVTT subtítols WebVTT titulky WebVTT WebVTT-undertekster WebVTT-Untertitel Υπότιτλοι WebVTT - WebVTT subtitles + WebVTT subtitles subtítulos WebVTT WebVTT azpitituluak WebVTT-tekstitykset sous-titres WebVTT + sottitui WebVTT fotheidil WebVTT subtítulos WebVTT כתוביות WebVTT @@ -20117,42 +20801,44 @@ sostítols WebVTT Napisy WebVTT legendas WebVTT - Legendas WebVTT + Legendas WebVTT Субтитры WebVTT Titulky WebVTT Podnapisi WebVTT Веб ВТТ преводи WebVTT-undertexter - WebVTT altyazıları + WebVTT alt yazıları субтитри WebVTT - WebVTT 字幕 - WebVTT 字幕 + WebVTT 字幕 + WebVTT 字幕 VTT Video Text Tracks - + SAMI subtitles + SAMI-onderskrifte ترجمات SAMI - Subtytry SAMI + Subtytry SAMI Субтитри — SAMI subtítols SAMI titulky SAMI SAMI-undertekster SAMI-Untertitel Υπότιτλοι SAMI - SAMI subtitles + SAMI subtitles SAMI-subtekstoj subtítulos SAMI SAMI azpitituluak SAMI-tekstitykset SAMI undirtekstir sous-titres SAMI + sottitui SAMI fotheidil SAMI subtítulos SAMI כתוביות SAMI @@ -20172,7 +20858,7 @@ sostítols SAMI Napisy SAMI legendas SAMI - Legendas SAMI + Legendas SAMI Subtitrări SAMI Субтитры SAMI Titulky SAMI @@ -20180,38 +20866,40 @@ Nëntituj SAMI САМИ преводи SAMI-undertexter - SAMI altyazıları + SAMI alt yazıları субтитри SAMI Phụ đề SAMI - SAMI 字幕 - SAMI 字幕 + SAMI 字幕 + SAMI 字幕 SAMI Synchronized Accessible Media Interchange - + MicroDVD subtitles + MicroDVD-onderskrifte ترجمات MicroDVD - Subtytry MicroDVD + Subtytry MicroDVD Субтитри — MicroDVD subtítols MicroDVD titulky MicroDVD MicroDVD-undertekster MicroDVD-Untertitel Υπότιτλοι MicroDVD - MicroDVD subtitles + MicroDVD subtitles MicroDVD-subtekstoj subtítulos de MicroDVD MicroDVD azpitituluak MicroDVD-tekstitykset MicroDVD undirtekstir sous-titres MicroDVD + sottitui MicroDVD fotheidil MicroDVD subtítulos de MicroDVD כתוביות של MicroDVD @@ -20232,7 +20920,7 @@ sostítols MicroDVD Napisy MicroDVD legendas MicroDVD - Legendas MicroDVD + Legendas MicroDVD Subtitrări MicroDVD Субтитры MicroDVD Titulky MicroDVD @@ -20240,36 +20928,38 @@ Nëntituj MicroDVD Микро ДВД преводи MicroDVD-undertexter - MicroDVD altyazısı + MicroDVD alt yazısı субтитри MicroDVD Phụ đề MicroDVD - MicroDVD 字幕 - MicroDVD 字幕 + MicroDVD 字幕 + MicroDVD 字幕 - - - + + + MPSub subtitles + MPSub-onderskrifte ترجمات MPSub - Subtytry MPSub + Subtytry MPSub Субтитри — MPSub subtítols MPSub titulky MPSub MPSub-undertekster MPSub-Untertitel Υπότιτλοι MPSub - MPSub subtitles + MPSub subtitles MPSub-subtekstoj subtítulos MPSub MPSub azpitituluak MPSub-tekstitykset MPSub undirtekstir sous-titres MPSub + sottitui MPSub fotheidil MPSub subtítulos MPSub כתוביות MPSub @@ -20290,7 +20980,7 @@ sostítols MPSub Napisy MPSub legendas MPSub - Legendas MPSub + Legendas MPSub Subtitrări MPSub Субтитры MPSub Titulky MPSub @@ -20298,36 +20988,38 @@ Nëntituj MPSub МПСуб преводи MPSub-undertexter - MPSub altyazıları + MPSub alt yazıları субтитри MPSub Phụ đề MPSub - MPSub 字幕 - MPSub 字幕 + MPSub 字幕 + MPSub 字幕 MPSub MPlayer Subtitle - + SSA subtitles + SSA-onderskrifte ترجمات SSA - Subtytry SSA + Subtytry SSA Субтитри — SSA subtítols SSA titulky SSA SSA-undertekster SSA-Untertitel Υπότιτλοι SSA - SSA subtitles + SSA subtitles SSA-subtekstoj subtítulos SSA SSA azpitituluak SSA-tekstitykset SSA undirtekstir sous-titres SSA + sottitui SSA fotheidil SSA Subtitulos SSA כתובית SSA @@ -20347,7 +21039,7 @@ sostítols SSA Napisy SSA legendas SSA - Legendas SSA + Legendas SSA Subtitrări SSA Субтитры SSA Titulky SSA @@ -20355,38 +21047,40 @@ Nëntituj SSA ССА преводи SSA-undertexter - SSA altyazıları + SSA alt yazıları субтитри SSA Phụ đề SSA - SSA 字幕 - SSA 字幕 + SSA 字幕 + SSA 字幕 SSA SubStation Alpha - - + + SubViewer subtitles + SubViewer-onderskrifte ترجمات SubViewer - Subtytry SubViewer + Subtytry SubViewer Субтитри — SubViewer subtítols SubViewer titulky SubViewer SubViewer-undertekster SubViewer-Untertitel Υπότιτλοι SubViewer - SubViewer subtitles + SubViewer subtitles SubViewer-subtekstoj subtítulos SubViewer SubViewer azpitituluak SubViewer-tekstitykset SubViewer undirtekstir sous-titres SubViewer + sottitui SubViewer fotheidil SubViewer subtítulos SubViewer כתוביות של SubViewer @@ -20406,7 +21100,7 @@ sostítols SubViewer Napisy SubViewer legendas SubViewer - Legendas SubViewer + Legendas SubViewer Subtitrare SubViewer Субтитры SubViewer Titulky SubViewer @@ -20414,33 +21108,35 @@ Nëntituj SubViewer Суб Вјивер преводи SubViewer-undertexter - SubViewer altyazıları + SubViewer alt yazıları субтитри SubViewer Phụ đề SubViewer - SubViewer 字幕 - SubViewer 字幕 + SubViewer 字幕 + SubViewer 字幕 - + iMelody ringtone + iMelody-luitoon نغمة iMelody - Rington iMelody + Rington iMelody Аудио — iMelody to de trucada iMelody vyzváněcí melodie iMelody iMelody-ringetone iMelody-Klingelton ringtone iMelody - iMelody ringtone + iMelody ringtone tono de llamada iMelody iMelody doinua iMelody-soittoääni iMelody ringitóni sonnerie iMelody + sunarie iMelody ton buailte iMelody Melodía de iMelody צלצול של iMelody @@ -20460,7 +21156,7 @@ sonariá iMelody Dzwonek iMelody toque iMelody - Toque de celular do iMelody + Toque de celular do iMelody Sonerie iMelody Мелодия iMelody Vyzváňacie melódie iMelody @@ -20471,33 +21167,35 @@ iMelody melodisi рінгтон iMelody tiếng réo iMelody - iMelody 铃声 - iMelody 鈴聲 + iMelody 铃声 + iMelody 鈴聲 - + - + SMAF audio + SMAF-oudio SMAF سمعي - Aŭdyjo SMAF + Aŭdyjo SMAF Аудио — SMAF àudio SMAF zvuk SMAF SMAF-lyd SMAF-Audio Ήχος SMAF - SMAF audio + SMAF audio SMAF-sondosiero - sonido SMAF + audio SMAF SMAF audioa SMAF-ääni SMAF ljóður audio SMAF + audio SMAF fuaim SMAF son SMAF שמע SMAF @@ -20517,7 +21215,7 @@ àudio SMAF Plik dźwiękowy SMAF áudio SMAF - Áudio SMAF + Áudio SMAF Audio SMAF Аудио SMAF Zvuk SMAF @@ -20528,35 +21226,37 @@ SMAF sesi звук SMAF Âm thanh SMAF - SMAF 音频 - SMAF 音訊 + SMAF 音频 + SMAF 音訊 SMAF Synthetic music Mobile Application Format - + - + MRML playlist + MRML-speellys قائمة تشغيل MRML - Śpis piesień MRML + Śpis piesień MRML Списък за изпълнение — MRML llista de reproducció MRML seznam k přehrání MRML MRML-afspilningsliste MRML-Wiedergabeliste Λίστα αναπαραγωγής MRML - MRML playlist + MRML playlist MRML-ludlisto lista de reproducción MRML MRML erreprodukzio-zerrenda MRML-soittolista MRML avspælingarlisti liste de lecture MRML + liste di riproduzion MRML seinmliosta MRML lista de reprodución MRML רשימת השמעה MRML @@ -20577,7 +21277,7 @@ lista de lectura MRML Lista odtwarzania MRML lista de reprodução MRML - Lista de reprodução do MRML + Lista de reprodução do MRML Listă redare MRML Список воспроизведения MRML Zoznam skladieb MRML @@ -20585,36 +21285,38 @@ Listë titujsh MRML МРМЛ списак нумера MRML-spellista - MRML oynatma listesi + MRML çalma listesi список відтворення MRML Danh mục nhạc MRML - MRML 播放列表 - MRML 播放清單 + MRML 播放列表 + MRML 播放清單 MRML Multimedia Retrieval Markup Language - + XMF audio + XMF-oudio XMF سمعي - Aŭdyjo XMF + Aŭdyjo XMF Аудио — XMF àudio XMF zvuk XMF XMF-lyd XMF-Audio Ήχος XMF - XMF audio + XMF audio XMF-sondosiero - sonido XMF + audio XMF XMF audioa XMF-ääni XMF ljóður audio XMF + audio XMF fuaim XMF son XMF שמע XMF @@ -20634,7 +21336,7 @@ àudio XMF Plik dźwiękowy XMF aúdio XMF - Áudio XMF + Áudio XMF Audio XMF Аудио XMF Zvuk XMF @@ -20645,13 +21347,13 @@ XMF sesi звук XMF Âm thanh XMF - XMF 音频 - XMF 音訊 + XMF 音频 + XMF 音訊 XMF eXtensible Music Format - - + + @@ -20659,23 +21361,25 @@ SV4 CPIO archive + SV4 CPIO-argief أرشيف SV4 CPIO SV4 CPIO arxivi - Archiŭ SV4 CPIO + Archiŭ SV4 CPIO Архив — SV4 CPIO - arxiu CPIO SV4 + arxiu SV4 CPIO archiv SV4 CPIO Archif CPIO SV4 SV4 CPIO-arkiv SV4-CPIO-Archiv Συμπιεσμένο αρχείο SV4 CPIO - SV4 CPIO archive + SV4 CPIO archive SV4-CPIO-arkivo archivador SV4 CPIO SV4 CPIO artxiboa SV4 CPIO -arkisto SV4 CPIO skjalasavn archive SV4 CPIO + archivi SV4 CPIO cartlann SV4 CPIO arquivo SV4 CPIO ארכיון של SV4 SPIO @@ -20696,7 +21400,7 @@ archiu SV4 CPIO Archiwum SV4 CPIO arquivo SV4 CPIO - Pacote SV4 CPIO + Pacote SV4 CPIO Arhivă SV4 CPIO Архив SV4 CPIO Archív SV4 CPIO @@ -20707,28 +21411,30 @@ SV4 CPIO arşivi архів SV4 CPIO Kho nén CPIO SV4 - SV4 CPIO 归档文件 - SV4 CPIO 封存檔 + SV4 CPIO 归档文件 + SV4 CPIO 封存檔 SV4 CPIO archive (with CRC) + SV4 CPIO-argief (met CRC) أرشيف SV4 CPIO (مع CRC) - Archiŭ SV4 CPIO (z CRC) + Archiŭ SV4 CPIO (z CRC) Архив — SV4 CPIO, проверка за грешки CRC - arxiu CPIO SV4 (amb CRC) + arxiu SV4 CPIO (amb CRC) archiv SV4 CPIO (s CRC) SV4 CPIO-arkiv (med CRC) SV4-CPIO-Archiv (mit CRC) Συμπιεσμένο αρχείο SV4 CPIO (με CRC) - SV4 CPIO archive (with CRC) + SV4 CPIO archive (with CRC) SV4-CPIO-arkivo (kun CRC) archivador SV4 CPIO (con CRC) SV4 CPIO artxiboa (CRC-rekin) SV4 CPIO -arkisto (CRC:llä) SV4 CPIO skjalasavn (við CRC) archive SV4 CPIO (avec CRC) + archivi SV4 CPIO (cun CRC) cartlann SV4 CPIO (le CRC) Arquivador SV4 CPIO (con CRC) ארכיון של SV4 SPIO (עם CRC) @@ -20747,9 +21453,9 @@ SV4 CPIO-archief (met CRC) SV4 CPIO arkiv (med CRC) archiu SV4 CPIO (avec CRC) - Archiwum SV4 CPIO (z sumą kontrolną) + Archiwum SV4 CPIO (z sumą kontrolną) arquivo SV4 CPIO (com CRC) - Pacote SV4 CPIO (com CRC) + Pacote SV4 CPIO (com CRC) Arhivă SV4 CPIO (cu CRC) Архив SV4 CPIO (с CRC) Archív SV4 CPIO (s CRC) @@ -20760,16 +21466,17 @@ SV4 CPIO arşivi (CRC ile) архів SV4 CPIO (з CRC) Kho nén CPIO SV4 (với CRC) - SV4 CPIP 归档文件(带 CRC) - SV4 CPIO 封存檔 (具有 CRC) + SV4 CPIP 归档文件(带 CRC) + SV4 CPIO 封存檔 (具有 CRC) Tar archive + Tar-argief أرشيف Tar Tar arxivi - Archiŭ tar + Archiŭ tar Архив — tar arxiu tar archiv Tar @@ -20777,12 +21484,13 @@ Tar-arkiv Tar-Archiv Συμπιεσμένο αρχείο Tar - Tar archive + Tar archive archivador Tar Tar artxiboa Tar-arkisto Tar skjalasavn archive tar + archivi Tar cartlann Tar arquivo Tar ארכיון Tar @@ -20803,10 +21511,10 @@ archiu tar Archiwum tar arquivo Tar - Pacote Tar + Pacote Tar Arhivă Tar Архив TAR - Archív tar + Archív Tar Datoteka arhiva Tar Arkiv tar Тар архива @@ -20814,13 +21522,13 @@ Tar arşivi архів tar Kho nén tar - Tar 归档文件 - Tar 封存檔 + Tar 归档文件 + Tar 封存檔 - - + + @@ -20828,20 +21536,22 @@ Tar archive (compressed) + Tar-argief (saamgepers) أرشيف Tar (مضغوط) - Archiŭ tar (skampresavany) + Archiŭ tar (skampresavany) Архив — tar, компресиран arxiu tar (amb compressió) archiv Tar (komprimovaný) Tar-arkiv (komprimeret) Tar-Archiv (komprimiert) Αρχείο Tar (συμπιεσμένο) - Tar archive (compressed) + Tar archive (compressed) archivador Tar (comprimido) Tar artxiboa (konprimitua) Tar-arkisto (pakattu) Tar skjalasavn (stappað) archive tar (compressée) + archivi Tar (comprimût) cartlann Tar (comhbhrúite) arquivo Tar (comprimido) ארכיון Tar (מכווץ) @@ -20861,10 +21571,10 @@ archiu tar (compressat) Archiwum tar (skompresowane) arquivo Tar (comprimido) - Pacote Tar (compactado) + Pacote Tar (compactado) Arhivă Tar (comprimată) Архив TAR (сжатый) - Archív tar (komprimovaný) + Archív Tar (komprimovaný) Datoteka arhiva Tar (stisnjen) Arkiv tar (i kompresuar) Тар архива (запакована) @@ -20872,8 +21582,8 @@ Tar arşivi (sıkıştırılmış) архів tar (стиснений) Kho nén tar (đã nén) - Tar 归档文件(压缩) - Tar 封存檔 (UNIX 格式壓縮) + Tar 归档文件(压缩) + Tar 封存檔 (壓縮) @@ -20881,25 +21591,27 @@ generic font file + generiese skriftipelêer ملف الخط العام - zvyčajny fajł šryftu + zvyčajny fajł šryftu Шрифт fitxer de lletra genèrica obecný soubor s fontem general skrifttypefil Allgemeine Schriftdatei Γενικό αρχείο γραμματοσειράς - generic font file + generic font file genera tipara dosiero tipo de letra genérico letra-tipo orokorra yleinen fonttitiedosto felagsstavasniðsfíla fichier de polices générique + file di caratar gjeneric comhad cló ginearálta ficheiro de tipo de fonte xenérica קובץ גופן גנרי - Izvorna datoteka slova + generička datoteka fonta általános betűkészletfájl File de typo de litteras generic berkas fonta generik @@ -20916,7 +21628,7 @@ fichièr de poliças generic Zwykły plik czcionki ficheiro genérico de letra - Arquivo de fonte genérico + Arquivo de fonte genérico fișier de font generic Обычный файл шрифта Obyčajný súbor písma @@ -20927,32 +21639,34 @@ genel yazı tipi dosyası загальний файл шрифту tập tin phông giống loài - 通用字体文件 - 通用字型檔 + 通用字体文件 + 通用字型檔 packed font file + verpakte skriftipelêer ملف الخط المرزم - zapakavany fajł šryftu + zapakavany fajł šryftu Шрифт — компресиран fitxer de lletra empaquetada komprimovaný soubor s fontem pakket skrifttypefil Gepackte Schriftdatei Αρχείο συμπιεσμένης γραμματοσειράς - packed font file + packed font file pakigita tipara dosiero tipo de letra empaquetado Letra-tipo fitxategi paketatua pakattu fonttitiedosto pakkað stavasniðsfíla fichier de polices empaquetées + file di caratar impachetât comhad cló pacáilte ficheiro de fonte empaquetada קובץ גופן ארוז - Zapakirana datoteka slova + zapakirana datoteka fonta packed font-fájl File de typos de litteras impacchettate berkas fonta terkemas @@ -20969,7 +21683,7 @@ fichièr de poliças empaquetadas Plik ze spakowaną czcionką ficheiro de letras empacotadas - Arquivo de fonte empacotado + Arquivo de fonte empacotado fișier font împachetat Сжатый файл шрифта Komprimovaný súbor písma @@ -20980,29 +21694,31 @@ paketlenmiş yazı tipi dosyası запакований файл шрифту tập tin phông chữ đã đóng gói - 打包的字体文件 - 包裝字型檔 + 打包的字体文件 + 包裝字型檔 TGIF document + TGIF-dokument مستند TGIF Documentu de TGIF - Dakument TGIF + Dakument TGIF Документ — TGIF document TGIF dokument TGIF TGIF-dokument TGIF-Dokument Έγγραφο TGIF - TGIF document + TGIF document TGIF-dokumento documento TGIF TGIF dokumentua TGIF-asiakirja TGIF skjal document TGIF + document TGIF cáipéis TGIF documento TGIF מסמך TGIF @@ -21023,7 +21739,7 @@ document TGIF Dokument TGIF documento TGIF - Documento TGIF + Documento TGIF Document TGIF Документ TGIF Dokument TGIF @@ -21034,19 +21750,20 @@ TGIF belgesi документ TGIF Tài liệu TGIF - TGIF 文档 - TGIF 文件 + TGIF 文档 + TGIF 文件 - + theme + tema سمة örtük - matyŭ + matyŭ Тема tema motiv @@ -21054,13 +21771,14 @@ tema Thema Θέμα - theme + theme etoso tema gaia teema tema thème + teme téama tema ערכת נושא @@ -21082,7 +21800,7 @@ tèma Motyw tema - Tema + Tema temă Тема Motív @@ -21093,18 +21811,19 @@ tema тема sắc thái - 主题 - 佈景主題 + 主题 + 佈景主題 ToutDoux document + ToutDoux-dokument مستند ToutDoux Documentu de ToutDoux ToutDoux sənədi - Dakument ToutDoux + Dakument ToutDoux Документ — ToutDoux document ToutDoux dokument ToutDoux @@ -21112,13 +21831,14 @@ ToutDoux-dokument ToutDoux-Dokument Έγγραφο ToutDoux - ToutDoux document + ToutDoux document ToutDoux-dokumento documento de ToutDoux ToutDoux dokumentua ToutDoux-asiakirja ToutDoux skjal document ToutDoux + document ToutDoux cáipéis ToutDoux documento de ToutDoux מסמך של ToutDoux @@ -21139,7 +21859,7 @@ document ToutDoux Dokument ToutDoux documento ToutDoux - Documento do ToutDoux + Documento do ToutDoux Document ToutDoux Документ ToutDoux Dokument ToutDoux @@ -21150,27 +21870,29 @@ ToutDoux belgesi документ ToutDoux Tài liệu ToutDoux - ToutDoux 文档 - ToutDoux 文件 + ToutDoux 文档 + ToutDoux 文件 backup file + rugsteunlêer ملف النسخ الاحتياطي - zapasny fajł + zapasny fajł Резервно копие fitxer de còpia de seguretat záložní soubor sikkerhedskopi Sicherungsdatei Αντίγραφο ασφαλείας - backup file + backup file restaŭrkopio archivo de respaldo babes-kopiako fitxategia varmuuskopio trygdarritsfíla fichier de sauvegarde + file di backup comhad cúltaca ficheiro de copia de seguridade קובץ גיבוי @@ -21191,7 +21913,7 @@ fichièr de salvament Plik zapasowy cópia de segurança - Arquivo de backup + Arquivo de backup fișier de backup Резервная копия Záložný súbor @@ -21202,8 +21924,8 @@ yedek dosyası резервна копія tập tin sao lưu - 备份文件 - 備份檔 + 备份文件 + 備份檔 @@ -21212,10 +21934,11 @@ Troff document + Troff-dokument مستند Troff Documentu de Troff Troff sənədi - Dakument Troff + Dakument Troff Документ — Troff document Troff dokument Troff @@ -21223,13 +21946,14 @@ Troffdokument Troff-Dokument Έγγραφο troff - Troff document + Troff document Troff-dokumento documento de Troff Troff dokumentua Troff-asiakirja Troff skjal document Troff + document Troff cáipéis Troff documento Troff מסמך Troff @@ -21250,7 +21974,7 @@ document Troff Dokument Troff documento Troff - Documento Troff + Documento Troff Document Troff Документ Troff Dokument troff @@ -21261,16 +21985,16 @@ Troff belgesi документ Troff Tài liệu Troff - Troff 文档 - Troff 文件 + Troff 文档 + Troff 文件 - - - - + + + + @@ -21278,15 +22002,19 @@ Manpage manual document + Manpage-handleiding + Страница от ръководството document de pàgina man manuálová stránka Manpage-manualdokument Manpage-Handbuchdokument Έγγραφο βοήθειας manpage - Manpage manual document + Manpage manual document documento de manual de Manpage Manpage eskuliburu dokumentua + Manpage manuaali dokumentit document manuel Manpage + document manuâl Manpage cáipéis lámhleabhair Man מסמך תיעוד man Manpage dokument priručnika @@ -21295,42 +22023,44 @@ Dokumen manual manpage Documento di manuale manpage Manpage нұсқаулық құжаты - 맨 페이지 설명서 문서 + man 페이지 설명서 문서 document de manual Manpage Dokument podręcznika stron pomocy documento de ajuda Manpage - Documento Manpage + Documento Manpage Документ справочной системы Manpage Dokument manuálu Manpage документ упутства странице упутства Manpage-manualdokument Man sayfası el kitabı belgesi документ підручника man - Manpage 手册文档 - Manpage 手冊說明文件 + Manpage 手册文档 + Manpage 手冊說明文件 manual page (compressed) + handleiding (saamgepers) صفحة المساعدة (مضغوطة) man səhifəsi (sıxışdırılmış) - staronka dapamohi (skampresavanaja) - Страница от справочника, компресирана + staronka dapamohi (skampresavanaja) + Страница от ръководството — компресирана pàgina de manual (amb compressió) manuálová stránka (komprimovaná) tudalen llawlyfr (wedi ei gywasgu) manualside (komprimeret) Handbuchseite (komprimiert) Σελίδα οδηγιών (συμπιεσμένη) - manual page (compressed) + manual page (compressed) manpaĝo (kunpremita) página de manual (comprimida) eskuliburu orria (konprimitua) manuaalisivu (pakattu) handbókasíða (stappað) page de manuel (compressée) + pagjine di manuâl (comprimude) leathanach lámhleabhair (comhbhrúite) páxina de manual (comprimida) דף עזר (מכווץ) @@ -21351,7 +22081,7 @@ pagina de manual (compressat) Strona podręcznika (skompresowana) página de manual (comprimida) - Página de manual (compactada) + Página de manual (compactada) pagină de manual (comprimată) Страница руководства (сжатая) Manuálová stránka (komprimovaná) @@ -21362,31 +22092,33 @@ kılavuz dosyası (sıkıştırılmış) сторінка посібника (стиснена) trang hướng dẫn (đã nén) - 手册页(压缩) - 手冊頁面 (壓縮版) + 手册页(压缩) + 手冊頁面 (壓縮版) Tar archive (LZO-compressed) + Tar-argief (LZO-saamgepers) أرشيف Tar (مضغوط-LZO) - Archiŭ tar (LZO-skampresavany) + Archiŭ tar (LZO-skampresavany) Архив — tar, компресиран с LZO arxiu tar (amb compressió LZO) archiv Tar (komprimovaný pomocí LZO) Tar-arkiv (LZO-komprimeret) Tar-Archiv (LZO-komprimiert) Αρχείο Tar (συμπιεσμένο με LZO) - Tar archive (LZO-compressed) + Tar archive (LZO-compressed) archivador Tar (comprimido con LZO) Tar artxiboa (LZO-rekin konprimitua) Tar-arkisto (LZO-pakattu) Tar skjalasavn (LZO-stappað) archive tar (compression LZO) + archivi Tar (comprimût cun LZO) cartlann Tar (comhbhrúite le LZO) arquivo Tar (comprimido con LZO) ארכיון Tar (מכווץ ע״י LZO) Tar arhiva (LZO sažeta) - Tar archívum (LZO-val tömörítve) + Tar archívum (LZO tömörítésű) Archivo Tar (comprimite con LZO) Arsip Tar (terkompresi LZO) Archivio tar (compresso con LZO) @@ -21401,10 +22133,10 @@ archiu tar (compression LZO) Archiwum tar (kompresja LZO) arquivo Tar (compressão LZO) - Pacote Tar (compactado com LZO) + Pacote Tar (compactado com LZO) Arhivă Tar (comprimată LZO) Архив TAR (сжатый lzo) - Archív tar (komprimovaný pomocou LZO) + Archív Tar (komprimovaný pomocou LZO) Datoteka arhiva Tar (stisnjen z LZO) Arkiv tar (i kompresuar me LZO) Тар архива (запакована ЛЗО-ом) @@ -21412,8 +22144,8 @@ Tar arşivi (LZO ile sıkıştırılmış) архів tar (стиснений LZO) Kho nén tar (đã nén LZO) - Tar 归档文件(LZO 压缩) - Tar 封存檔 (LZO 格式壓縮) + Tar 归档文件(LZO 压缩) + Tar 封存檔 (LZO 壓縮) @@ -21421,6 +22153,7 @@ XZ archive + XZ-argief أرشيف XZ Архив — XZ arxiu XZ @@ -21428,13 +22161,14 @@ XZ-arkiv XZ-Archiv Συμπιεσμένο αρχείο XZ - XZ archive + XZ archive XZ-arkivo archivador XZ XZ artxiboa XZ-arkisto XZ skjalasavn archive XZ + archivi XZ cartlann XZ ficheiro XZ ארכיון XZ @@ -21452,7 +22186,7 @@ archiu XZ Archiwum XZ arquivo XZ - Pacote XZ + Pacote XZ Arhivă XZ Архив XZ Archív XZ @@ -21461,16 +22195,17 @@ XZ-arkiv XZ arşivi архів XZ - XZ 归档文件 - XZ 封存檔 + XZ 归档文件 + XZ 封存檔 - + Tar archive (XZ-compressed) + Tar-argief (XZ-saamgepers) أرشيف Tar (مضغوط-XZ) Архив — tar, компресиран с XZ arxiu tar (amb compressió XZ) @@ -21478,17 +22213,18 @@ Tar-arkiv (XZ-komprimeret) Tar-Archiv (XZ-komprimiert) Αρχείο Tar (συμπιεσμένο με XZ) - Tar archive (XZ-compressed) + Tar archive (XZ-compressed) archivador Tar (comprimido con XZ) Tar artxiboa (XZ-rekin konprimitua) Tar-arkisto (XZ-pakattu) Tar skjalasavn(XZ-stappað) archive tar (compression XZ) + archivi Tar (comprimût cun XZ) cartlann Tar (comhbhrúite le XZ) arquivo Tar (comprimido con XZ) ארכיון Tar (מכווץ ע״י XZ) Tar arhiva ( XZ sažeta) - Tar archívum (XZ-vel tömörítve) + Tar archívum (XZ tömörítésű) Archivo Tar (comprimite con XZ) Arsip Tar (terkompresi XZ) Archivio tar (compresso con XZ) @@ -21501,24 +22237,91 @@ archiu tar (compression XZ) Archiwum tar (kompresja XZ) arquivo Tar (compressão XZ) - Pacote Tar (compactado com XZ) + Pacote Tar (compactado com XZ) Arhivă Tar (comprimată XZ) Архив TAR (сжатый xz) - Archív tar (komprimovaný pomocou XZ) + Archív Tar (komprimovaný pomocou XZ) Datoteka arhiva Tar (stisnjen z XZ) Тар архива (запакована ИксЗ-ом) Tar-arkiv (XZ-komprimerat) Tar arşivi (XZ ile sıkıştırılmış) архів tar (стиснений XZ) - Tar 归档文件(XZ 压缩) - Tar 封存檔 (XZ 格式壓縮) + Tar 归档文件(XZ 压缩) + Tar 封存檔 (XZ 壓縮) + + Zstandard archive + Архив — Zstandard + arxiu Zstandard + archiv Zstandard + Zstandard-arkiv + Zstandard-Archiv + Zstandard archive + archivador Zstandard + Zstandard archive + Zstandard-arkisto + archive Zstandard + archivi Zstandard + Zstandard arhiva + Zstandard archívum + Arsip Zstandard + Archivio Zstandard + Zstandard архиві + Zstandard 압축 파일 + Archiwum Zstandard + Pacote Zstandard + Архив Zstandard + Archív Zstandard + Zstandard-arkiv + Zstandard arşivi + архів Zstandard + Zstandard 归档文件 + Zstandard 封存檔 + + + + + + + + Tar archive (Zstandard-compressed) + Архив — tar, компресиран със Zstandard + arxiu tar (amb compressió Zstandard) + archiv Tar (komprimovaný pomocí Zstandard) + Tar-arkiv (Zstandard-komprimeret) + Tar-Archiv (Zstandard-komprimiert) + Tar archive (Zstandard-compressed) + archivador Tar (comprimido con Zstandard) + Tar artxiboa (Zstandard-rekin konprimitua) + Tar-arkisto (Zstandard-pakattu) + archive tar (compression Zstandard) + archivi Tar (comprimût cun Zstandard) + Tar arhiva (Zstandard-sažeta) + Tar archívum (Zstandard tömörítésű) + Arsip Tar (terkompresi Zstandard) + Archivio tar (compresso con Zstandard) + Tar архиві (Zstandard-пен сығылған) + TAR 묶음 파일(Zstandard 압축) + Archiwum tar (kompresja Zstandard) + Pacote Tar (compactado com Zstandard) + Архив TAR (сжатый zstandard) + Tar-arkiv (Zstandard-komprimerat) + Tar arşivi (Zstandard ile sıkıştırılmış) + архів tar archive (стиснений Zstandard) + Tar 归档文件(Zstandard 压缩) + Tar 封存檔 (Zstandard 壓縮) + + + + + PDF document (XZ-compressed) + PDF-dokument (XZ-saamgepers) Documentu PDF (comprimíu en XZ) Документ — PDF, компресиран с XZ document PDF (amb compressió XZ) @@ -21526,16 +22329,17 @@ PDF-dokument (XZ-komprimeret) PDF-Dokument (XZ-komprimiert) Έγγραφο PDF (συμπιεσμένο με XZ) - PDF document (XZ-compressed) + PDF document (XZ-compressed) documento PDF (comprimido con XZ) PDF dokumentua (XZ-rekin konprimitua) PDF-asiakirja (XZ-pakattu) document PDF (compressé XZ) + document PDF (comprimût cun XZ) cáipéis PDF (comhbhrúite le XZ) documento PDF (comprimido en XZ) מסמך PDF (מכווץ ע״י XZ) PDF dokument ( XZ sažet) - PDF dokumentum (XZ-vel tömörített) + PDF dokumentum (XZ tömörítésű) Documento PDF (comprimite con XZ) Dokumen PDF (terkompresi XZ) Documento PDF (compresso con XZ) @@ -21548,7 +22352,7 @@ document PDF (compressat XZ) Dokument PDF (kompresja XZ) documento PDF (compressão XZ) - Documento PDF (compactado com XZ) + Documento PDF (compactado com XZ) Документ PDF (сжатый xz) Dokument PDF (komprimovaný pomocou XZ) Dokument PDF (XZ-stisnjen) @@ -21556,29 +22360,31 @@ PDF-dokument (XZ-komprimerat) PDF belgesi (XZ ile sıkıştırılmış) документ PDF (стиснений xz) - PDF 文档(XZ) - PDF 文件 (XZ 格式壓縮) + PDF 文档(XZ) + PDF 文件 (XZ 壓縮) Ustar archive + Ustar-argief أرشيف Ustar - Archiŭ ustar + Archiŭ ustar Архив — ustar arxiu ustar archiv Ustar - Ustararkiv + Ustar-arkiv Ustar-Archiv Συμπιεσμένο αρχείο Ustar - Ustar archive + Ustar archive Ustar-arkivo archivador de Ustar Ustar artxiboa Ustar-arkisto Ustar skjalasavn archive Ustar + archivi Ustar cartlann Ustar arquivo Ustar ארכיון Ustar @@ -21598,10 +22404,10 @@ archiu Ustar Archiwum ustar arquivo Ustar - Pacote Ustar + Pacote Ustar Arhivă Ustar Архив Ustar - Archív ustar + Archív Ustar Datoteka arhiva Ustar Arkiv Ustar Устар архива @@ -21609,16 +22415,17 @@ Ustar arşivi архів ustar Kho nén ustar - Ustar 归档文件 - Ustar 封存檔 + Ustar 归档文件 + Ustar 封存檔 WAIS source code + WAIS-bronkode شفرة مصدر WAIS WAIS mənbə faylı - Kryničny kod WAIS + Kryničny kod WAIS Изходен код — WAIS codi font en WAIS zdrojový kód WAIS @@ -21626,13 +22433,14 @@ WAIS-kildekode WAIS-Quelltext Πηγαίος κώδικας WAIS - WAIS source code + WAIS source code WAIS-fontkodo código fuente en WAIS WAIS iturburu-kodea WAIS-lähdekoodi WAIS keldukota code source WAIS + codiç sorzint WAIS cód foinseach WAIS código fonte WAIS קוד מקור של WAIS @@ -21651,9 +22459,9 @@ WAIS-broncode WAIS-kjeldekode còde font WAIS - Plik źródłowy WAIS + Kod źródłowy WAIS código origem WAIS - Código-fonte WAIS + Código-fonte WAIS Cod sursă WAIS Исходный код WAIS Zdrojový kód WAIS @@ -21664,29 +22472,31 @@ WAIS kaynak kodu вихідний код мовою WAIS Mã nguồn WAIS - WAIS 源代码 - WAIS 源碼 + WAIS 源代码 + WAIS 源碼 WordPerfect/Drawperfect image + WordPerfect/Drawperfect-beeld صورة WordPerfect/Drawperfect - Vyjava WordPerfect/Drawperfect + Vyjava WordPerfect/Drawperfect Изображение — WordPerfect/Drawperfect imatge de WordPerfect/Drawperfect obrázek WordPerfect/Drawperfect WordPerfect/Drawperfect-billede WordPerfect/DrawPerfect-Bild Εικόνα WordPerfect/Drawperfect - WordPerfect/Drawperfect image + WordPerfect/Drawperfect image WordPerfect/Drawperfect-bildo imagen de WordPerfect/Drawperfect WordPerfect/Drawperfect irudia WordPerfect/Drawperfect-kuva WordPerfect/Drawperfect mynd image WordPerfect/DrawPerfect + imagjin WordPerfect/Drawperfect íomhá WordPerfect/Drawperfect imaxe de WordPerfect/DrawPerfect תמונה של WordPerfect/Drawperfect @@ -21707,7 +22517,7 @@ imatge WordPerfect/DrawPerfect Obraz WordPerfect/DrawPerfect imagem do WordPerfect/Drawperfect - Imagem do WordPerfect/Drawperfect + Imagem do WordPerfect/Drawperfect Imagine WordPerfect/Drawperfect Изображение WordPerfect/Drawperfect Obrázok WordPerfect/Drawperfect @@ -21718,18 +22528,25 @@ WordPerfect/DrawPerfect görüntüsü зображення WordPerfect/Drawperfect Ảnh WordPerfect/Drawperfect - WordPerfect/Drawperfect 图像 - WordPerfect/Drawperfect 影像 + WordPerfect/Drawperfect 图像 + WordPerfect/Drawperfect 影像 Bandai WonderSwan ROM + ROM — Bandai WonderSwan ROM de Bandai WonderSwan ROM pro Bandai WonderSwan + Bandai WonderSwan-ROM Bandai WonderSwan ROM - Bandai WonderSwan ROM + Bandai WonderSwan ROM ROM de Bandai WonderSwan + Bandai WonderSwan ROM + Bandai WonderSwan ROM + ROM Bandai WonderSwan + ROM Bandai WonderSwan + ROM Bandai WonderSwan Bandai WonderSwan ROM Bandai WonderSwan ROM ROM Bandai WonderSwan @@ -21737,23 +22554,31 @@ Bandai WonderSwan ROM 반다이 원더스완 롬 Plik ROM konsoli Bandai WonderSwan - ROM de WonderSwan da Bandai + ROM de WonderSwan da Bandai Bandai WonderSwan ROM ROM pre Bandai WonderSwan Bandai WonderSwan-rom + Bandai WonderSwan ROM ROM Bandai WonderSwan - 万代 WonderSwan ROM - Bandai WonderSwan ROM + 万代 WonderSwan ROM + 萬代 WonderSwan ROM Bandai WonderSwan Color ROM + ROM — Bandai WonderSwan Color ROM de Bandai WonderSwan Color ROM pro Bandai WonderSwan Color + Bandai WonderSwan Color-ROM Bandai WonderSwan Color ROM - Bandai WonderSwan Color ROM + Bandai WonderSwan Color ROM ROM de Bandai WonderSwan Color + Bandai WonderSwan Color ROM + Bandai WonderSwan Color ROM + ROM Bandai WonderSwan Color + ROM Bandai WonderSwan Color + ROM datha Bandai WonderSwan Bandai WonderSwan Color ROM Bandai WonderSwan Color ROM ROM Bandai WonderSwan Color @@ -21761,33 +22586,36 @@ Bandai WonderSwan Color ROM 반다이 원더스완 컬러 롬 Plik ROM konsoli Bandai WonderSwan Color - ROM de WonderSwan Color da Bandai + ROM de WonderSwan Color da Bandai Bandai WonderSwan Color ROM ROM pre Bandai WonderSwan Color Bandai WonderSwan Color-rom + Bandai WonderSwan Color ROM ROM Bandai WonderSwan Color - 万代 WonderSwan Color ROM - Bandai WonderSwan Color ROM + 万代 WonderSwan Color ROM + 萬代 WonderSwan Color ROM DER/PEM/Netscape-encoded X.509 certificate + DER/PEM/Netscape-geënkodeerde X.509-sertifikaat شهادة DER/PEM/Netscape-encoded X.509 - Sertyfikat X.509, zakadavany ŭ DER/PEM/Netscape + Sertyfikat X.509, zakadavany ŭ DER/PEM/Netscape Сертификат — DER/PEM/Netscape X.509 certificat X.509 codificat com DER/PEM/Netscape certifikát X.509 kódovaný jako DER/PEM/Netscape - DER-/PEM-/Netscapekodet X.509-certifikat + DER-/PEM-/Netscape-kodet X.509-certifikat DER/PEM/Netscape-kodiertes X.509-Zertifikat Ψηφιακό πιστοποιητικό X.509 κωδικοποιημένο κατά DER/PEM/Netscape - DER/PEM/Netscape-encoded X.509 certificate + DER/PEM/Netscape-encoded X.509 certificate DER/PEM/Netscape-kodigita X.509-atestilo certificado X.509 codificado con DER/PEM/Netscape X.509rekin kodetutako DER, PEM edo Netscape zertifikatua DER/PEM/Netscape-koodattu X.509-varmenne DER/PEM/Netscape-encoded X.509 váttan certificat X.509 codé DER/PEM/Netscape + certificât X.509 codificât cun DER/PEM/Netscape teastas X.509 ionchódaithe le DER/PEM/Netscape certificado X.509 codificado con DER/PEM/Netscape אישור מסוג X.509 של DER/PEM/Netscape-encoded @@ -21809,7 +22637,7 @@ certificat X.509 encodat DER/PEM/Netscape Zakodowany w DER/PEM/Netscape certyfikat X.509 certificado X.509 codificado com DER/PEM/Netscape - Certificado X.509 codificado com DER/PEM/Netscape + Certificado X.509 codificado com DER/PEM/Netscape Certificat DER/PEM/Netscape-codat X.509 Сертификат X.509 (DER/PEM/Netscape-закодированный) Certifikát X.509 kódovaný ako DER/PEM/Netscape @@ -21820,8 +22648,8 @@ DER/PEM/Netscape-kodlanmış X.509 sertfikası сертифікат X.509 у форматі DER/PEM/Netscape Chứng nhận X.509 mã hoá bằng Netscape/PEM/DER - DER/PEM/Netscape-encoded X.509 证书 - DER/PEM/Netscape 編碼的 X.509 憑證 + DER/PEM/Netscape-encoded X.509 证书 + DER/PEM/Netscape 編碼的 X.509 憑證 @@ -21830,22 +22658,24 @@ empty document + leë dokument مستند فارغ documentu baleru - pusty dakument + pusty dakument Празен документ document buit prázdný dokument tomt dokument Leeres Dokument Κενό έγγραφο - empty document + empty document malplena dokumento documento vacío dokumentu hutsa tyhjä asiakirja tómt skjal document vide + document vueit cáipéis fholamh documeto baleiro מסמך ריק @@ -21866,7 +22696,7 @@ document void Pusty dokument documento vazio - Documento vazio + Documento vazio document gol Пустой документ Prázdny dokument @@ -21877,28 +22707,30 @@ boş belge порожній документ tài liệu rỗng - 空文档 - 空白文件 + 空文档 + 空白文件 Zoo archive + Zoo-argief أرشيف Zoo Zoo arxivi - Archiŭ zoo + Archiŭ zoo Архив — zoo arxiu zoo archiv Zoo Archif zoo - Zooarkiv + Zoo-arkiv Zoo-Archiv Συμπιεσμένο αρχείο Zoo - Zoo archive + Zoo archive Zoo-arkivo archivador Zoo Zoo artxiboa Zoo-arkisto Zoo skjalasavn archive zoo + archivi Zoo cartlann Zoo ficheiro Zoo ארכיון Zoo @@ -21918,10 +22750,10 @@ archiu zoo Archiwum zoo arquivo Zoo - Pacote Zoo + Pacote Zoo Arhivă Zoo Архив ZOO - Archív zoo + Archív Zoo Datoteka arhiva ZOO Arkiv zoo Зoo архива @@ -21929,31 +22761,33 @@ Zoo arşivi архів zoo Kho nén zoo - Zoo 归档文件 - Zoo 封存檔 + Zoo 归档文件 + Zoo 封存檔 - + XHTML page + XHTML-bladsy صفحة XHTML - Staronka XHTML + Staronka XHTML Страница — XHTML pàgina XHTML stránka XHTML XHTML-side XHTML-Seite Σελίδα XHTML - XHTML page + XHTML page XHTML-paĝo página XHTML XHTML orria XHTML-sivu XHTML síða page XHTML + pagjine XHTML leathanach XHTML Páxina XHTML דף XHTML @@ -21974,7 +22808,7 @@ pagina XHTML Strona XHTML página XHTML - Página XHTML + Página XHTML Pagină XHTML Страница XHTML Stránka XHTML @@ -21985,41 +22819,45 @@ XHTML sayfası сторінка XHTML Trang XHTML - XHTML 页面 - XHTML 網頁 + XHTML 页面 + XHTML 網頁 XHTML Extensible HyperText Markup Language + + - - - - + + + + - + Zip archive + Zip-argief أرشيف Zip Zip arxivi - Archiŭ zip + Archiŭ zip Архив — zip arxiu zip archiv ZIP Archif ZIP - Ziparkiv + Zip-arkiv Zip-Archiv Συμπιεσμένο αρχείο Zip - Zip archive + Zip archive Zip-arkivo archivador Zip Zip artxiboa Zip-arkisto Zip skjalasavn archive zip + archivi Zip cartlann Zip ficheiro Zip ארכיון Zip @@ -22039,7 +22877,7 @@ archiu zip Archiwum ZIP arquivo Zip - Pacote Zip + Pacote Zip Arhivă zip Архив ZIP Archív ZIP @@ -22050,76 +22888,71 @@ Zip arşivi архів zip Kho nén zip - Zip 归档文件 - Zip 封存檔 + Zip 归档文件 + Zip 封存檔 - + - WIM disk Image + WIM disk image + Диск — WIM imatge de disc WIM - obraz disku WIM WIM-diskaftryk WIM-Datenträgerabbild - Εικόνα δίσκου WIM - WIM disk Image + WIM disk image imagen de disco WIM WIM disko irudia - WIM-levytiedosto + WIM-levykuva image disque WIM - íomhá diosca WIM - דמות דיסק WIM WIM slika diska WIM lemezkép - Imagine de disco WIM Image disk WIM Immagine disco WIM WIM диск бейнесі WIM 디스크 이미지 - imatge disc WIM Obraz dysku WIM - imagem de disco WIM - Imagem de disco WIM + Imagem de disco WIM Образ диска WIM Obraz disku WIM - слика диска ВИМ-а - WIM-diskavbild - WIM disk kalıbı + WIM-diskavbildning + WIM disk görüntüsü образ диска WIM - WIM 磁盘映像 - WIM 磁碟映像檔 + WIM 磁盘映像 + WIM 磁碟映像檔 WIM Windows Imaging Format - + Dolby Digital audio + Dolby Digital-oudio Dolby Digital سمعي Dolby Digital audio - Aŭdyjo Dolby Digital + Aŭdyjo Dolby Digital Аудио — Dolby Digital - àudio de Dolby Digital + àudio Dolby Digital zvuk Dolby Digital Sain Dolby Digital Dolby Ditital-lyd Dolby-Digital-Audio Ψηφιακός Ήχος Dolby - Dolby Digital audio + Dolby Digital audio Sondosiero en Dolby Digital - sonido Dolby Digital + audio Dolby Digital Dolby audio digitala Dolby Digital -ääni Dolby Digital ljóður audio Dolby Digital + audio Dolby Digital fuaim Dolby Digital son Dolby Digital שמע Dolby Digital @@ -22141,7 +22974,7 @@ àudio Dolby Digital Plik dźwiękowy Dolby Digital áudio Dolby Digital - Áudio Dolby Digital + Áudio Dolby Digital Audio Dolby Digital Аудио Dolby Digital Zvuk Dolby Digital @@ -22152,25 +22985,28 @@ Dolby Digital sesi звук Dolby Digital Âm thanh Dolby Digital - 杜比数字音频 - 杜比數位音訊 + 杜比数字音频 + 杜比數位音訊 - + DTS audio + DTS-oudio + Аудио — DTS àudio DTS zvuk DTS DTS-lyd DTS-Audio Ήχος DTS - DTS audio - sonido DTS + DTS audio + audio DTS DTS audioa DTS-ääni audio DTS + audio DTS fuaim DTS Son DTS שמע DTS @@ -22186,7 +23022,7 @@ àudio DTS Plik dźwiękowy DTS aúdio DTS - Áudio DTS + Áudio DTS Аудио DTS Zvuk DTS Zvok DTS @@ -22194,29 +23030,32 @@ DTS-ljud DTS sesi звукові дані DTS - DTS 音频 - DTS 音訊 + DTS 音频 + DTS 音訊 - - - - + + + + DTSHD audio + DTSHD-oudio + Аудио — DTSHD àudio DTSHD zvuk DTSHD DTSDH-lyd DTSHD-Audio Ήχος DTSHD - DTSHD audio - sonido DTSHD + DTSHD audio + audio DTSHD DTSHD audioa DTS-HD-ääni audio DTSHD + audio DTSHD fuaim DTSHD Son DTSHD שמע DTSHD @@ -22232,7 +23071,7 @@ àudio DTSHD Plik dźwiękowy DTSHD áudio DTSHD - Áudio DTSHD + Áudio DTSHD Аудио DTSHD Zvuk DTSHD Zvok DTSHD @@ -22240,32 +23079,34 @@ DTSHD-ljud DTSHD sesi звукові дані DTSHD - DTSHD 音频 - DTSHD 音訊 + DTSHD 音频 + DTSHD 音訊 - + AMR audio + AMR-oudio AMR سمعي - Aŭdyjo AMR + Aŭdyjo AMR Аудио — AMR àudio AMR zvuk AMR AMR-lyd AMR-Audio Ήχος AMR - AMR audio + AMR audio AMR-sondosiero - sonido AMR + audio AMR AMR audioa AMR-ääni AMR ljóður audio AMR + audio AMR fuaim AMR son AMR שמע AMR @@ -22286,7 +23127,7 @@ àudio AMR Plik dźwiękowy AMR áudio AMR - Áudio AMR + Áudio AMR Audio AMR Аудио AMR Zvuk AMR @@ -22297,34 +23138,36 @@ AMR sesi звук AMR Âm thanh AMR - AMR 音频 - AMR 音訊 + AMR 音频 + AMR 音訊 AMR Adaptive Multi-Rate - - + + AMR-WB audio + AMR-WB-oudio AMR-WB سمعي - Aŭdyjo AMR-WB + Aŭdyjo AMR-WB Аудио — AMR-WB àudio AMR-WB zvuk AMR-WB AMR-WB-lyd AMR-WB-Audio Ήχος AMR-WB - AMR-WB audio + AMR-WB audio AMR-WB-sondosiero - sonido AMR-WB + audio AMR-WB AMR-WB audioa AMR-WB-ääni AMR-WB ljóður audio AMR-WB + audio AMR-WB fuaim AMR-WB son AMR-WB שמע AMR-WN @@ -22345,7 +23188,7 @@ àudio AMR-WB Plik dźwiękowy AMR-WB áudio AMR-WB - Áudio AMR-WB + Áudio AMR-WB Audio AMR-WB Аудио AMR-WB Zvuk AMR-WB @@ -22356,22 +23199,23 @@ AMR-WB sesi звук AMR-WB Âm thanh AMR-WB - AMR-WB 音频 - AMR-WB 音訊 + AMR-WB 音频 + AMR-WB 音訊 AMR-WB Adaptive Multi-Rate Wideband - - + + ULAW (Sun) audio + ULAW- (Sun) oudio ULAW (صن) سمعي ULAW (Sun) audio faylı - Aŭdyjo ULAW (Sun) + Aŭdyjo ULAW (Sun) Аудио — ULAW, Sun àudio ULAW (Sun) zvuk ULAW (Sun) @@ -22379,13 +23223,14 @@ ULAW-lyd (Sun) ULAW-Audio (Sun) Ήχος ULAW (Sun) - ULAW (Sun) audio + ULAW (Sun) audio ULAW-sondosiero (Sun) - sonido ULAW (Sun) + audio ULAW (Sun) ULAW (sun) audioa ULAW (Sun) -ääni ULAW (Sun) ljóður audio ULAW (Sun) + audio ULAW (Sun) fuaim ULAW (Sun) son ULAW (Sun) שמע ULAW (של Sun) @@ -22406,7 +23251,7 @@ àudio ULAW (Sun) Plik dźwiękowy ULAW (Sun) áudio ULAW (Sun) - Áudio ULAW (Sun) + Áudio ULAW (Sun) Fișier audio ULAW (Sun) Аудио ULAW (Sun) Zvuk ULAW (Sun) @@ -22417,31 +23262,33 @@ ULAW (Sun) sesi звук ULAW (Sun) Âm thanh ULAW (Sun) - ULAW (Sun) 音频 - ULAW (Sun) 音訊 + ULAW (Sun) 音频 + ULAW (Sun) 音訊 - + Commodore 64 audio + Commodore 64-oudio Commodore 64 سمعي - Aŭdyjo Commodore 64 + Aŭdyjo Commodore 64 Аудио — Commodore 64 àudio de Commodore 64 zvuk Commodore 64 Commodore 64-lyd Commodore-64-Audio Ήχος Commodore 64 - Commodore 64 audio + Commodore 64 audio Sondosiero de Commodore 64 - sonido de Commodore 64 + audio de Commodore 64 Commodore 64 Audioa Commodore 64 -ääni Commodore 64 ljóð audio Commodore 64 + audio Commodore 64 fuaim Commodore 64 son de Commodore 64 שמע של Commodore 64 @@ -22463,7 +23310,7 @@ àudio Commodore 64 Plik dźwiękowy Commodore 64 áudio Commodore 64 - Áudio Commodore 64 + Áudio Commodore 64 Audio Commodore 64 Аудио Commodore 64 Zvuk Commodore 64 @@ -22474,19 +23321,20 @@ Commodore 64 sesi звук Commodore 64 Âm thanh Commodore 64 - Commodore 64 音频 - Commodore 64 音訊 + Commodore 64 音频 + Commodore 64 音訊 - + PCM audio + PCM-oudio سمعي PCM PCM audio faylı - Aŭdyjo PCM + Aŭdyjo PCM Аудио — PCM àudio PCM zvuk PCM @@ -22494,13 +23342,14 @@ PCM-lyd PCM-Audio Ήχος PCM - PCM audio + PCM audio PCM-sondosiero - sonido PCM + audio PCM PCM audioa PCM-ääni PCM ljóður audio PCM + audio PCM fuaim PCM son PCM שמע PCM @@ -22521,7 +23370,7 @@ àudio PCM Plik dźwiękowy PCM áudio PCM - Áudio PCM + Áudio PCM Audio PCM Аудио PCM Zvuk PCM @@ -22532,29 +23381,30 @@ PCM sesi звук PCM Âm thanh PCM - PCM 音频 - PCM 音訊 + PCM 音频 + PCM 音訊 - - + + - - - - - - - - - + + + + + + + + + AIFC audio + AIFC-oudio AIFC سمعي AIFC audio faylı - Aŭdyjo AIFC + Aŭdyjo AIFC Аудио — AIFC àudio AIFC zvuk AIFC @@ -22562,13 +23412,14 @@ AIFC-lyd AIFC-Audio Ήχος AIFC - AIFC audio + AIFC audio AIFC-sondosiero - sonido AIFC + audio AIFC AIFC audioa AIFC-ääni AIFC ljóður audio AIFC + audio AIFC fuaim AIFC son AIFC שמע AIFC @@ -22590,7 +23441,7 @@ àudio AIFC Plik dźwiękowy AIFC áudio AIFC - Áudio AIFC + Áudio AIFC Fișier audio AIFC Аудио AIFC Zvuk AIFC @@ -22601,13 +23452,13 @@ AIFC sesi звук AIFC Âm thanh AIFC - AIFC 音频 - AIFC 音訊 + AIFC 音频 + AIFC 音訊 AIFC Audio Interchange File format Compressed - + @@ -22615,23 +23466,25 @@ AIFF/Amiga/Mac audio + AIFF/Amiga/Mac-oudio AIFF/Amiga/Mac سمعي AIFF/Amiga/Mac audio faylı - Aŭdyjo AIFF/Amiga/Mac + Aŭdyjo AIFF/Amiga/Mac Аудио — AIFF/Amiga/Mac àudio AIFF/Amiga/Mac zvuk AIFF/Amiga/Mac Sain AIFF/Amiga/Mac - AIFF-/Amiga-/Maclyd + AIFF-/Amiga-/Mac-lyd AIFF/Amiga/Mac-Audio Ήχος AIFF/Amiga/Mac - AIFF/Amiga/Mac audio + AIFF/Amiga/Mac audio AIFF/Amiga/Mac-sondosiero - sonido AIFF/Amiga/Mac + audio AIFF/Amiga/Mac AIFF/Amiga/Mac audioa AIFF/Amiga/Mac-ääni AIFF/Amiga/Mac ljóður audio AIFF/Amiga/Mac + audio AIFF/Amiga/Mac fuaim AIFF/Amiga/Mac son AIFF/Amiga/Mac שמע AIFF/Amiga/Mac @@ -22653,7 +23506,7 @@ àudio AIFF/Amiga/Mac Plik dźwiękowy AIFF/Amiga/Mac áudio AIFF/Amiga/Mac - Áudio AIFF/Amiga/Mac + Áudio AIFF/Amiga/Mac Audio AIFF/Amiga/Mac Аудио AIFF/Amiga/Mac Zvuk AIFF/Amiga/Mac @@ -22664,14 +23517,14 @@ AIFF/Amiga/Mac sesi звук AIFF/Amiga/Mac Âm thanh AIFF/Amiga/Mac - AIFF/Amiga/Mac 音频 - AIFF/Amiga/Mac 音訊 + AIFF/Amiga/Mac 音频 + AIFF/Amiga/Mac 音訊 AIFF Audio Interchange File Format - - + + @@ -22679,19 +23532,20 @@ Monkey's audio Monkey سمعي - Aŭdyjo Monkey's + Aŭdyjo Monkey's Аудио — Monkey àudio de Monkey zvuk Monkey's - Monkeys lyd + Monkey's-lyd Monkey's-Audio Ήχος Monkey's - Monkey's audio - sonido de Monkey + Monkey's audio + audio de Monkey Monkey audioa Monkey's Audio -ääni Monkey's ljóður audio Monkey + audio Monkey's fuaim Monkey's son de Monkey שמע של Monkey's @@ -22711,7 +23565,7 @@ àudio Monkey Plik dźwiękowy Monkey's Audio áudio Monkey - Áudio Monkey's + Áudio Monkey's Audio Monkey's Аудио Monkey's Zvuk Monkey's @@ -22722,20 +23576,27 @@ Monkey's sesi звук Monkey's Âm thanh cua Monkey - Monkey's Audio 音频 - Monkey's 音訊 + Monkey's Audio 音频 + Monkey's 音訊 - + Audible.Com audio - àudio Audible.Com + Аудио — Audible.Com + àudio d'Audible.Com zvuk Audible.Com + Audible.Com-lyd Audible.Com-Audio - Audible.Com audio - sonido de Audible.com + Audible.Com audio + audio de Audible.com + Audible.Com audioa + Audible.Com-ääni + audio Audible.Com + audio Audible.Com + fuaim Audible.Com Audible.Com zvučni zapis Audible.Com hang Audio Audible.Com @@ -22743,28 +23604,46 @@ Audible.Com аудиосы Audible.Com 오디오 Plik dźwiękowy Audible.com - Áudio de audible.com + Áudio de audible.com Аудио Audible.Com Audio Audible.Com Audible.Com-ljud + Audible.Com sesi звук Audible.Com - Audible.Com 音频 - Audible.Com 音訊 + Audible.Com 音频 + Audible.Com 音訊 - - - + + - - + + + Audible Enhanced audio + àudio d'Audible Enhanced + Audible Enhanced-lyd + Audible Erweitertes Audio + Audible Enhanced audio + audio mejorado de Audible + Selvä parannettu ääni + Audible poboljšani zvučni zapis + Audio Audible Enhanced + Plik dźwiękowy Audible Enhanced + Áudio Audible Enhanced + Audible förbättrat ljud + звук Audible Enhanced + Audible 增强音频 + + + + Impulse Tracker audio Impulse Tracker سمعي Impulse Tracker audio faylı - Aŭdyjo Impulse Tracker + Aŭdyjo Impulse Tracker Аудио — Impulse Tracker àudio d'Impulse Tracker zvuk Impulse Tracker @@ -22772,13 +23651,14 @@ Impulse Tracker-lyd Impulse-Tracker-Audio Ήχος Impulse Tracker - Impulse Tracker audio + Impulse Tracker audio Sondosiero de Impulse Tracker - sonido de Impulse Tracker + audio de Impulse Tracker Impulse Tracker audioa Impulse Tracker -ääni Impulse Tracker ljóður audio Impulse Tracker + audio Impulse Tracker fuaim Impulse Tracker son de Impulse Tracker שמע של Impulse Tracker @@ -22799,7 +23679,7 @@ àudio Impulse Tracker Plik dźwiękowy Impulse Tracker áudio Impulse Tracker - Áudio Impulse Tracker + Áudio Impulse Tracker Audio Impulse Tracker Аудио Impulse Tracker Zvuk Impulse Tracker @@ -22810,30 +23690,32 @@ Impulse Tracker sesi звук Impulse Tracker Âm thanh Impulse Tracker - Impulse Tracker 音频 - Impulse Tracker 音訊 + Impulse Tracker 音频 + Impulse Tracker 音訊 - + FLAC audio + FLAC-oudio FLAC سمعي - Aŭdyjo FLAC + Aŭdyjo FLAC Аудио — FLAC àudio FLAC zvuk FLAC FLAC-lyd FLAC-Audio Ήχος FLAC - FLAC audio + FLAC audio FLAC-sondosiero - sonido FLAC + audio FLAC FLAC audioa FLAC-ääni FLAC ljóður audio FLAC + audio FLAC fuaim FLAC son FLAC קובץ שמע מסוג FLAC @@ -22855,7 +23737,7 @@ àudio FLAC Plik dźwiękowy FLAC áudio FLAC - Áudio FLAC + Áudio FLAC Audio FLAC Аудио FLAC Zvuk FLAC @@ -22866,8 +23748,8 @@ FLAC sesi звук FLAC Âm thanh FLAC - FLAC 音频 - FLAC 音訊 + FLAC 音频 + FLAC 音訊 @@ -22876,21 +23758,23 @@ WavPack audio + WavPack-oudio WavPack سمعي - Aŭdyjo WavPack + Aŭdyjo WavPack Аудио — WavPack àudio de WavPack zvuk WavPack WavPack-lyd WavPack-Audio Ήχος WavePack - WavPack audio + WavPack audio WavPack-sondosiero - sonido WavPack + audio WavPack WavPack audioa WavPack-ääni WavPack ljóður audio WavPack + audio WavPack fuaim WavPack son WavPack שמע WavPack @@ -22910,7 +23794,7 @@ àudio WavPack Plik dźwiękowy WavPack áudio WavPack - Áudio WavPack + Áudio WavPack Audio WavPack Аудио WavPack Zvuk WavPack @@ -22921,10 +23805,10 @@ WavPack sesi звук WavPack Âm thanh WavPack - WavPack 音频 - WavPack 音訊 + WavPack 音频 + WavPack 音訊 - + @@ -22932,19 +23816,20 @@ WavPack audio correction file ملف تصحيح WavPack السمعي - Fajł aŭdyjokarekcyi WavPack + Fajł aŭdyjokarekcyi WavPack Файл за корекции на аудио — WavPack fitxer de correcció d'àudio de WavPack opravný zvukový soubor WavPack WavPack-lydkorrektionsfil WavPack-Audiokorrekturdatei Αρχείο διόρθωσης ήχου WavePack - WavPack audio correction file - archivo de corrección de sonido WavPack + WavPack audio correction file + archivo de corrección de audio WavPack WavPack audio-zuzenketaren fitxategia WavPack-äänikorjaustiedosto WavPack ljóðrættingarfíla fichier de correction audio WavPack + file di corezion audio WavPack comhad ceartúchán fuaime WavPack ficheiro de corrección de son WavPack קובץ תיקון שמע של WavPack @@ -22964,7 +23849,7 @@ fichièr de correccion àudio WavPack Plik korekcji dźwięku WavPack ficheiro de correção áudio WavPack - Arquivo de correção de áudio WavPack + Arquivo de correção de áudio WavPack Fișier audio de corecție WavPack Файл коррекции аудио WavPack Opravný zvukový súbor WavPack @@ -22975,18 +23860,19 @@ WavPack ses düzeltme dosyası файл корекції звуку WavPack Tập tin sửa chữa âm thanh WavPack - WavPack 音频校正文件 - WavPack 音訊校正檔 + WavPack 音频校正文件 + WavPack 音訊校正檔 - + MIDI audio + MIDI-oudio MIDI سمعي MIDI audio faylı - Aŭdyjo MIDI + Aŭdyjo MIDI Аудио — MIDI àudio MIDI zvuk MIDI @@ -22994,13 +23880,14 @@ MIDI-lyd MIDI-Audio Ήχος MIDI - MIDI audio + MIDI audio MIDI-sondosiero - sonido MIDI + audio MIDI MIDI audioa MIDI-ääni MIDI ljóður audio MIDI + audio MIDI fuaim MIDI son MIDI שמע MIDI @@ -23021,7 +23908,7 @@ àudio MIDI Plik dźwiękowy MIDI áudio MIDI - Áudio MIDI + Áudio MIDI Audio MIDI Аудио MIDI Zvuk MIDI @@ -23032,11 +23919,11 @@ MIDI sesi звук MIDI Âm thanh MIDI - MIDI 音频 - MIDI 音訊 + MIDI 音频 + MIDI 音訊 - + @@ -23045,19 +23932,20 @@ compressed Tracker audio Tracker سمعي مضغوط - aŭdyjo skampresavanaha Trackera + aŭdyjo skampresavanaha Trackera Аудио — Tracker, компресирано àudio Tracker amb compressió komprimovaný zvuk Tracker - Trackerkomprimeret lyd + komprimeret trackerlyd Komprimiertes Tracker-Audio Συμπιεσμένος ήχος Tracker - compressed Tracker audio - sonido de Tracker comprimido + compressed Tracker audio + audio de Tracker comprimido konprimitutako Tracker audioa pakattu Tracker-ääni stappað Tracker ljóður audio Tracker compressé + audio Tracker comprimût fuaim chomhbhrúite Tracker son comprimido de Tracker שמע גשש מכווץ @@ -23076,7 +23964,7 @@ àudio Tracker compressat Skompresowany plik dźwiękowy Tracker áudio comprimido Tracker - Áudio Tracker compactado + Áudio Tracker compactado Tracker audio comprimat Сжатое аудио Tracker Komprimovaný zvuk Tracker @@ -23087,25 +23975,28 @@ sıkıştırılmış Tracker sesi стиснутий звук Tracker âm thanh Tracker đã nén - 压缩的 Tracker 音频 - 壓縮版 Tracker 音訊 + 压缩的 Tracker 音频 + 壓縮版 Tracker 音訊 - + AAC audio + AAC-oudio + Аудио — AAC àudio AAC zvuk AAC AAC-lyd AAC-Audio Ήχος AAC - AAC audio - sonido AAC + AAC audio + audio AAC AAC audioa AAC-ääni audio AAC + audio AAC fuaim AAC Son AAC שמע AAC @@ -23121,7 +24012,7 @@ àudio AAC Plik dźwiękowy AAC áudio AAC - Áudio AAC + Áudio AAC Аудио AAC Zvuk AAC Zvok AAC @@ -23129,21 +24020,49 @@ AAC-ljud AAC sesi звукові дані AAC - AAC 音频 - AAC 音訊 + AAC 音频 + AAC 音訊 AAC Advanced Audio Coding - - + + - + USAC audio + USAC-oudio + Аудио — USAC + àudio USAC + zvuk USAC + USAC-lyd + USAC-Audio + USAC audio + audio USAC + USAC audioa + USAC-ääni + audio USAC + audio USAC + fuaim USAC + USAC zvučni zapis + USAC hang + Audio USAC + Audio USAC + USAC аудиосы + USAC 오디오 + Plik dźwiękowy USAC + Áudio USAC + Аудио USAC + Zvuk USAC + USAC-ljud + USAC sesi + звукові дані USAC + USAC 音频 + USAC 音訊 USAC Unified Speech and Audio Coding @@ -23151,21 +24070,23 @@ MPEG-4 audio + MPEG-4-oudio MPEG-4 سمعي - Aŭdyjo MPEG-4 + Aŭdyjo MPEG-4 Аудио — MPEG-4 àudio MPEG-4 zvuk MPEG-4 MPEG4-lyd MPEG-4-Audio Ήχος MPEG-4 - MPEG-4 audio + MPEG-4 audio MPEG4-sondosiero - sonido MPEG-4 + audio MPEG-4 MPEG-4 audioa MPEG-4-ääni MPEG-4 ljóður audio MPEG-4 + audio MPEG-4 fuaim MPEG-4 son MPEG-4 שמע MPEG-4 @@ -23186,7 +24107,7 @@ àudio MPEG-4 Plik dźwiękowy MPEG-4 áudio MPEG-4 - Áudio MPEG-4 + Áudio MPEG-4 Audio MPEG-4 Аудио MPEG-4 Zvuk MPEG-4 @@ -23197,39 +24118,65 @@ MPEG-4 sesi звук MPEG-4 Âm thanh MPEG-4 - MPEG-4 音频 - MPEG-4 音訊 + MPEG-4 音频 + MPEG-4 音訊 - + - MPEG-4 Ringtone + MPEG-4 ringtone + Аудио — MPEG-4, звънене + to de trucada MPEG-4 + MPEG-4-ringetone + MPEG-4-Klingelton + MPEG-4 ringtone + tono de llamada MPEG-4 + MPEG-4 dei-tonua + MPEG-4-soittoääni + sonnerie MPEG-4 + MPEG-4 melodija zvona + MPEG-4 csengőhang + Nada panggil MPEG-4 + Suoneria MPEG-4 + MPEG-4 рингтоны + MPEG-4 벨소리 + Dzwonek MPEG-4 + Toque MPEG-4 + Мелодия MPEG-4 + Zvonenie MPEG-4 + MPEG-4-ringsignal + MPEG-4 zil sesi + рингтон MPEG-4 + MPEG-4 铃声 + MPEG-4 鈴聲 MPEG-4 video + MPEG-4-video MPEG-4 مرئي Videu en MPEG-4 - Videa MPEG-4 + Videa MPEG-4 Видео — MPEG-4 vídeo MPEG-4 video MPEG-4 MPEG4-video MPEG-4-Video Βίντεο MPEG-4 - MPEG-4 video + MPEG-4 video MPEG-4-video vídeo MPEG-4 MPEG-4 bideoa MPEG-4-video MPEG-4 video vidéo MPEG-4 + video MPEG-4 físeán MPEG-4 vídeo MPEG-4 וידאו MPEG-4 @@ -23250,7 +24197,7 @@ vidèo MPEG-4 Plik wideo MPEG-4 vídeo MPEG-4 - Vídeo MPEG-4 + Vídeo MPEG-4 Video MPEG-4 Видео MPEG-4 Video MPEG-4 @@ -23261,15 +24208,16 @@ MPEG-4 video відеокліп MPEG-4 Ảnh động MPEG-4 - MPEG-4 视频 - MPEG-4 視訊 + MPEG-4 视频 + MPEG-4 視訊 - - - - - + + + + + + @@ -23279,21 +24227,23 @@ MPEG-4 audio book + MPEG-4-oudioboek كتاب MPEG-4 السمعي - Aŭdyjokniha MPEG-4 + Aŭdyjokniha MPEG-4 Аудио книга — MPEG-4 llibre d'àudio MPEG-4 zvuková kniha MPEG-4 MPEG4-lydbog MPEG-4-Hörbuch Ηχητικό βιβλίο MPEG-4 - MPEG-4 audio book + MPEG-4 audio book MPEG-4-sonlibro audiolibro MPEG-4 MPEG-4 audio-liburua MPEG-4-äänikirja MPEG-4 ljóðbók livre audio MPEG-4 + audio-libri MPEG-4 closleabhar MPEG-4 sonlibro de MPEG-4 ספר דיגיטלי MPEG-4 @@ -23314,7 +24264,7 @@ libre àudio MPEG-4 Książka dźwiękowa MPEG-4 livro áudio MPEG-4 - Áudio livro MPEG-4 + Áudio livro MPEG-4 Carte audio MPEG-4 Аудиокнига MPEG-4 Zvuková kniha MPEG-4 @@ -23325,31 +24275,33 @@ MPEG-4 sesli kitabı аудіокнига MPEG-4 Sách âm thanh MPEG-4 - MPEG-4 有声书 - MPEG-4 音訊書 + MPEG-4 有声书 + MPEG-4 音訊書 - + 3GPP multimedia file + 3GPP-multimedialêer ملف وسائط متعددة 3GPP - Multymedyjny fajł 3GPP + Multymedyjny fajł 3GPP Мултимедия — 3GPP fitxer multimèdia 3GPP multimediální soubor 3GPP 3GPP multimedie-fil 3GPP-Multimediadatei Αρχείο πολυμέσων 3GPP - 3GPP multimedia file + 3GPP multimedia file archivo multimedia 3GPP 3GPP multimediako fitxategia 3GPP-multimediatiedosto 3GGP margmiðlafíla fichier multimédia 3GPP + file multimediâl 3GPP comhad ilmheán 3GPP ficheiro multimedia 3GPP קובץ מולטימדיה מסוג 3GPP @@ -23370,7 +24322,7 @@ fichièr multimèdia 3GPP Plik multimedialny 3GPP ficheiro multimédia 3GPP - Arquivo multimídia 3GPP + Arquivo multimídia 3GPP Fișier multimedia 3GPP Мультимедийный файл 3GPP Súbor multimédií 3GPP @@ -23378,19 +24330,19 @@ File multimedial 3GPP 3ГПП мултимедијална датотека 3GPP-multimediafil - 3GPP multimedya dosyası + 3GPP çoklu ortam dosyası файл мультимедійних даних 3GPP Tập tin đa phương tiện 3GPP - 3GPP 多媒体文件 - 3GPP 多媒體檔案 + 3GPP 多媒体文件 + 3GPP 多媒體檔案 3GPP 3rd Generation Partnership Project - - - - + + + + @@ -23406,6 +24358,7 @@ 3GPP2 multimedia file + 3GPP2-multimedialêer ملف وسائط متعددة 3GPP2 Мултимедия — 3GPP2 fitxer multimèdia 3GPP2 @@ -23413,12 +24366,13 @@ 3GPP2 multimedie-fil 3GPP2-Multimediadatei Αρχείο πολυμέσων 3GPP2 - 3GPP2 multimedia file + 3GPP2 multimedia file archivo multimedia 3GPP2 3GPP2 multimediako fitxategia 3GPP2-multimediatiedosto 3GGP2 margmiðlafíla fichier multimédia 3GPP2 + file multimediâl 3GPP2 comhad ilmheán 3GPP2 ficheiro multimedia 3GPP2 קובץ מולטימדיה 3GPP2 @@ -23436,22 +24390,21 @@ fichièr multimèdia 3GPP2 Plik multimedialny 3GPP2 ficheiro multimédia 3GPP2 - Arquivo multimídia 3GPP2 + Arquivo multimídia 3GPP2 Fișier multimedia 3GPP2 Мультимедийный файл 3GPP2 Súbor multimédií 3GPP2 Večpredstavnostna datoteka 3GPP2 3ГПП2 мултимедијална датотека 3GPP2-multimediafil - 3GPP2 multimedya dosyası + 3GPP2 çoklu ortam dosyası файл мультимедійних даних 3GPP2 - 3GPP2 多媒体文件 - 3GPP2 多媒體檔案 + 3GPP2 多媒体文件 + 3GPP2 多媒體檔案 3GPP2 3rd Generation Partnership Project 2 - - + @@ -23461,20 +24414,21 @@ Amiga SoundTracker audio مقتفي صوت Amiga السمعي - Aŭdyjo Amiga SoundTracker + Aŭdyjo Amiga SoundTracker Аудио — Amiga SoundTracker àudio SoundTracker d'Amiga zvuk Amiga SoundTracker Amiga SoundTracker-lyd Amiga-SoundTracker-Audio Ήχος Amiga SoundTracker - Amiga SoundTracker audio + Amiga SoundTracker audio Sondosiero de Amiga SoundTracker - sonido de Amiga SoundTracker + audio de Amiga SoundTracker Amiga soundtracker audioa Amiga SoundTracker -ääni Amiga SoundTracker ljóður audio SoundTracker Amiga + audio Amiga SoundTracker fuaim Amiga SoundTracker son de Amiga SoundTracker קובץ שמע של Amiga SoundTracker @@ -23496,7 +24450,7 @@ àudio SoundTracker Amiga Plik dźwiękowy Amiga SoundTracker áudio SoundTracker do Amiga - Áudio Amiga SoundTracker + Áudio Amiga SoundTracker Audio Amiga SoundTracker Аудио Amiga SoundTracker Zvuk Amiga SoundTracker @@ -23507,41 +24461,60 @@ Amiga SoundTracker sesi звук Amiga SoundTracker Âm thanh Amiga SoundTracker - Amiga SoundTracker 音频 - Amiga SoundTracker 音訊 + Amiga SoundTracker 音频 + Amiga SoundTracker 音訊 - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + - + @@ -23553,21 +24526,23 @@ MP2 audio + MP2-oudio MP2 سمعي - Aŭdyjo MP2 + Aŭdyjo MP2 Аудио — MP2 àudio MP2 zvuk MP2 MP2-lyd MP2-Audio Ήχος MP2 - MP2 audio + MP2 audio MP2-sondosiero - sonido MP2 + audio MP2 MP2 audioa MP2-ääni MP2 ljóður audio MP2 + audio MP2 fuaim MP2 son MP2 שמע MP2 @@ -23587,7 +24562,7 @@ àudio MP2 Plik dźwiękowy MP2 áudio MP2 - Áudio MP2 + Áudio MP2 Audio MP2 Аудио MP2 Zvuk MP2 @@ -23598,16 +24573,17 @@ MP2 sesi звук MP2 Âm thanh MP2 - MP2 音频 - MP2 音訊 + MP2 音频 + MP2 音訊 MP3 audio + MP3-oudio MP3 سمعي MP3 audio faylı - Aŭdyjo MP3 + Aŭdyjo MP3 Аудио — MP3 àudio MP3 zvuk MP3 @@ -23615,13 +24591,14 @@ MP3-lyd MP3-Audio Ήχος MP3 - MP3 audio + MP3 audio MP3-sondosiero - sonido MP3 + audio MP3 MP3 audioa MP3-ääni MP3 ljóður audio MP3 + audio MP3 fuaim MP3 son MP3 שמע MP3 @@ -23643,7 +24620,7 @@ àudio MP3 Plik dźwiękowy MP3 áudio MP3 - Áudio MP3 + Áudio MP3 Audio MP3 Аудио MP3 Zvuk MP3 @@ -23654,70 +24631,26 @@ MP3 sesi звук MP3 Âm thanh MP3 - MP3 音频 - MP3 音訊 + MP3 音频 + MP3 音訊 - - + + + + + + + - MP3 audio (streamed) - MP3 سمعي (تدفق) - Aŭdyjo MP3 (płyń) - Аудио — MP3, поточно - àudio MP3 (flux) - zvuk MP3 (proud) - MP3-lyd (strøm) - MP3-Audio (Stream) - Ήχος MP3 (εκπεμπόμενος) - MP3 audio (streamed) - MP3-sondosiero (fluigate) - sonido MP3 (en transmisión) - MP3 audioa (korrontea) - MP3-ääni (virtaus) - MP3 ljóður (streymað) - audio MP3 (flux) - fuaim MP3 (sruthaithe) - son MP3 (en stream) - שמע MP3 (מוזרם) - MP3 zvučni zapis (strujanje) - MP3 hang (sugárzott) - Audio MP3 (fluxo) - Audio MP3 (stream) - Audio MP3 (in streaming) - MP3 オーディオ (ストリーム) - MP3 აუდიო (ნაკადი) - MP3 аудиосы (ағымдық) - MP3 오디오(스트림) - MP3 garso įrašas (transliuojamas) - MP3 audio (straumēts) - Audio MP3 (aliran) - MP3-lyd (streaming) - MP3-audio (gestreamd) - Strauma MP3-lyd - àudio MP3 (flux) - Plik dźwiękowy MP3 (strumień) - áudio MP3 (em fluxo) - Áudio MP3 (em fluxo) - Audio MP3 (flux) - Аудио MP3 (потоковое) - Zvuk MP3 (streamovaný) - Zvočna datoteka MP3 (pretočna) - Audio MP3 (streamed) - МП3 звук (проточан) - MP3-ljud (flöde) - MP3 sesi (akış) - звук MP3 (потоковий) - Âm thanh MP3 (chạy luồng) - MP3 音频流媒体 - MP3 音訊 (串流) + Media playlist @@ -23728,77 +24661,38 @@ - + - HTTP Live Streaming playlist - قائمة بث HTTP حية - Списък за изпълнение — поток по HTTP - llista de reproducció en temps real HTTP - seznam k přehrání HTTP Live Streaming - Afspilningsliste til HTTP-livestrøm - HTTP Live-Streaming-Wiedergabeliste - Λίστα αναπαραγωγής ζωντανής μετάδοσης σε HTTP - HTTP Live Streaming playlist - lista de reproducción de flujo en directo HTTP - HTTP zuzeneko korrontearen erreprodukzio-zerrenda - HTTP beinleiðis streymaður avspælingarlisti - liste de lecture de flux HTTP Live - seinmliosta sruthaithe bheo HTTP - lista de reprodución de fluxo HTTP - רשימת השמעה הזרימה של HTTP - HTTP popis izvođenja emitiranja uživo - HTTP élő lejátszólista - Lista de selection HTTP Live Streaming - Daftar putar HTTP Live Streaming - Playlist Live Steaming HTTP - HTTP ライブストリーミング再生リスト - HTTP тірі ағым ойнау тізімі - HTTP 라이브 스트리밍 재생 목록 - HTTP tiesioginio transliavimo grojaraštis - HTTP dzīvās straumēšanas repertuārs - HTTP Live Streaming afspeellijst - lista de lectura de flux HTTP Live - Lista odtwarzania strumieniowego na żywo HTTP - lista de reprodução HTTP Live Streaming - Lista de Reprodução Streaming ao Vivo de HTTP - Listă de redare difuzată ca flux HTTP - Список воспроизведения HTTP-потока - Zoznam stôp HTTP Live Streaming - Seznam predvajanja živega pretoka HTTP - ХТТП списак нумера Живог Протока - HTTP Live Streaming-spellista - HTTP Canlı Akış çalma listesi - список відтворення HTTP Live Streaming - HTTP 实时流播放列表 - HTTP 即時串流播放清單 + Media playlist - - - + + + Microsoft ASX playlist قائمة تشغيل مايكروسوفت ASX - Śpis Microsoft ASX + Śpis Microsoft ASX Списък за изпълнение — Microsoft ASX llista de reproducció de Microsoft ASX seznam k přehrání Microsoft ASX Microsoft ASX-afspilningsliste Microsoft-ASX-Wiedergabeliste Λίστα αναπαραγωγής Microsoft ASX - Microsoft ASX playlist + Microsoft ASX playlist lista de reproducción ASX de Microsoft Microsoft ASX erreprodukzio-zerrenda Microsoft ASX -soittolista Microsoft ASX avspælingarlisti liste de lecture Microsoft ASX + liste di riproduzion Microsoft ASX seinmliosta Microsoft ASX lista de reprodución Microsoft ASX רשימת השמעה ASX (מיקרוסופט) @@ -23819,7 +24713,7 @@ lista de lectura Microsoft ASX Lista odtwarzania Microsoft ASX lista de reprodução Microsoft ASX - Lista de reprodução do Microsoft ASX + Lista de reprodução do Microsoft ASX Listă redare Microsoft ASX Список воспроизведения Microsoft ASX Zoznam skladieb Microsoft ASX @@ -23830,8 +24724,8 @@ Microsoft ASX çalma listesi список відтворення ASX Microsoft Danh mục nhạc Microsoft ASX - Microsoft ASX 播放列表 - 微軟 ASX 播放清單 + Microsoft ASX 播放列表 + 微軟 ASX 播放清單 @@ -23841,29 +24735,31 @@ - - - - + + + + PSF audio + PSF-oudio PSF سمعي - Aŭdyjo PSF + Aŭdyjo PSF Аудио — PSF àudio PSF zvuk PSF PSF-lyd PSF-Audio Ήχος PSF - PSF audio + PSF audio PSF-sondosiero - sonido PSF + audio PSF PSF audioa PSF-ääni PSF ljóður audio PSF + audio PSF fuaim PSF son PSF שמע PSF @@ -23883,7 +24779,7 @@ àudio PSF Plik dźwiękowy PSF áudio PSF - Áudio PSF + Áudio PSF Audio PSF Аудио PSF Zvuk PSF @@ -23894,32 +24790,34 @@ PSF sesi звук PSF Âm thanh PSF - PSF 音频 - PSF 音訊 + PSF 音频 + PSF 音訊 PSF Portable Sound Format - + MiniPSF audio + MiniPSF-oudio MiniPSF سمعي - Aŭdyjo MiniPSF + Aŭdyjo MiniPSF Аудио — MiniPSF àudio MiniPSF zvuk MiniPSF MiniPSF-lyd MiniPSF-Audio Ήχος MiniPSF - MiniPSF audio + MiniPSF audio MiniPSF-sondosiero - sonido MiniPSF + audio MiniPSF MiniPSF audioa MiniPSF-ääni MiniPSF ljóður audio MiniPSF + audio MiniPSF fuaim MiniPSF son MiniPSF שמע של MiniPSP @@ -23940,7 +24838,7 @@ àudio MiniPSF Plik dźwiękowy MiniPSF áudio MiniPSF - Áudio MiniPSF + Áudio MiniPSF Audio MiniPSF Аудио MiniPSF Zvuk MiniPSF @@ -23951,8 +24849,8 @@ MiniPSF sesi звук MiniPSF Âm thanh MiniPSF - MiniPSF 音频 - MiniPSF 音訊 + MiniPSF 音频 + MiniPSF 音訊 MiniPSF Miniature Portable Sound Format @@ -23960,20 +24858,22 @@ PSFlib audio library + PSFlib-oudiobiblioteek مكتبة PSFlib السمعية - Aŭdyjobiblijateka PSFlib + Aŭdyjobiblijateka PSFlib Аудио библиотека — PSFlib biblioteca d'àudio PSFlib zvuková knihovna PSFlib PSFlib-lydbibliotek PSFlib-Audiobibliothek Βιβλιοθήκη ήχου PSFlib - PSFlib audio library - biblioteca de sonido PSFlib + PSFlib audio library + biblioteca de audio PSFlib PSFlib audioaren liburutegia PSFlib-äänikirjasto PSFlib ljóðsavn bibliothèque audio PSFlib + librarie audio PSFlib leabharlann fhuaime PSFlib Biblioteca de son PSFlib ספריית שמע PSFlib @@ -23993,7 +24893,7 @@ bibliotèca àudio PSFlib Biblioteka dźwiękowa PSFlib biblioteca áudio PSFlib - Biblioteca de áudio PSFlib + Biblioteca de áudio PSFlib Bibliotecă audio PSFlib Фонотека PSFlib Zvuková knižnica PSFlib @@ -24004,8 +24904,8 @@ PSFlib ses kitaplığı аудіобібліотека PSFlib Thư viện âm thanh PSFlib - PSFlib 音频库 - PSFlib 音訊庫 + PSFlib 音频库 + PSFlib 音訊庫 PSFlib Portable Sound Format Library @@ -24013,20 +24913,22 @@ Windows Media audio + Windows Media-oudio Windows Media سمعي - Aŭdyjo Windows Media + Aŭdyjo Windows Media Аудио — Windows Media àudio de Windows Media zvuk Windows Media Windows Media-lyd Windows-Media-Audio Ήχος Windows Media - Windows Media audio - sonido de Windows Media + Windows Media audio + audio de Windows Media Windows Media audioa Windows Media -ääni Windows Media ljóður audio Windows Media + audio Windows Media fuaim Windows Media son de Windows Media שמע של Windows Media @@ -24046,7 +24948,7 @@ àudio Windows Media Plik dźwiękowy Windows Media áudio Windows Media - Áudio do Windows Media + Áudio do Windows Media Audio Windows Media Аудио Windows Media Zvuk Windows Media @@ -24057,28 +24959,30 @@ Windows Media sesi звук Windows Media Âm thanh Windows Media - Windows Media 音频 - Windows Media 音訊 + Windows Media 音频 + Windows Media 音訊 Musepack audio + Musepack-oudio Musepack سمعي - Aŭdyjo Musepack + Aŭdyjo Musepack Аудио — Musepack àudio de Musepack zvuk Musepack - Musepacklyd + Musepack-lyd Musepack-Audio Ήχος Musepack - Musepack audio - sonido Musepack + Musepack audio + audio Musepack Musepack audioa Musepack-ääni Musepack ljóður audio Musepack + audio Musepack fuaim Musepack son de Musepack שמע של Musepack @@ -24098,7 +25002,7 @@ àudio Musepack Plik dźwiękowy Musepack áudio Musepack - Áudio Musepack + Áudio Musepack Audio Musepack Аудио Musepack Zvuk Musepack @@ -24109,10 +25013,11 @@ Musepack sesi звук Musepack Âm thanh Musepack - Musepack 音频 - Musepack 音訊 + Musepack 音频 + Musepack 音訊 - + + @@ -24120,22 +25025,24 @@ RealAudio document + RealAudio-dokument مستند RealAudio Documentu RealAudio - Dakument RealAudio + Dakument RealAudio Документ — RealAudio document RealAudio dokument RealAudio RealAudio-dokument RealAudio-Dokument Έγγραφο RealAudio - RealAudio document + RealAudio document RealAudio-dokumento documento RealAudio RealAudio dokumentua RealAudio-asiakirja RealAudio skjal document RealAudio + document RealAudio cáipéis RealAudio documento Realson מסמך של RealAudio @@ -24155,7 +25062,7 @@ document RealAudio Dokument RealAudio documento RealAudio - Documento RealAudio + Documento RealAudio Document RealAudio Документ RealAudio Dokument RealAudio @@ -24166,81 +25073,61 @@ RealAudio belgesi документ RealAudio Tài liệu âm thanh RealAudio - RealAudio 文档 - RealAudio 文件 + RealAudio 文档 + RealAudio 文件 - RealMedia Metafile - ملف تعريف RealMedia - Metafajł RealMedia - Метафайл — RealMedia - metafitxer RealMedia - RealMedia Metafile - RealMedia-metafil - RealMedia-Metadatei - Metafile RealMedia - RealMedia Metafile - metaarchivo RealMedia - RealMedia metafitxategia - RealMedia-metatiedosto - RealMedia metafíla - métafichier RealMedia - Meiteachomhad RealMedia - Metaficheiro RealMedia - קובץ מטא של RealMedia - RealMedia meta datoteka - RealMedia metafájl - Metafile RealMedia - RealMedia Metafile - Metafile RealMedia - RealMedia メタファイル - RealMedia метафайлы - RealMedia 메타 파일 - RealMedia metafailas - RealMedia metadatne - RealMedia-metafil - RealMedia-metabestand - RealMedia-metafil - metafichièr RealMedia - Metaplik RealMedia - metaficheiro RealMedia - Meta arquivo do RealMedia - Metafișier RealMedia - Мета-файл RealMedia - RealMedia Metafile - Metadatoteka RealMedia - Metafile RealMedia - метадатотека Рил Медија - RealMedia-metafil - RealMedia Meta Dosyası - метафайл RealMedia - Siêu tập tin RealMedia - RealMedia 元文件 - RealMedia 中介檔 + RealMedia playlist + Списък за изпълнение — RealMedia + llista de reproducció RealMedia + RealMedia-afspilningsliste + RealMedia-Wiedergabeliste + RealMedia playlist + lista de reproducción de RealMedia + RealMedia erreprodukzio-zerrenda + RealMedia-soittolista + liste de lecture RealMedia + RealMedia popis izvođenja + RealMedia lejátszólista + Daftar putar RealMedia + Playlist RealMedia + RealMedia ойнау тізімі + RealMedia 재생 목록 + Lista odtwarzania RealMedia + Lista de reprodução do RealMedia + Список воспроизведения RealMedia + Zoznam skladieb RealMedia + RealMedia-spellista + RealMedia çalma listesi + список відтворення RealMedia + RealMedia 播放列表 + RealMedia 播放清單 RealVideo document + RealVideo-dokument مستند RealVideo Documentu RealVideo - Dakument RealVideo + Dakument RealVideo Документ — RealVideo document RealVideo dokument RealVideo RealAudio-dokument RealVideo-Dokument Έγγραφο RealVideo - RealVideo document + RealVideo document RealVideo-dokumento documento RealVideo RealVideo dokumentua RealVideo-asiakirja RealVideo skjal document RealVideo + document RealVideo cáipéis RealVideo documento RealVideo מסמך של RealVideo @@ -24260,7 +25147,7 @@ document RealVideo Dokument RealVideo documento RealVideo - Documento RealVideo + Documento RealVideo Document RealVideo Документ RealVideo Dokument RealVideo @@ -24268,33 +25155,35 @@ Dokument RealVideo документ Рил Видеа RealVideo-dokument - RealAudio belgesi + RealVideo belgesi документ RealVideo Tài liệu ảnh động RealVideo - RealAudio 文档 - RealVideo 文件 + RealAudio 文档 + RealVideo 文件 RealMedia document + RealMedia-dokument مستند RealMedia Documentu RealMedia - Dakument RealMedia + Dakument RealMedia Документ — RealMedia document RealMedia dokument RealMedia RealMedia-dokument RealMedia-Dokument Έγγραφο RealMedia - RealMedia document + RealMedia document RealMedia-dokumento documento RealMedia RealMedia dokumentua RealMedia-asiakirja RealMedia skjal document RealMedia + document RealMedia cáipéis RealMedia documento RealMedia מסמך של RealMedia @@ -24314,7 +25203,7 @@ document RealMedia Dokument RealMedia documento RealMedia - Documento RealMedia + Documento RealMedia Document RealMedia Документ RealMedia Dokument RealMedia @@ -24325,11 +25214,11 @@ RealMedia belgesi документ RealMedia Tài liệu RealMedia - RealMedia 文档 - RealMedia 文件 + RealMedia 文档 + RealMedia 文件 - + @@ -24341,22 +25230,24 @@ RealPix document + RealPix-dokument مستند RealPix Documentu RealPix - Dakument RealPix + Dakument RealPix Документ — RealPix document RealPix dokument RealPix RealPix-dokument RealPix-Dokument Έγγραφο RealPix - RealPix document + RealPix document RealPix-dokumento documento RealPix RealPix dokumentua RealPix-asiakirja RealPix skjal document RealPix + document RealPix cáipéis RealPix documento RealPix מסמך של RealPix @@ -24376,7 +25267,7 @@ document RealPix Dokument RealPix documento RealPix - Documento RealPix + Documento RealPix Document RealPix Документ RealPix Dokument RealPix @@ -24387,28 +25278,30 @@ RealPix belgesi документ RealPix Tài liệu ảnh RealPix - RealPix 文档 - RealPix 文件 + RealPix 文档 + RealPix 文件 RealText document + RealText-dokument مستند RealText Documentu RealText - Dakument RealText + Dakument RealText Документ — RealText document RealText dokument RealText RealText-dokument RealText-Dokument Έγγραφο RealText - RealText document + RealText document RealText-dokumento documento RealText RealText dokumentua RealText-asiakirja RealText skjal document RealText + document RealText cáipéis RealText documento RealText מסמך של RealText @@ -24428,7 +25321,7 @@ document RealText Dokument RealText documento RealText - Documento RealText + Documento RealText Document RealText Документ RealText Dokument RealText @@ -24439,15 +25332,16 @@ RealText belgesi документ RealText Tài liệu văn bản RealText - RealText 文档 - RealText 文件 + RealText 文档 + RealText 文件 RIFF audio + RIFF-oudio RIFF سمعي RIFF audio faylı - Aŭdyjo RIFF + Aŭdyjo RIFF Аудио — RIFF àudio RIFF zvuk RIFF @@ -24455,13 +25349,14 @@ RIFF-lyd RIFF-Audio Ήχος RIFF - RIFF audio + RIFF audio RIFF-sondosiero - sonido RIFF + audio RIFF RIFF audioa RIFF-ääni RIFF ljóð audio RIFF + audio RIFF fuaim RIFF son RIFF שמע RIFF @@ -24482,7 +25377,7 @@ àudio RIFF Plik dźwiękowy RIFF áudio RIFF - Áudio RIFF + Áudio RIFF Audio RIFF Аудио RIFF Zvuk RIFF @@ -24493,20 +25388,24 @@ RIFF sesi звук RIFF Âm thanh RIFF - RIFF 音频 - RIFF 音訊 + RIFF 音频 + RIFF 音訊 RIFF container + RIFF-houer + Контейнер — RIFF contenidor RIFF kontejner RIFF RIFF-container RIFF-Container Περιέκτης RIFF - RIFF container + RIFF container contenedor RIFF RIFF edukitzailea + RIFF-kontti conteneur RIFF + contignidôr RIFF coimeádán RIFF Contenedor RIFF מכולת RIFF @@ -24520,7 +25419,7 @@ contenidor RIFF Kontener RIFF contentor RIFF - Contêiner RIFF + Contêiner RIFF Контейнер RIFF Kontajner RIFF Vsebnik RIFF @@ -24528,18 +25427,18 @@ RIFF-behållare RIFF deposu контейнер RIFF - RIFF 容器 - RIFF 容器 - + RIFF 容器 + RIFF 容器 + - + Scream Tracker 3 audio Scream Tracker 3 سمعي Scream Tracker 3 audio faylı - Aŭdyjo Scream Tracker 3 + Aŭdyjo Scream Tracker 3 Аудио — Scream Tracker 3 àudio de Scream Tracker 3 skladba Scream Tracker 3 @@ -24547,13 +25446,14 @@ Scream Tracker 3-lyd Scream-Tracker-3-Audio Ήχος Scream Tracker 3 - Scream Tracker 3 audio + Scream Tracker 3 audio Sondosiero de Scream Tracker 3 - sonido Scream Tracker 3 + audio Scream Tracker 3 Scream Tracker 3 audioa Scream Tracker 3 -ääni Scream Tracker 3 ljóður audio Scream Tracker 3 + audio Scream Tracker 3 fuaim Scream Tracker 3 son Scream Tracker 3 שמע של Scream Tracker 3 @@ -24574,7 +25474,7 @@ àudio Scream Tracker 3 Plik dźwiękowy Scream Tracker 3 áudio Scream Tracker 3 - Áudio Scream Tracker 3 + Áudio Scream Tracker 3 Audio Scream Tracker 3 Аудио Scream Tracker 3 Skladba Scream Tracker 3 @@ -24585,8 +25485,8 @@ Scream Tracker 3 sesi звук Scream Tracker 3 Âm thanh Scream Tracker 3 - Scheme Tracker 3 音频 - Scream Tracker 3 音訊 + Scheme Tracker 3 音频 + Scream Tracker 3 音訊 @@ -24595,20 +25495,21 @@ MP3 ShoutCast playlist قائمة تشغيل MP3 ShoutCast - Śpis piesień dla tranślacyi MP3 + Śpis piesień dla tranślacyi MP3 Списък за изпълнение — MP3 ShoutCast llista de reproducció MP3 ShoutCast seznam k přehrání MP3 ShoutCast MP3 ShoutCast-afspilningsliste MP3-ShoutCast-Wiedergabeliste Λίστα αναπαραγωγής MP3 ShoutCast - MP3 ShoutCast playlist + MP3 ShoutCast playlist MP3-ludlisto de ShoutCast lista de reproducción MP3 ShoutCast MP3 ShoutCast erreprodukzio-zerrenda MP3 ShoutCast -soittolista MP3 ShoutCast avspælingarlisti liste de lecture MP3 ShoutCast + liste di riproduzion MP3 ShoutCast seinmliosta MP3 ShoutCast lista de reprodución MP3 de ShoutCast רשימת השמעה MP3 של ShoutCast @@ -24629,7 +25530,7 @@ lista de lectura MP3 ShoutCast Lista odtwarzania MP3 ShoutCast lista de reprodução MP3 ShoutCast - Lista de reprodução MP3 ShoutCast + Lista de reprodução MP3 ShoutCast Listă MP3 ShoutCast Список воспроизведения MP3 ShoutCast Zoznam skladieb MP3 ShoutCast @@ -24640,14 +25541,14 @@ MP3 ShoutCast çalma listesi список програвання MP3 ShoutCast Danh mục nhạc MP3 ShoutCast - MP3 ShoutCast 播放列表 - MP3 ShoutCast 播放清單 + MP3 ShoutCast 播放列表 + MP3 ShoutCast 播放清單 - - - + + + @@ -24655,7 +25556,7 @@ Scream Tracker audio Scream Tracker سمعي Scream Tracker audio faylı - Aŭdyjo Scream Tracker + Aŭdyjo Scream Tracker Аудио — Scream Tracker àudio de Scream Tracker skladba Scream Tracker @@ -24663,13 +25564,14 @@ Scream Tracker-lyd Scream-Tracker-Audio Ήχος Scream Tracker - Scream Tracker audio + Scream Tracker audio Sondosiero de Scream Tracker - sonido Scream Tracker + audio Scream Tracker Scream Tracker audioa Scream Tracker -ääni Scream Tracker ljóður audio Scream Tracker + audio Scream Tracker fuaim Scream Tracker son Scream Tracker שמע של Scream Tracker @@ -24690,7 +25592,7 @@ àudio Scream Tracker Plik dźwiękowy Scream Tracker áudio Scream Tracker - Áudio Scream Tracker + Áudio Scream Tracker Audio Scream Tracker Аудио Scream Tracker Skladba Scream Tracker @@ -24701,20 +25603,21 @@ Scream Tracker sesi звук Scream Tracker Âm thanh Scream Tracker - Scream Tracker 音频 - Scream Tracker 音訊 + Scream Tracker 音频 + Scream Tracker 音訊 - - - + + + VOC audio + VOC-oudio VOC سمعي VOC audio faylı - Aŭdyjo VOC + Aŭdyjo VOC Аудио — VOC àudio VOC zvuk VOC @@ -24722,13 +25625,14 @@ VOC-lyd VOC-Audio Ήχος VOC - VOC audio + VOC audio VOC-sondosiero - sonido VOC + audio VOC VOC audioa VOC-ääni VOC ljóður audio VOC + audio VOC fuaim VOC son VOC שמע VOC @@ -24749,7 +25653,7 @@ àudio VOC Plik dźwiękowy VOC áudio VOC - Áudio VOC + Áudio VOC Audio VOC Аудио VOC Zvuk VOC @@ -24760,15 +25664,16 @@ VOC sesi звук VOC Âm thanh VOC - VOC 音频 - VOC 音訊 + VOC 音频 + VOC 音訊 WAV audio + WAV-oudio WAV سمعي WAV audio faylı - Aŭdyjo WAV + Aŭdyjo WAV Аудио — WAV àudio WAV zvuk WAV @@ -24776,13 +25681,14 @@ WAV-lyd WAV-Audio Ήχος WAV - WAV audio + WAV audio WAV-sonkodo - sonido WAV + audio WAV WAV audioa WAV-ääni WAV ljóður audio WAV + audio WAV fuaim WAV son WAV שמע WAV @@ -24803,7 +25709,7 @@ àudio WAV Plik dźwiękowy WAV áudio WAV - Áudio WAV + Áudio WAV Audio WAV Аудио WAV Zvuk WAV @@ -24814,13 +25720,13 @@ WAV sesi звук WAV Âm thanh WAV - WAV 音频 - WAV 音訊 + WAV 音频 + WAV 音訊 - - + + @@ -24828,7 +25734,7 @@ Scream Tracker instrument آلة Scream Tracker Scream Tracker instrumenti - Instrument Scream Tracker + Instrument Scream Tracker Инструмент — Scream Tracker instrument de Scream Tracker nástroj pro Scream Tracker @@ -24836,13 +25742,14 @@ Scream Tracker-instrument Scream-Tracker-Instrument Μουσικό όργανο Scream Tracker - Scream Tracker instrument + Scream Tracker instrument instrumento de Scream Tracker instrumento Scream Tracker Scream Tracker instrumentua Scream Tracker -soitin Scream Tracker ljóðføri instrument Scream Tracker + strument Scream Tracker ionstraim Scream Tracker Instrumento Scream Tracker כלי של Scream Tracker @@ -24863,7 +25770,7 @@ instrument Scream Tracker Instrument Scream Tracker instrumento Scream Tracker - Instrumento Scream Tracker + Instrumento Scream Tracker Instrument Scream Tracker Инструмент Scream Tracker Nástroj pre Scream Tracker @@ -24874,8 +25781,8 @@ Scream Tracker çalgısı інструмент Scream Tracker Nhạc khí Scream Tracker - Scream Tracker 乐器 - Scream Tracker 樂器檔 + Scream Tracker 乐器 + Scream Tracker 樂器檔 @@ -24885,7 +25792,7 @@ FastTracker II audio FastTracker II سمعي FastTracker II audio faylı - Aŭdyjo FastTracker II + Aŭdyjo FastTracker II Аудио — FastTracker II àudio de FastTracker II zvuk FastTracker II @@ -24893,13 +25800,14 @@ FastTracker II-lyd FastTracker-II-Audio Ήχος FastTracker II - FastTracker II audio + FastTracker II audio Sondosiero de FastTracker II - sonido FastTracker II + audio FastTracker II FastTracker II.ren audioa FastTracker II -ääni FastTracker II ljóður audio FastTracker II + audio FastTracker II fuaim FastTracker II son de FastTracker II שמע FastTracker II @@ -24921,7 +25829,7 @@ àudio FastTracker II Plik dźwiękowy FastTracker II áudio FastTracker II - Áudio FastTracker II + Áudio FastTracker II Audio FastTracker II Аудио FastTracker II Zvuk FastTracker II @@ -24932,8 +25840,8 @@ FastTracker II sesi звук FastTracker II Âm thanh FastTracker II - FastTracker II 音频 - FastTracker II 音訊 + FastTracker II 音频 + FastTracker II 音訊 @@ -24941,21 +25849,23 @@ TrueAudio audio + TrueAudio-oudio TrueAudio سمعي - Aŭdyjo TrueAudio + Aŭdyjo TrueAudio Аудио — TrueAudio - àudio de TrueAudio + àudio TrueAudio zvuk TrueAudio TrueAudio-lyd TrueAudio-Audio Ήχος TrueAudio - TrueAudio audio + TrueAudio audio TrueAudio-sondosiero - sonido TrueAudio + audio TrueAudio TrueAudio audioa TrueAudio-ääni TrueAudio ljóður audio TrueAudio + audio TrueAudio fuaim TrueAudio son Trueson שמע TrueAudio @@ -24975,7 +25885,7 @@ àudio TrueAudio Plik dźwiękowy TrueAudio áudio TrueAudio - Áudio TrueAudio + Áudio TrueAudio Audio TrueAudio Аудио TrueAudio Zvuk TrueAudio @@ -24986,8 +25896,8 @@ TrueAudio sesi звук TrueAudio Âm thanh TrueAudio - TrueAudio 音频 - TrueAudio 音訊 + TrueAudio 音频 + TrueAudio 音訊 @@ -24996,9 +25906,10 @@ Windows BMP image + Windows BMP-beeld صورة Windows BMP Windows BMP rəsmi - Vyjava Windows BMP + Vyjava Windows BMP Изображение — Windows BMP imatge BMP de Windows obrázek Windows BMP @@ -25006,13 +25917,14 @@ Windows BMP-billede Windows-BMP-Bild Εικόνα Windows BMP - Windows BMP image + Windows BMP image BMP-bildo de Vindozo imagen BMP de Windows Windows BMP irudia Windows BMP -kuva Windows BMP mynd image Windows BMP + imagjin Windows BMP íomhá BMP Windows imaxe BMP de Windows תמונת BMP של Windows @@ -25033,7 +25945,7 @@ imatge Windows BMP Obraz BMP Windows imagem BMP Windows - Imagem BMP do Windows + Imagem BMP do Windows Imagine Windows BMP Изображение Windows BMP Obrázok Windows BMP @@ -25044,14 +25956,14 @@ Windows BMP görüntüsü зображення Windows BMP Ảnh BMP Windows - Windows BMP 图像 - Windows BMP 影像 + Windows BMP 图像 + Windows BMP 影像 - - - - - + + + + + @@ -25061,21 +25973,23 @@ WBMP image + WBMP-beeld صورة WBMP - Vyjava WBMP + Vyjava WBMP Изображение — WBMP imatge WBMP obrázek WBMP WBMP-billede WBMP-Bild Εικόνα WBMP - WBMP image + WBMP image WBMP-bildo imagen WBMP WBMP irudia WBMP-kuva WBMP mynd image WBMP + imagjin WBMP íomhá WBMP imaxe WBMP תמונת WBMP @@ -25095,7 +26009,7 @@ imatge WBMP Obraz WBMP imagem WBMP - Imagem WBMP + Imagem WBMP Imagine WBMP Изображение WBMP Obrázok WBMP @@ -25106,177 +26020,77 @@ WBMP görüntüsü зображення WBMP Ảnh WBMP - WBMP 图像 - WBMP 影像 + WBMP 图像 + WBMP 影像 WBMP WAP bitmap - Computer Graphics Metafile - ملف تعريف رسوميات الحاسوب - Kompüter Qrafikası Meta Faylı - Metafajł Computer Graphics - Метафайл — Computer Graphics - metafitxer de Computer Graphics - Computer Graphics Metafile - Delwedd ffurf CGM - Computer Graphics-metafil - CGM-Datei - Αρχείο Computer Graphics Metafile - Computer Graphics Metafile - metaarchivo de Computer Graphics - Ordenagailuko grafikoen meta-fitxategia - Computer Graphics -metatiedosto - Teldugrafikk metafíla - métafichier Computer Graphics - Meiteachomhad Grafaicí Ríomhaire - metaficheiro de Computer Graphics - קובץ-מטה מסוג Computer Graphics - Computer Graphics meta datoteka - Computer Graphics-metafájl - Metafile Computer Graphics - Computer Graphics Metafile - Computer Graphics Metafile - コンピューターグラフィックメタファイル - компьютерлік графика метафайлы - 컴퓨터 그래픽스 메타 파일 - Computer Graphics metafailas - Datorgrafikas metadatne - Failmeta Grafik Komputer - Computer Graphics Metafile - Computer Graphics-metabestand - Computer Graphics Metafile - metafichièr Computer Graphics - Metaplik grafiki komputerowej (CGM) - metaficheiro Computer Graphics - Meta-arquivo do Computer Graphics - Metafișier Computer Graphics - Метафайл компьютерной графики - Computer Graphics Metafile - Metadatoteka računalniške grafike (CGM) - Metafile Computer Graphics - Метадатотека рачунарске графике - Computer Graphics Metafil - Computer Graphics Meta dosyası - метафайл комп'ютерної графіки - Siêu tập tin đồ họa máy tính (CMF) - 计算机图形图元文件 (CGM) - CGM 影像 + CGM image + Изображение — CGM + imatge CGM + CGM-billede + CGM-Bild + CGM image + imagen CGM + CGM irudia + CGM-kuva + image CGM + CGM slika + CGM-kép + Citra CGM + Immagine CGM + CGM суреті + CGM 이미지 + Obraz CGM + Imagem CGM + Изображение CGM + Obrázok CGM + Slika CGM + CGM-bild + CGM görüntüsü + зображення CGM + CGM 图像 + CGM 影像 + CGM + Computer Graphics Metafile - - CCITT G3 fax - فاكس CCITT G3 - Faks CCITT G3 - Факс — CCITT G3 - fax CCITT G3 - fax CCITT G3 - CCITT G3-fax - CCITT-G3-Fax - φαξ σε μορφή CCITT G3 - CCITT G3 fax - G3-fakso de CCITT - fax de CCITT G3 - CCITT G3 faxa - CCITT G3 -faksi - CCITT G3 telefaks - télécopie G3 CCITT - facs CCITT G3 - fax de CCITT G3 - פקס של CCITT G3 - CCITT G3 faks - CCITT G3-fax - Fax CCITT G3 - Faks CCITT G3 - Fax CCITT G3 - CCITT G3 FAX - CCITT G3 ფაქსი - CCITT G3 факсі - CCITT G3 팩스 - CCITT G3 faksas - CCITT G3 fakss - Faks g3 CCITT - CCITT G3-faks - CCITT G3-fax - CCITT G3-fax - telecòpia G3 CCITT - Faks CCITT G3 - fax CCITT G3 - Fax do CCITT G3 - Fax CCITT G3 - Факс CCITT G3 - Fax CCITT G3 - Datoteka faksimila CCITT G3 - Fax CCITT G3 - ЦЦИТТ Г3 факс - CCITT G3-fax - CCITT G3 faksı - факс CCITT G3 - Điện thư G3 CCITT - CCITT G3 传真 - CCITT G3 傳真檔 - - - G3 fax image - صورة فاكس G3 - G3 faks rəsmi - Faksavaja vyjava G3 - Изображение — факс G3 - imatge de fax G3 - faxový obrázek G3 - Delwedd Ffacs G3 - G3-faxbillede - G3-Faxbild - Εικόνα φαξ G3 - G3 fax image - G3-faksbildo - imagen de fax G3 - G3 fax-irudia - G3-faksikuva - G3 fax mynd - image de télécopie G3 - íomhá fhacs G3 - imaxe de fax G3 - תמונת פקס של G3 - G3 slika faksa - G3-faxkép - Imagine de fax G3 - Citra faks G3 - Immagine fax G3 - G3 FAX 画像 - G3 fax გამოსახულება - G3 факс суреті - G3 팩스 그림 - G3 fax paveikslėlis - G3 faksa attēls - Imej fax G3 - G3-faksbilde - G3 faxafbeelding - G3 faksbilete - imatge de telecòpia G3 - Obraz faksowy G3 - imagem de fax G3 - Imagem de fax G3 - Imagine fax G3 - Факсовое изображение G3 - Obrázok fax G3 - Slikovna datoteka G3 fax - Figurë Fax G3 - слика Г3 факса - G3-faxbild - G3 fax görüntüsü - факс G3 - Ảnh điện thư G3 - G3 传真图像 - G3 傳真圖 + CCITT G3 fax image + Изображение — CCITT G3, факс + imatge de fax CCITT G3 + CCITT G3-faxbillede + CCITT-G3-Faxbild + CCITT G3 fax image + imagen de fax CCITT G3 + CCITT G3 fax irudia + CCITT G3 -faksikuva + image de télécopie CCITT G3 + CCITT G3 slika faksa + CCITT G3-faxkép + Citra faks CCITT G3 + Immagine fax CCIT G3 + CCITT G3 факс суреті + CCITT G3 팩스 이미지 + Obraz faksowy G3 CCITT + Imagem de fax CCITT G3 + Факсовое изображение CCITT G3 + CCITT G3 faxbild + CCITT G3 faks görüntüsü + зображення факсу G3 CCITT + CCITT G3 传真图像 + CCITT G3 傳真影像 + + GIF image + GIF-beeld صورة GIF GIF rəsmi - Vyjava GIF + Vyjava GIF Изображение — GIF imatge GIF obrázek GIF @@ -25284,13 +26098,14 @@ GIF-billede GIF-Bild Εικόνα GIF - GIF image + GIF image GIF-bildo imagen GIF GIF irudia GIF-kuva GIF mynd image GIF + imagjin GIF íomhá GIF imaxe GIF תמונת GIF @@ -25312,7 +26127,7 @@ imatge GIF Obraz GIF imagem GIF - Imagem GIF + Imagem GIF Imagine GIF Изображение GIF Obrázok GIF @@ -25323,15 +26138,44 @@ GIF görüntüsü зображення GIF Ảnh GIF - GIF 图像 - GIF 影像 + GIF 图像 + GIF 影像 - + HEIF image + HEIF-beeld + Изображение — HEIF + imatge HEIF + obrázek HEIF + HEIF-billede + HEIF-Bild + HEIF image + imagen HEIF + HEIF irudia + HEIF-kuva + image HEIF + imagjin HEIF + íomhá HEIF + HEIF slika + HEIF kép + Citra HEIF + Immagine HEIF + HEIF суреті + HEIF 그림 + Obraz HEIF + Imagem HEIF + Изображение HEIF + Obrázok HEIF + Slika HEIF + HEIF-bild + HEIF görüntüsü + зображення HEIF + HEIF 图像 + HEIF 影像 HEIF High Efficiency Image File @@ -25342,9 +26186,10 @@ IEF image + IEF-beeld صورة IEF IEF rəsmi - Vyjava IEF + Vyjava IEF Изображение — IEF imatge IEF obrázek IEF @@ -25352,13 +26197,14 @@ IEF-billede IEF-Bild Εικόνα IEF - IEF image + IEF image IEF-bildo imagen IEF IEF irudia IEF-kuva IEF mynd image IEF + imagjin IEF íomhá IEF imaxe IEF תמונת IEF @@ -25379,7 +26225,7 @@ imatge IEF Obraz IEF imagem IEF - Imagem IEF + Imagem IEF Imagine IEF Изображение IEF Obrázok IEF @@ -25390,15 +26236,16 @@ IEF görüntüsü зображення IEF Ảnh IEF - IEF 图像 - IEF 影像 + IEF 图像 + IEF 影像 JPEG image + JPEG-beeld صورة JPEG JPEG rəsmi - Vyjava JPEG + Vyjava JPEG Изображение — JPEG imatge JPEG obrázek JPEG @@ -25406,13 +26253,14 @@ JPEG-billede JPEG-Bild Εικόνα JPEG - JPEG image + JPEG image JPEG-bildo imagen JPEG JPEG irudia JPEG-kuva JPEG mynd image JPEG + imagjin JPEG íomhá JPEG imaxe JPEG תמונת JPEG @@ -25433,7 +26281,7 @@ imatge JPEG Obraz JPEG imagem JPEG - Imagem JPEG + Imagem JPEG Imagine JPEG Изображение JPEG Obrázok JPEG @@ -25444,19 +26292,47 @@ JPEG görüntüsü зображення JPEG Ảnh JPEG - JPEG 图像 - JPEG 影像 + JPEG 图像 + JPEG 影像 - - + + - + MJPEG video stream + MJPEG-videostroom + Поток — MJPEG, видео + flux de vídeo MJPEG + datový tok videa MJPEG + MJPEG-videostrøm + MJPEG-Videodatenstrom + MJPEG video stream + videotransmisión MJPEG + MJPEG bideo korrontea + MJPEG-videon suoratoisto + flux vidéo MJPEG + trasmission video MJPEG + sruth físe MJPEG + Prijenos MJPEG videa + MJPEG videofolyam + Stream video MJPEG + Stream video MJPEG + MJPEG видео ағыны + MJPEG 비디오 스트림 + Strumień wideo MJPEG + Fluxo de vídeo MPEG + Видеопоток MJPEG + Stream videa MJPEG + MJPEG-videoström + MJPEG video akışı + відеопотік MJPEG + MJPEG 视频流 + MJPEG 視訊串流 MJPEG Motion JPEG @@ -25465,27 +26341,35 @@ JPEG-2000 codestream + Поток — JPEG-2000, кодирано flux de codis JPEG-2000 datový tok JPEG-2000 + JPEG-2000-kodestrøm JPEG-2000 Codestream - JPEG-2000 codestream + JPEG-2000 codestream secuencia de código JPEG-2000 + JPEG-2000 kodekorrontea + JPEG-2000-koodivirta + flux de code JPEG-2000 + trasmission codiç JPEG-2000 + códsruth JPEG-2000 JPEG-2000 kôd strujanja JPEG-2000 kódfolyam - codestream JPEG-2000 + Codestream JPEG-2000 Codestream JPEG-2000 JPEG-2000 код ағыны JPEG-2000 코드스트림 Strumień kodu JPEG-2000 - Imagem JPEG-2000 + Imagem JPEG-2000 Кодовый поток JPEG-2000 JPEG-2000 codestream JPEG-2000-kodström + JPEG-2000 codestream потік коду JPEG-2000 - JPEG-2000 码流 - JPEG-2000 代碼串流 + JPEG-2000 码流 + JPEG-2000 代碼串流 - + @@ -25493,12 +26377,19 @@ JPEG-2000 JP2 image + JPEG-2000 JP2-beeld + Изображение — JPEG-2000 JP2 imatge JPEG-2000 JP2 obrázek JPEG-2000 JP2 + JPEG-2000 JP2-billede JPEG-2000 JP2-Bild - JPEG-2000 JP2 image + JPEG-2000 JP2 image imagen JPEG-2000 JP2 + JPEG-2000 JP2 irudia JPEG-2000 JP2 -kuva + image JPEG-2000 JP2 + imagjin JPEG-2000 JP2 + íomhá JPEG-2000 JP2 JPEG-2000 JP2 slika JPEG-2000 JP2 kép Citra JPEG-2000 JP2 @@ -25506,32 +26397,41 @@ JPEG-2000 JP2 суреті JPEG-2000 JP2 그림 Obraz JP2 JPEG-2000 - Imagem JP2 de JPEG-2000 + Imagem JP2 de JPEG-2000 Изоражение JPEG-2000 JP2 Obrázok JPEG-2000 JP2 + Slika JPEG-2000 JP2 JPEG-2000 JP2-bild + JPEG-2000 JP2 görüntüsü зображення JP2 JPEG-2000 - JPEG-2000 JP2 图像 - JPEG-2000 JP2 影像 + JPEG-2000 JP2 图像 + JPEG-2000 JP2 影像 JP2 JPEG-2000 - + JPEG-2000 JPX image + JPEG-2000 JPX-beeld + Изображение — JPEG-2000 JPX imatge JPEG-2000 JPX obrázek JPEG-2000 JPX + JPEG-2000 JPX-billede JPEG-2000 JPX-Bild - JPEG-2000 JPX image + JPEG-2000 JPX image imagen JPEG-2000 JPX + JPEG-2000 JPX irudia JPEG-2000 JPX -kuva + image JPEG-2000 JPX + imagjinJPEG-2000 JPX + íomhá JPEG-2000 JPX JPEG-2000 JPX slika JPEG-2000 JPX kép Citra JPEG-2000 JPX @@ -25539,29 +26439,38 @@ JPEG-2000 JPX суреті JPEG-2000 JPX 그림 Obraz JPX JPEG-2000 - Imagem JPX de JPEG-2000 + Imagem JPX de JPEG-2000 Изображение JPEG-2000 JPX Obrázok JPEG-2000 JPX + Slika JPEG-2000 JPX JPEG-2000 JPX-bild + JPEG-2000 JPX görüntüsü зображення JPX JPEG-2000 - JPEG-2000 JPX 图像 - JPEG-2000 JPX 影像 + JPEG-2000 JPX 图像 + JPEG-2000 JPX 影像 JPX JPEG-2000 eXtended - + JPEG-2000 JPM image + JPEG-2000 JPM-beeld + Изображение — JPEG-2000 JPM imatge JPEG-2000 JPM obrázek JPEG-2000 JPM + JPEG-2000 JPM-billede JPEG-2000 JPM-Bild - JPEG-2000 JPM image + JPEG-2000 JPM image imagen JPEG-2000 JPM + JPEG-2000 JPM irudia JPEG-2000 JPM -kuva + image JPEG-2000 JPM + imagjin JPEG-2000 JPM + íomhá JPEG-2000 JPM JPEG-2000 JPM slika JPEG-2000 JPM kép Citra JPEG-2000 JPM @@ -25569,29 +26478,38 @@ JPEG-2000 JPM суреті JPEG-2000 JPM 그림 Obraz JPM JPEG-2000 - Imagem JPM de JPEG-2000 + Imagem JPM de JPEG-2000 Изображение JPEG-2000 JPM Obrázok JPEG-2000 JPM + Slika JPEG-2000 JPM JPEG-2000 JPM-bild + JPEG-2000 JPM görüntüsü зображення JPM JPEG-2000 - JPEG-2000 JPM 图像 - JPEG-2000 JPM 影像 + JPEG-2000 JPM 图像 + JPEG-2000 JPM 影像 JPM JPEG-2000 Mixed - + JPEG-2000 MJ2 video + JPEG-2000 MJ2-video + Видео — JPEG-2000 MJ2 vídeo JPEG-2000 MJ2 video JPEG-2000 MJ2 + JPEG-2000 MJ2-video JPEG-2000 MJ2-Video - JPEG-2000 MJ2 video + JPEG-2000 MJ2 video vídeo JPEG-2000 MJ2 + JPEG-2000 MJ2 bideoa JPEG-2000 MJ2 -video + vidéo JPEG-2000 MJ2 + video JPEG-2000 MJ2 + íomhá JPEG-2000 MJ2 JPEG-2000 MJ2 video snimka JPEG-2000 MJ2 videó Video JPEG-2000 MJ2 @@ -25599,70 +26517,55 @@ JPEG-2000 MJ2 видеосы JPEG-2000 MJ2 동영상 Plik wideo MJ2 JPEG-2000 - Imagem MJ2 de JPEG-2000 + Imagem MJ2 de JPEG-2000 Видео JPEG-2000 MJ2 Video JPEG-2000 MJ2 + Video JPEG-2000 MJ2 JPEG-2000 MJ2-bild + JPEG-2000 MJ2 videosu зображення MJ2 JPEG-2000 - JPEG-2000 MJ2 视频 - JPEG-2000 MJ2 視訊 + JPEG-2000 MJ2 视频 + JPEG-2000 MJ2 視訊 MJ2 Motion JPEG-2000 - + - OpenRaster archiving image - صورة أرشيف OpenRaster + OpenRaster image Изображение — OpenRaster - imatge d'arxivat OpenRaster - archivační obraz OpenRaster - OpenRaster-arkivaftryk - OpenRaster-Archivierungsbild - Εικόνα αρχειοθέτησης OpenRaster - OpenRaster archiving image - imagen de archivado de OpenRaster - OpenRaster artxiboaren irudia - OpenRaster-arkistokuva - OpenRaster goymslumynd - image d'archive OpenRaster - íomhá chartlannaithe OpenRaster - imaxe arquivada de OpenRaster - תמונת ארכיון של OpenRaster - OpenRaster slika arhive - OpenRaster archiválási kép - Imagine de archivo OpenRaster - Gambar pengarsipan OpenRaster - Immagine archiviazione OpenRaster - OpenRaster アーカイブイメージ - OpenRaster-ის საარქივო გამოსახულება - OpenRaster архивтеу суреті - OpenRaster 압축 이미지 - OpenRaster archyvavimo paveikslėlis - OpenRaster arhivēšanas attēls - OpenRaster archiverings-image - imatge d'archiu OpenRaster - Archiwalny obraz OpenRaster - imagem arquivo OpenRaster - Imagem de arquivamento OpenRaster - Arhivă imagine OpenRaster - Архивное изображение OpenRaster - Archivačný obrázok OpenRaster - Odtis arhiva OpenRaster - слика Опен Растер архивирања - OpenRaster-arkivbild - OpenRaster arşivleme görüntüsü - архівоване зображення OpenRaster - OpenRaster 归档图像 - OpenRaster 封存影像 + imatge OpenRaster + OpenRaster-billede + OpenRaster-Bild + OpenRaster image + imagen OpenRaster + OpenRaster irudia + OpenRaster-kuva + image OpenRaster + OpenRaster slika + OpenRaster kép + Citra OpenRaster + Immagine OpenRaster + OpenRaster суреті + OpenRaster 그림 + Obraz OpenRaster + Imagem OpenRaster + Изображение OpenRaster + Obrázok OpenRaster + Slika OpenRaster + OpenRaster-bild + OpenRaster görüntüsü + зображення OpenRaster + OpenRaster 图像 + OpenRaster 影像 - - - + + + @@ -25671,19 +26574,20 @@ DirectDraw surface مساحة DirectDraw - Pavierchnia DirectDraw + Pavierchnia DirectDraw Изображение — повърхност на DirectDraw superfície DirectDraw povrch DirectDraw DirectDraw-overflade DirectDraw-Oberfläche Επιφάνεια DirectDraw - DirectDraw surface + DirectDraw surface superficie de DirectDraw DirectDraw gainazala DirectDraw-piirtoalue DirectDraw yvirflata surface DirectDraw + superficie DirectDraw dromchla DirectDraw superficie de DirectDraw משטח של DirectDraw @@ -25704,7 +26608,7 @@ surfàcia DirectDraw Powierzchnia DirectDraw superfície DirectDraw - Superfície do DirectDraw + Superfície do DirectDraw Suprafață DirectDraw Плоскость DirectDraw Plocha DirectDraw @@ -25715,8 +26619,8 @@ DirectDraw yüzeyi поверхня DirectDraw Mặt DirectDraw - DirectDraw 表面 - DirectDraw 表面 + DirectDraw 表面 + DirectDraw 表面 @@ -25724,20 +26628,22 @@ X11 cursor + X11-wyser مؤشر X11 - Kursor X11 + Kursor X11 Курсор — X11 - cursor X11 + cursor de X11 kurzor X11 X11-markør X11-Zeiger Δρομέας X11 - X11 cursor + X11 cursor cursor de X11 X11 kurtsorea X11-osoitin X11 vísi curseur X11 + cursôr X11 cúrsóir X11 Cursor X11 סמן של X11 @@ -25757,7 +26663,7 @@ cursor X11 Kursor X11 cursor X11 - Cursor do X11 + Cursor do X11 Cursor X11 Курсор X11 Kurzor X11 @@ -25768,29 +26674,31 @@ X11 imleci курсор X11 Con chạy X11 - X11 指针 - X11 滑鼠游標 + X11 指针 + X11 滑鼠游標 - + EXR image + EXR-beeld صورة EXR - Vyjava EXR + Vyjava EXR Изображение — EXR imatge EXR obrázek EXR EXR-billede EXR-Bild Εικόνα EXR - EXR image + EXR image EXR-bildo imagen EXR EXR irudia EXR-kuva EXR mynd image EXR + imagjin EXR íomhá EXR imaxe EXR תמונת EXR @@ -25811,7 +26719,7 @@ imatge EXR Obraz EXR imagem EXR - Imagem EXR + Imagem EXR Imagine EXR Изображение EXR Obrázok EXR @@ -25822,30 +26730,32 @@ EXR görüntüsü зображення EXR Ảnh EXR - EXR 图像 - EXR 影像 + EXR 图像 + EXR 影像 - + Macintosh Quickdraw/PICT drawing + Macintosh Quickdraw/PICT-tekening رسمة ماكنتوش Quickdraw/PICT - Rysunak Macintosh Quickdraw/PICT + Rysunak Macintosh Quickdraw/PICT Чертеж — Macintosh Quickdraw/PICT dibuix Quickdraw/PICT de Macintosh kresba Macintosh Quickdraw/PICT Macintosh Quickdraw/PICT-tegning Macintosh-Quickdraw/PICT-Zeichnung Σχέδιο Macintosh Quickdraw/PICT - Macintosh Quickdraw/PICT drawing + Macintosh Quickdraw/PICT drawing Quickdraw/PICT-grafikaĵo de Macintosh dibujo de Macintosh Quickdraw/PICT Macintosh Quickdraw/PICT marrazkia Macintosh Quickdraw/PICT -piirros Macintosh Quickdraw/PICT tekning dessin Macintosh Quickdraw/PICT + dissen Macintosh Quickdraw/PICT líníocht Macintosh Quickdraw/PICT debuxo de Macintosh Quickdraw/PICT ציור של Macintosh Quickdraw/PICT @@ -25866,7 +26776,7 @@ dessenh Macintosh Quickdraw/PICT Rysunek QuickDraw/PICT Macintosh desenho Quickdraw/PICT de Macintosh - Desenho do Macintosh Quickdraw/PICT + Desenho do Macintosh Quickdraw/PICT Desen Macintosh Quickdraw/PICT Рисунок Macintosh Quickdraw/PICT Kresba Macintosh QuickDraw/PICT @@ -25877,22 +26787,22 @@ Macintosh Quickdraw/PICT çizimi малюнок Macintosh Quickdraw/PICT Bản vẽ Quickdraw/PICT của Macintosh - Macintosh Quickdraw/PICT 绘图 - Macintosh Quickdraw/PICT 繪圖 + Macintosh Quickdraw/PICT 绘图 + Macintosh Quickdraw/PICT 繪圖 - - - - + + + + - - - - + + + + @@ -25904,20 +26814,22 @@ UFRaw ID image + UFRaw ID-beeld صورة UFRaw ID - Vyjava UFRaw ID + Vyjava UFRaw ID Изображение — UFRaw ID imatge ID UFRaw obrázek ID UFRaw UFRaw ID-billede UFRaw-Bildbeschreibungsdatei Εικόνα UFRaw - UFRaw ID image + UFRaw ID image imagen de identificación UFRaw UFRaw ID irudia UFRaw ID -kuva UFRaw ID mynd image ID UFRaw + imagjin UFRaw ID íomhá aitheantais UFRaw imaxe de identificación UFRaw תמונה של UFRaw ID @@ -25937,7 +26849,7 @@ imatge ID UFRaw Obraz UFRaw ID imagem UFRaw ID - Imagem ID do UFRaw + Imagem ID do UFRaw ID imagine UFRaw Изображение UFRaw ID Obrázok ID UFRaw @@ -25948,8 +26860,8 @@ UFRaw ID görüntüsü зображення UFRaw ID Ảnh ID UFRaw - UFRaw ID 图像 - UFRaw ID 影像 + UFRaw ID 图像 + UFRaw ID 影像 UFRaw Unidentified Flying Raw @@ -25958,20 +26870,22 @@ digital raw image + digitale rou beeld صورة رقمية خامة - suvoraja ličbavaja vyjava + suvoraja ličbavaja vyjava Изображение — digital raw imatge digital en cru digitální surový obrázek - digitalt råbillede + digitalt raw-billede Digitales Rohbild Ανεπεξέργαστη ψηφιακή εικόνα - digital raw image + digital raw image imagen digital en bruto irudi gordin digitala digitaalinen raakakuva talgild rámynd image brute numérique + imagjin grese digjitâl amhíomhá dhigiteach imaxe en bruto dixital תמונה דיגטלית גולמית @@ -25991,7 +26905,7 @@ imatge brut numeric Surowy obraz cyfrowy imagem digital em bruto - Imagem digital bruta + Imagem digital bruta imagine digitală brută Необработанное цифровое изображение Digitálny surový obrázok @@ -26002,25 +26916,27 @@ sayısal ham görüntü зображення цифрового негатива ảnh thô số - 数字化原始图像 - 數位原生影像 + 数字化原始图像 + 數位原始影像 Adobe DNG negative + Adobe DNG-negatief Adobe DNG negative - Adobe DNG Negative + Adobe DNG Negative Изображение — Adobe DNG negative negatiu DNG d'Adobe negativ Adobe (DNG) Adobe DNG-negativ Adobe Digitales Negativ Αρνητικό Adobe DNG - Adobe DNG negative + Adobe DNG negative negativo DNG de Adobe Adobe DNG negatiboa Adobe-DNG-negatiivi Adobe DNG negativ négatif DNG Adobe + negatîf Adobe DNG claonchló DNG Adobe negativo DNG de Adobe תשליל Adobe DNG @@ -26041,7 +26957,7 @@ négatif DNG Adobe Negatyw DNG Adobe negativo Adobe DNG - Negativo DNG da Adobe + Negativo DNG da Adobe Negativ Adobe DNG Негатив Adobe DNG Adobe Digital Negative (DNG) @@ -26052,32 +26968,34 @@ Adobe DNG negatifi цифровий негатив DNG Adobe Âm bản Adobe DNG - Adobe DNG 负片 - Adobe DNG 負片 + Adobe DNG 负片 + Adobe DNG 負片 DNG Digital Negative - - + + Canon CRW raw image + Canon CRW rou beeld صورة Canon CRW خامة - Suvoraja vyjava Canon CRW + Suvoraja vyjava Canon CRW Изображение — Canon CRW raw imatge en cru de Canon CRW surový obrázek Canon CRW - Canon CRW-råbillede + Canon CRW raw-billede Canon-CRW-Rohbild Ανεπεξέργαστη εικόνα Canon CRW - Canon CRW raw image + Canon CRW raw image imagen en bruto CRW de Canon Canon CRW irudi gordina Canon-CRW-raakakuva Canon CRW rámynd image brute CRW Canon + imagjin grese Canon CRW amhíomhá Canon CRW imaxe en bruto de Canon CRW תמונה גולמית של Canon CRW @@ -26098,7 +27016,7 @@ imatge brut CRW Canon Surowy obraz CRW Canon imagem em bruto Canon CRW - Imagem bruta CRW da Canon + Imagem bruta CRW da Canon Imagine brută Canon CRW Необработанное изображение Canon CRW Surový obrázok Canon CRW @@ -26109,8 +27027,8 @@ Canon CRW ham görüntüsü цифровий негатив CRW Canon Ảnh thô Canon CRW - 佳能 CRW 原始图像 - Canon CRW 原生影像 + 佳能 CRW 原始图像 + Canon CRW 原始影像 CRW Canon RaW @@ -26119,23 +27037,25 @@ - + Canon CR2 raw image + Canon CR2 rou beeld صورة Canon CR2 خامة - Suvoraja vyjava Canon CR2 + Suvoraja vyjava Canon CR2 Изображение — Canon CR2 raw imatge en cru de Canon CR2 surový obrázek Canon CR2 - Canon CR2-råbillede + Canon CR2 raw-billede Canon-CR2-Rohbild Ανεπεξέργαστη εικόνα Canon CR2 - Canon CR2 raw image + Canon CR2 raw image imagen en bruto CR2 de Canon Canon CR2 irudi gordina Canon-CR2-raakakuva Canon CR2 rámynd image brute CR2 Canon + imagjin grese Canon CR2 amhíomhá Canon CR2 imaxe en bruto de Canon CR2 תמונה גולמית של Canon CR2 @@ -26156,7 +27076,7 @@ imatge brut CR2 Canon Surowy obraz CR2 Canon imagem em bruto Canon CR2 - Imagem bruta CR2 da Canon + Imagem bruta CR2 da Canon Imagine brută Canon CR2 Необработанное изображение Canon CR2 Surový obrázok Canon CR2 @@ -26167,8 +27087,8 @@ Canon CR2 ham görüntüsü цифровий негатив CR2 Canon Ảnh thô Canon CR2 - 佳能 CR2 原始图像 - Canon CR2 原生影像 + 佳能 CR2 原始图像 + Canon CR2 原始影像 CR2 Canon Raw 2 @@ -26177,20 +27097,22 @@ Fuji RAF raw image + Fuji RAF rou beeld صورة Fuji RAF خامة - Suvoraja vyjava Fuji RAF + Suvoraja vyjava Fuji RAF Изображение — Fuji RAF raw imatge en cru de Fuji RAF surový obrázek Fuji RAF - Fuji RAF-råbillede + Fuji RAF raw-billede Fuji-RAF-Rohbild Ανεπεξέργαστη εικόνα Fuji RAF - Fuji RAF raw image + Fuji RAF raw image imagen en bruto RAF de Fuji Fuji RAF irudi gordina Fuji-RAF-raakakuva Fuji RAF raw mynd image brute RAF Fuji + imagjin grese Fuji RAF amhíomhá Fuji RAF imaxe en bruto de Fuji RAF תמונה גולמית של Fuji RAF @@ -26211,7 +27133,7 @@ imatge brut RAF Fuji Surowy obraz RAF Fuji imagem em bruto Fuji RAF - Imagem bruta RAF da Fuji + Imagem bruta RAF da Fuji Imagine brută Fuji RAF Необработанное изображение Fuji RAF Surový obrázok Fuji RAF @@ -26222,8 +27144,8 @@ Fuji RAF ham görüntüsü Цифровий негатив RAF Fuji Ảnh thô Fuji RAF - 富士 RAF 原始图像 - Fuji RAF 原生影像 + 富士 RAF 原始图像 + Fuji RAF 原始影像 RAF RAw Format @@ -26234,20 +27156,22 @@ Kodak DCR raw image + Kodak DCR rou beeld صورة Kodak DCR خامة - Suvoraja vyjava Kodak DCR + Suvoraja vyjava Kodak DCR Изображение — Kodak DCR raw imatge en cru de Kodak DCR surový obrázek Kodak DCR - Kodak DCR-råbillede + Kodak DCR raw-billede Kodak-DCR-Rohbild Ανεπεξέργαστη εικόνα Kodak DCR - Kodak DCR raw image + Kodak DCR raw image imagen en bruto DCR de Kodak Kodak DCR irudi gordina Kodak-DCR-raakakuva Kodak DCR rámynd image brute DCR Kodak + imagjin grese Kodak DCR amhíomhá Kodak DCR imaxe en bruto de Kodad DCR תמונה גולמית של Kodak DCR @@ -26267,7 +27191,7 @@ imatge brut DCR Kodak Surowy obraz DCR Kodak imagem em bruto Kodak DCR - Imagem bruta DCR da Kodak + Imagem bruta DCR da Kodak Imagine brută Kodak DCR Необработанное изображение Kodak DCR Surový obrázok Kodak DCR @@ -26278,8 +27202,8 @@ Kodak DCR ham görüntüsü цифровий негатив DCR Kodak Ảnh thô Kodak DCR - 柯达 DCR 原始图像 - Kodak DCR 原生影像 + 柯达 DCR 原始图像 + Kodak DCR 原始影像 DCR Digital Camera Raw @@ -26288,20 +27212,22 @@ Kodak K25 raw image + Kodak K25 rou beeld صورة Kodak K25 خامة - Suvoraja vyjava Kodak K25 + Suvoraja vyjava Kodak K25 Изображение — Kodak K25 raw imatge en cru de Kodak K25 surový obrázek Kodak K25 - Kodak K25-råbillede + Kodak K25 raw-billede Kodak-K25-Rohbild Ανεπεξέργαστη εικόνα Kodak K25 - Kodak K25 raw image + Kodak K25 raw image imagen en bruto K25 de Kodak Kodak K25 raw image Kodak-K25-raakakuva Kodak K25 rámynd image brute K25 Kodak + imagjin grese Kodak K25 amhíomhá Kodak K25 imaxe en bruto de Kodad K25 תמונה גולמית של Kodak K25 @@ -26321,7 +27247,7 @@ imatge brut K25 Kodak Surowy obraz K25 Kodak imagem em bruto Kodak K25 - Imagem bruta K25 da Kodak + Imagem bruta K25 da Kodak Imagine brută Kodak K25 Необработанное изображение Kodak K25 Surový obrázok Kodak K25 @@ -26332,8 +27258,8 @@ Kodak K25 ham görüntüsü цифровий негатив K25 Kodak Ảnh thô Kodak K25 - 柯达 K25 原始图像 - Kodak K25 原生影像 + 柯达 K25 原始图像 + Kodak K25 原始影像 K25 Kodak DC25 @@ -26342,20 +27268,22 @@ Kodak KDC raw image + Kodak KDC rou beeld صورة Kodak KDC خامة - Suvoraja vyjava Kodak KDC + Suvoraja vyjava Kodak KDC Изображение — Kodak KDC raw imatge en cru de Kodak KDC surový obrázek Kodak KDC - Kodak KDC-råbillede + Kodak KDC raw-billede Kodak-KDC-Rohbild Ανεπεξέργαστη εικόνα Kodak KDC - Kodak KDC raw image + Kodak KDC raw image imagen en bruto KDC de Kodak Kodak KDC irudi gordina Kodak-KDC-raakakuva Kodak KDC rámynd image brute KDC Kodak + imagjin grese Kodak KDC amhíomhá Kodak KDC imaxe en bruto de Kodad KDC תמונה גולמית של Kodak KDC @@ -26375,7 +27303,7 @@ imatge brut KDC Kodak Surowy obraz KDC Kodak imagem em bruto Kodak KDC - Imagem bruta KDC da Kodak + Imagem bruta KDC da Kodak Imagine brută Kodak KDC Необработанное изображение Kodak KDC Surový obrázok Kodak KDC @@ -26386,8 +27314,8 @@ Kodak KDC ham görüntüsü цифровий негатив KDC Kodak Ảnh thô Kodak KDC - 柯达 KDC 原始图像 - Kodak KDC 原生影像 + 柯达 KDC 原始图像 + Kodak KDC 原始影像 KDC Kodak Digital Camera @@ -26399,20 +27327,22 @@ Minolta MRW raw image + Minolta MRW rou beeld صورة Minolta MRW خامة - Suvoraja vyjava Minolta MRW + Suvoraja vyjava Minolta MRW Изображение — Minolta MRW raw imatge en cru de Minolta MRW surový obrázek Minolta MRW - Minolta MRW-råbillede + Minolta MRW raw-billede Minolta-MRW-Rohbild Ανεπεξέργαστη εικόνα Minolta MRW - Minolta MRW raw image + Minolta MRW raw image imagen en bruto MRW de Minolta Minolta MRW irudi gordina Minolta-MRW-raakakuva Minolta MRW rámynd image brute MRW Minolta + imagjin grese Minolta MRW amhíomhá Minolta MRW imaxe RAW de Minolta MRW תמונה גולמית של Minolta MRW @@ -26432,7 +27362,7 @@ imatge brut MRW Minolta Surowy obraz MRW Minolta imagem em bruto Minolta MRW - Imagem bruta MRW do Minolta + Imagem bruta MRW do Minolta Imagine brută Minolta MRW Необработанное изображение Minolta MRW Surový obrázok Minolta MRW @@ -26443,8 +27373,8 @@ Minolta MRW ham görüntüsü цифровий негатив MRW Minolta Ảnh thô Minolta MRW - 美能达 MRW 原始图像 - Minolta MRW 原生影像 + 美能达 MRW 原始图像 + Minolta MRW 原始影像 MRW Minolta RaW @@ -26455,20 +27385,22 @@ Nikon NEF raw image + Nikon NEF rou beeld صورة Nikon NEF خامة - Suvoraja vyjava Nikon NEF + Suvoraja vyjava Nikon NEF Изображение — Nikon NEF raw imatge en cru de Nikon NEF surový obrázek Nikon NEF - Nikon NEF-råbillede + Nikon NEF raw-billede Nikon-NEF-Rohbild Ανεπεξέργαστη εικόνα Nikon NEF - Nikon NEF raw image + Nikon NEF raw image imagen en bruto NEF de Nikon Nikon NEF irudi gordina Nikon-NEF-raakakuva Nikon NEF rámynd image brute NEF Nikon + imagjin grese Nikon NEF amhíomhá Nikon NEF imaxe RAW NEF Nikon תמונה גולמית של Nikon NEF @@ -26488,7 +27420,7 @@ imatge brut NEF Nikon Surowy obraz NEF Nikon imagem em bruto Nikon NEF - Imagem bruta NEF da Nikon + Imagem bruta NEF da Nikon Imagine brută Nikon NEF Необработанное изображение Nikon NEF Surový obrázok Nikon NEF @@ -26499,8 +27431,8 @@ Nikon NEF ham görüntüsü цифровий негатив NEF Nikon Ảnh thô Nikon NEF - 尼康 NEF 原始图像 - Nikon NEF 原生影像 + 尼康 NEF 原始图像 + Nikon NEF 原始影像 NEF Nikon Electronic Format @@ -26509,20 +27441,22 @@ Olympus ORF raw image + Olympus ORF rou beeld صورة Olympus ORF خامة - Suvoraja vyjava Olympus ORF + Suvoraja vyjava Olympus ORF Изображение — Olympus ORF raw imatge en cru d'Olympus ORF surový obrázek Olympus ORF - Olympus ORF-råbillede + Olympus ORF raw-billede Olympus-ORF-Rohbild Ανεπεξέργαστη εικόνα Olympus ORF - Olympus ORF raw image + Olympus ORF raw image imagen en bruto ORF de Olympus Olympus ORF irudi gordina Olympus-ORF-raakakuva Olympus ORF rámynd image brute ORF Olympus + imagjin grese Olympus ORF amhíomhá Olympus ORF imaxe en bruto de Olympus ORF תמונה גולמית של Olympus ORF @@ -26543,7 +27477,7 @@ imatge brut ORF Olympus Surowy obraz Olympus ORF imagem em bruto Olympus ORF - Imagem bruta ORF da Olympus + Imagem bruta ORF da Olympus Imagine brută Olympus ORF Необработанное изображение Olympus ORF Surový obrázok Olympus ORF @@ -26554,37 +27488,39 @@ Olympus ORF ham görüntüsü цифровий негатив ORF Olympus Ảnh thô Olympus ORF - 奥林巴斯 ORF 原始图像 - Olympus ORF 原生影像 + 奥林巴斯 ORF 原始图像 + Olympus ORF 原始影像 ORF Olympus Raw Format - - - - - + + + + + Panasonic raw image + Panasonic rou beeld صورة Panasonic خامة - Suvoraja vyjava Panasonic + Suvoraja vyjava Panasonic Изображение — Panasonic raw imatge en cru de Panasonic surový obrázek Panasonic - Panasonicråbillede (raw) + Panasonic raw-billede Panasonic-Rohbild Ανεπεξέργαστη εικόνα Panasonic - Panasonic raw image + Panasonic raw image imagen en bruto de Panasonic Panasonic irudi gordina Panasonic-raakakuva Panasonic rámynd image brute Panasonic + imagjin grese Panasonic amhíomhá Panasonic imaxe en bruto de Panasonic תמונה גולמית של Panasonic @@ -26604,7 +27540,7 @@ imatge brut Panasonic Obraz raw Panasonic imagem em bruto Panasonic - Imagem bruta da Panasonic + Imagem bruta da Panasonic Imagine brută Panasonic Необработанное изображение Panasonic Surový obrázok Panasonic @@ -26615,58 +27551,69 @@ Panasonic ham görüntüsü цифровий негатив Panasonic Ảnh thô Panasonic - 松下原始图像 - Panasonic 原生影像 + 松下原始图像 + Panasonic 原始影像 - + - Panasonic raw2 image - Изображение — Panasonic raw2 - imatge «RAW2» de Panasonic - surový obrázek Panasonic raw2 - Panasonic-rå2-billede (raw) - Panasonic raw2-Bild - Ανεπεξέργαστη εικόνα Panasonic (raw2) - Panasonic raw2 image - imagen en bruto raw2 de Panasonic - Panasonic raw2 irudia - Panasonic raw2 -kuva - image raw2 Panasonic - íomhá raw2 Panasonic - imaxe en bruto raw2 de Panasonic - תמונת raw2 של Panasonic - Panasonic raw2 image - Panasonic raw2 kép - Imagine raw2 Panasonic - Image Panasonic raw2 - Immagine raw2 Panasonic - Panasonic raw2 画像 - Panasonic raw2 суреті - 파나소닉 RAW2 사진 - Panasonic raw2 jēlattēls - Panasonic raw2 image - imatge raw2 Panasonic - Obraz raw2 Panasonic + Panasonic raw image + Panasonic rou beeld + صورة Panasonic خامة + Suvoraja vyjava Panasonic + Изображение — Panasonic raw + imatge en cru de Panasonic + surový obrázek Panasonic + Panasonic raw-billede + Panasonic-Rohbild + Ανεπεξέργαστη εικόνα Panasonic + Panasonic raw image + imagen en bruto de Panasonic + Panasonic irudi gordina + Panasonic-raakakuva + Panasonic rámynd + image brute Panasonic + imagjin grese Panasonic + amhíomhá Panasonic + imaxe en bruto de Panasonic + תמונה גולמית של Panasonic + Panasonic osnovna slika + Panasonic nyers kép + Imagine brute Panasonic + Citra mentah Panasonic + Immagine raw Panasonic + Panasonic raw 画像 + Panasonic өңделмеген суреті + 파나소닉 RAW 사진 + Panasonic neapdorotas paveikslėlis + Panasonic jēlattēls + Panasonic raw-bilde + onbewerkt Panasonic-beeld + Panasonic råbilete + imatge brut Panasonic + Obraz raw Panasonic imagem em bruto Panasonic - Imagem raw2 da Panasonic - Необработанное изображение Panasonic raw2 - Surový obrázok Panasonic raw2 - Slikovna datoteka Panasonic raw2 - Панасоник сирова2 слика - Panasonic raw2-bild - Panasonic raw2 görüntüsü - зображення формату raw2 Panasonic - 松下 raw2 图像 - Panasonic raw2 影像 + Imagem bruta da Panasonic + Imagine brută Panasonic + Необработанное изображение Panasonic + Surový obrázok Panasonic + Surova slikovna datoteka Panasonic + Figurë raw Panasonic + Панасоник сирова слика + Panasonic-råbild + Panasonic ham görüntüsü + цифровий негатив Panasonic + Ảnh thô Panasonic + 松下原始图像 + Panasonic 原始影像 - + @@ -26674,20 +27621,22 @@ Pentax PEF raw image + Pentax PEF rou beeld صورة Pentax PEF خامة - Suvoraja vyjava Pentax PEF + Suvoraja vyjava Pentax PEF Изображение — Pentax PEF raw imatge en cru de Pentax PEF surový obrázek Pentax PEF - Pentax PEF-råbillede + Pentax PEF raw-billede Pentax-PEF-Rohbild Ανεπεξέργαστη εικόνα Pentax PEF - Pentax PEF raw image + Pentax PEF raw image imagen en bruto PEF de Pentax Pentax PEF irudi gordina Pentax-PEF-raakakuva Pentax PEF rámynd image brute PEF Pentax + imagjin grese Pentax PEF amhíomhá Pentax PEF imaxe en bruto PEF de Pentax תמונה גולמית של Pentax PEF @@ -26707,7 +27656,7 @@ imatge brut PEF Pentax Surowy obraz Pentax PEF imagem em bruto Pentax PEF - Imagem bruta PEF da Pentax + Imagem bruta PEF da Pentax Imagine brută Pentax PEF Необработанное изображение Pentax PEF Surový obrázok Pentax PEF @@ -26718,8 +27667,8 @@ Pentax PEF ham görüntüsü цифровий негатив PEF Pentax Ảnh thô Pentax PEF - 宾得 PEF 原始图像 - Pentax PEF 原生影像 + 宾得 PEF 原始图像 + Pentax PEF 原始影像 PEF Pentax Electronic Format @@ -26728,20 +27677,22 @@ Sigma X3F raw image + Sigma X3F rou beeld صورة Sigma X3F خامة - Suvoraja vyjava Sigma X3F + Suvoraja vyjava Sigma X3F Изображение — Sigma X3F raw imatge en cru de Sigma X3F surový obrázek Sigma X3F - Sigma X3F-råbillede + Sigma X3F raw-billede Sigma-X3F-Rohbild Ανεπεξέργαστη εικόνα Sigma X3F - Sigma X3F raw image + Sigma X3F raw image imagen en bruto X3F de Sigma Sigma X3F irudi gordina Sigma-X3F-raakakuva Sigma X3F rámynd image brute X3F Sigma + imagjin grese Sigma X3F amhíomhá Sigma X3F imaxe en bruto X3F de Sigma תמונה גולמית של Sigma X3F @@ -26761,7 +27712,7 @@ imatge brut X3F Sigma Surowy obraz X3F Sigma imagem em bruto Sigma X3F - Imagem bruta X3F da Sigma + Imagem bruta X3F da Sigma Imagine brută Sigma X3F Необработанное изображение Sigma X3F Surový obrázok Sigma X3F @@ -26772,15 +27723,15 @@ Sigma X3F ham görüntüsü цифровий негатив X3F Sigma Ảnh thô Sigma X3F - 适马 X3F 原始图像 - Sigma X3F 原生影像 + 适马 X3F 原始图像 + Sigma X3F 原始影像 X3F X3 Foveon - + - + @@ -26788,20 +27739,22 @@ Sony SRF raw image + Sony SRF rou beeld صورة Sony SRF خامة - Suvoraja vyjava Sony SRF + Suvoraja vyjava Sony SRF Изображение — Sony SRF raw imatge en cru de Sony SRF surový obrázek Sony SRF - Sony SRF-råbillede + Sony SRF raw-billede Sony-SRF-Rohbild Ανεπεξέργαστη εικόνα Sony SRF - Sony SRF raw image + Sony SRF raw image imagen en bruto SRF de Sony Sony SRF irudi gordina Sony-SRF-raakakuva Sony SRF rámynd image brute SRF Sony + imagjin grese Sony SRF amhíomhá Sony SRF imaxe en bruto SRF de sony תמונה גולמית של Sony SRF @@ -26821,7 +27774,7 @@ imatge brut SRF Sony Surowy obraz SRF Sony imagem em bruto Sony SRF - Imagem bruta SRF da Sony + Imagem bruta SRF da Sony Imagine brută Sony SRF Необработанное изображение Sony SRF Surový obrázok Sony SRF @@ -26832,8 +27785,8 @@ Sony SRF ham görüntüsü цифровий негатив SRF Sony Ảnh thô Sony SRF - 索尼 SRF 原始映像 - Sony SRF 原生影像 + 索尼 SRF 原始映像 + Sony SRF 原始影像 SRF Sony Raw Format @@ -26842,20 +27795,22 @@ Sony SR2 raw image + Sony SR2 rou beeld صورة Sony SR2 خامة - Suvoraja vyjava Sony SR2 + Suvoraja vyjava Sony SR2 Изображение — Sony SR2 raw imatge en cru de Sony SR2 surový obrázek Sony SR2 - Sony SR2-råbillede + Sony SR2 raw-billede Sony-SR2-Rohbild Ανεπεξέργαστη εικόνα Sony SR2 - Sony SR2 raw image + Sony SR2 raw image imagen en bruto SR2 de Sony Sony SR2 irudi gordina Sony-SR2-raakakuva Sony SR2 rámynd image brute SR2 Sony + imagjin grese Sony SR2 amhíomhá Sony SR2 imaxe en bruto SR2 de sony תמונה גולמית של Sony SR2 @@ -26875,7 +27830,7 @@ imatge brut SR2 Sony Surowy obraz SR2 Sony imagem em bruto Sony SR2 - Imagem bruta SR2 da Sony + Imagem bruta SR2 da Sony Imagine brută Sony SR2 Необработанное изображение Sony SR2 Surový obrázok Sony SR2 @@ -26886,8 +27841,8 @@ Sony SR2 ham görüntüsü цифровий негатив SR2 Sony Ảnh thô Sony SR2 - 索尼 SR2 原始映像 - Sony SR2 原生影像 + 索尼 SR2 原始映像 + Sony SR2 原始影像 SR2 Sony Raw format 2 @@ -26896,20 +27851,22 @@ Sony ARW raw image + Sony ARW rou beeld صورة Sony ARW خامة - Suvoraja vyjava Sony ARW + Suvoraja vyjava Sony ARW Изображение — Sony ARW raw imatge en cru de Sony ARW surový obrázek Sony ARW - Sony ARW-råbillede + Sony ARW raw-billede Sony-ARW-Rohbild Ανεπεξέργαστη εικόνα Sony ARW - Sony ARW raw image + Sony ARW raw image imagen en bruto ARW de Sony Sony ARW irudi gordina Sony-ARW-raakakuva Sony ARW rámynd image brute ARW Sony + imagjin grese Sony ARW amhíomhá Sony ARW imaxe en bruto ARW de sony תמונה גולמית של Sony ARW @@ -26929,7 +27886,7 @@ imatge brut ARW Sony Surowy obraz ARW Sony imagem em bruto Sony ARW - Imagem bruta ARW da Sony + Imagem bruta ARW da Sony Imagine brută Sony ARW Необработанное изображение Sony ARW Surový obrázok Sony ARW @@ -26940,8 +27897,8 @@ Sony ARW ham görüntüsü цифровий негатив ARW Sony Ảnh thô Sony ARW - 索尼 ARW 原始映像 - Sony ARW 原生影像 + 索尼 ARW 原始映像 + Sony ARW 原始影像 ARW Alpha Raw format @@ -26950,9 +27907,10 @@ PNG image + PNG-beeld صورة PNG PNG rəsmi - Vyjava PNG + Vyjava PNG Изображение — PNG imatge PNG obrázek PNG @@ -26960,13 +27918,14 @@ PNG-billede PNG-Bild Εικόνα PNG - PNG image + PNG image PNG-bildo imagen PNG PNG irudia PNG-kuva PNG mynd image PNG + imagjin PNG íomhá PNG imaxe PNG תמונת PNG @@ -26987,7 +27946,7 @@ imatge PNG Obraz PNG imagem PNG - Imagem PNG + Imagem PNG Imagine PNG Изображение PNG Obrázok PNG @@ -26998,79 +27957,62 @@ PNG görüntüsü зображення PNG Ảnh PNG - PNG 图像 - PNG 影像 + PNG 图像 + PNG 影像 - + - Run Length Encoded bitmap image - تشغيل صورة نقطية طولية الترميز - Bitmapnaja vyjava, zakadavanaja ŭ Run Length - Изображение — RLE Bitmap - imatge de mapa de bits «Run Lenght Encoded» - obrázek bitové mapy Run Length Encoded - Run Length Encoded-bitmapbillede + RLE bitmap image + Изображение — RLE bitmap + imatge de mapa de bits RLE + RLE bitmap-billede Lauflängenkodiertes Bitmap-Bild - Εικόνα bitmap κωδικοποιημένου μήκος εκτέλεσης - Run Length Encoded bitmap image - mapa de bits con codificación del tamaño durante la ejecución - 'Run Lenght Encoded' bitmap irudia - RLE-koodattu bittikartta - image matricielle Run Length Encoded - íomhá ghiotánmhapach ionchódaithe fad reatha - mapa de bits con codificación do tamaño durante a execución - מקודד מפת סיביות של Run Length - Run Length Encoded bitmap slika - Run Length Encoded bitkép - Imagine raster in codification Run-Length - Citra peta bit Run Length Encoded - Immagine bitmap RLE (Run Length Encoded) - ランレングス符号化ビットマップ画像 - RLE сығылған растрлік суреті - RLE 인코딩된 비트맵 그림 - Run Length Encoded rastrinis paveikslėlis - Secīgo atkārtojumu kodēts bitkartes attēls - Run Length Encoded bitmap bilde - RLE-gecodeerde bitmap-afbeelding - Run Length Encoded punktgrafikk - imatge matriciala Run Length Encoded + RLE bitmap image + imagen de mapa de bits RLE + RLE bitmap irudia + RLE-bittikarttakuva + image matricielle RLE + RLE bitmap slika + RLE bitkép + Citra bitmap RLE + Immagine bitmap RLE + RLE растрлық суреті + RLE 비트맵 그림 Obraz bitmapy RLE - mapa de bitas Run Length Encoded - Classe de comprimento imagem bitmap codificada - Imagine bitmap codată RLE - Растровое изображение, сжатое RLE - Bitmapový obrázok Run Length Encoded - Zaporedno kodirana bitna slika (RLE) - Figurë bitmap RLE (Run Length Encoded) - битмап слика кодирана дужином скупине - Körlängdskodad bitmappbild - Run Length Encoded bit eşlem görüntüsü + Imagem bitmap RLE + Растровое изображение RLE + Bitna slika RLE + RLE bitmappsbild + RLE bit eşlem görüntüsü растрове зображення RLE - Ảnh mảng mã hóa chiều dài chạy (RLE) - 游程编码位图 - Run Length Encoded 點陣影像 + RLE 位图图像 + RLE 點陣影像 + RLE + Run Length Encoded SVG image + SVG-beeld صورة SVG - Vyjava SVG + Vyjava SVG Изображение — SVG imatge SVG obrázek SVG SVG-billede SVG-Bild Εικόνα SVG - SVG image + SVG image SVG-bildo imagen SVG SVG irudia SVG-kuva SVG mynd image SVG + imagjin SVG íomhá SVG imaxe SVG תמונת SVG @@ -27090,7 +28032,7 @@ imatge SVG Obraz SVG imagem SVG - Imagem SVG + Imagem SVG Imagine SVG Изображение SVG Obrázok SVG @@ -27101,41 +28043,49 @@ SVG görüntüsü зображення SVG Ảnh SVG - SVG 图像 - SVG 影像 + SVG 图像 + SVG 影像 SVG Scalable Vector Graphics - - + + + + + + + + compressed SVG image + saamgepersde SVG-beeld صورة SVG مضغوطة - skampresavanaja vyjava SVG + skampresavanaja vyjava SVG Изображение — SVG, компресирано imatge SVG amb compressió komprimovaný obrázek SVG SVG-komprimeret billede Komprimiertes SVG-Bild Συμπιεσμένη εικόνα SVG - compressed SVG image + compressed SVG image imagen SVG comprimida konprimitutako SVG irudia pakattu SVG-kuva stappað SVG mynd image SVG compressée + imagjin SVG comprimude íomhá SVG comhbhrúite imaxe SVG comprimida תמונת SVG מכווצת Sažeta SVG slika tömörített SVG kép Imagine SVG comprimite - Citra SVG terkompresi + citra SVG terkompresi Immagine SVG compressa 圧縮 SVG 画像 сығылған SVG суреті @@ -27148,7 +28098,7 @@ imatge SVG compressat Skompresowany obraz SVG imagem SVG comprimida - Imagem SVG compactada + Imagem SVG compactada imagine comprimată SVG Сжатое изображение SVG Komprimovaný obrázok SVG @@ -27159,8 +28109,8 @@ sıkıştırılmış SVG görüntüsü стиснене зображення SVG ảnh SVG đã nén - 压缩的 SVG 图像 - 壓縮版 SVG 影像 + 压缩的 SVG 图像 + 壓縮版 SVG 影像 SVG Scalable Vector Graphics @@ -27168,21 +28118,23 @@ TIFF image + TIFF-beeld صورة TIFF - Vyjava TIFF + Vyjava TIFF Изображение — TIFF imatge TIFF obrázek TIFF TIFF-billede TIFF-Bild Εικόνα TIFF - TIFF image + TIFF image TIFF-bildo imagen TIFF TIFF irudia TIFF-kuva TIFF mynd image TIFF + imagjin TIFF íomhá TIFF imaxe TIFF תמונת TIFF @@ -27203,7 +28155,7 @@ imatge TIFF Obraz TIFF imagem TIFF - Imagem TIFF + Imagem TIFF Imagine TIFF Изображение TIFF Obrázok TIFF @@ -27214,28 +28166,32 @@ TIFF görüntüsü зображення TIFF Ảnh TIFF - TIFF 图像 - TIFF 影像 + TIFF 图像 + TIFF 影像 TIFF Tagged Image File Format - - + + Multi-page TIFF image + Multibladsy TIFF-beeld + Изображение — TIFF, много страници imatge TIFF multipàgina vícestránkový obrázek TIFF Flersidet TIFF-billede Mehrseitiges TIFF-Bild Πολυσέλιδη εικόνα TIFF - Multi-page TIFF image + Multi-page TIFF image imagen TIFF de varias páginas + Multi-page TIFF irudia Monisivuinen TIFF-kuva Image TIFF multi-page + imagjin a plui pagjinis TIFF íomhá il-leathanach TIFF Imaxe TIFF multipáxina תמונת TIFF עם ריבוי עמודים @@ -27249,7 +28205,7 @@ Imatge TIFF multipagina Wielostronnicowy obraz TIFF imagem TIFF multipágina - Imagem TIFF multipágina + Imagem TIFF multipágina Многостраничное изображение TIFF Viacstránkový obrázok TIFF Večstranska slika TIFF @@ -27257,17 +28213,18 @@ Flersidig TIFF-bild Çok sayfalı TIFF görüntüsü багатосторінкове зображення TIFF - 多页 TIFF 图像 - 多頁 TIFF 影像 + 多页 TIFF 图像 + 多頁 TIFF 影像 TIFF Tagged Image File Format AutoCAD image + AutoCAD-beeld صورة AutoCAD AutoCAD rəsmi - Vyjava AutoCAD + Vyjava AutoCAD Изображение — AutoCAD imatge d'AutoCAD výkres AutoCAD @@ -27275,13 +28232,14 @@ AutoCAD-billede AutoCAD-Bild Εικόνα AutoCAD - AutoCAD image + AutoCAD image AutoCAD-bildo imagen de AutoCAD AutoCAD-eko irudia AutoCAD-kuva AutoCAD mynd image AutoCAD + imagjin AutoCAD íomhá AutoCAD imaxe de AutoCAD תמונה של AutoCAD @@ -27303,7 +28261,7 @@ imatge AutoCAD Obraz AutoCAD imagem AutoCAD - Imagem do AutoCAD + Imagem do AutoCAD Imagine AutoCAD Изображение AutoCAD Obrázok AutoCAD @@ -27314,27 +28272,29 @@ AutoCAD görüntüsü зображення AutoCAD Ảnh AutoCAD - AutoCAD 图像 - AutoCAD 影像 + AutoCAD 图像 + AutoCAD 影像 DXF vector image + DXF-vektorbeeld صورة DXF نقطية - Vektarnaja vyjava DXF + Vektarnaja vyjava DXF Изображение — DXF imatge vectorial DXF vektorový obrázek DXF DXF-vektorbillede DXF-Vektorbild Διανυσματική εικόνα DXF - DXF vector image + DXF vector image vektora DXF-bildo imagen vectorial DXF DXF bektore-grafikoa DXF-vektorikuva DXF vektormynd image vectorielle DXF + imagjin vetoriâl DXF íomhá veicteoireach DXF imaxe de vector DXF תמונת DXF וקטורית @@ -27356,7 +28316,7 @@ imatge vectorial DXF Obraz wektorowy DXF imagem de vectores DXF - Imagem vetorial DXF + Imagem vetorial DXF Imagine vectorială DXF Векторное изображение DXF Vektorový obrázok DXF @@ -27367,78 +28327,63 @@ DXF vektör görüntüsü векторне зображення DXF Ảnh véc-tơ DXF - DXF 矢量图像 - DXF 向量圖 + DXF 矢量图像 + DXF 向量圖 - - + + - Microsoft Document Imaging format - صيغة مستند تصوير مايكروسوفت - Formatu d'imáxenes de Microsoft Document - Изображение — Microsoft Document Imaging - format Microsoft Document Imaging - formát Microsoft Document Imaging - Microsofts dokumentbilledformat - Microsoft-Document-Imaging-Bildformat - Μορφή Microsoft Document Imaging - Microsoft Document Imaging format - formato de imagen para documentos de Microsoft - Microsoft Document Imaging formatua - Microsoft Document Imaging -muoto - Microsoft Document Imaging snið - format Document Imaging Microsoft - formáid Microsoft Document Imaging - formato de Microsoft Document Imaging - תבנית של Microsoft Document Imaging - Microsoft Document Imaging format - Microsoft Document Imaging formátum - File in formato Microsoft Document Imaging - Format Microsoft Document Imaging - Formato MDI (Microsoft Document Imaging) - Microsoft ドキュメントイメージフォーマット - Microsoft Document Imaging пішімі - Microsoft 문서 이미지 형식 - Microsoft Document Imaging formatas - Microsoft dokumentu attēlošanas formāts - Microsoft Document Imaging - format Document Imaging Microsoft - Format Microsoft Document Imaging - formato Microsoft Document Imaging - Formato do Microsoft Document Imaging - Format Microsoft Document Imaging - Формат Microsoft Document Imaging - Formát Microsoft Document Imaging - Zapis Microsoft Document Imaging - запис слика Мајкрософтовог документа - Microsoft Document Imaging-format - Microsoft Belge Görüntüleme biçimi - формат Microsoft Document Imaging - Định dạng tạo ảnh tài liệu Microsoft - Microsoft Document Imaging 格式 - 微軟文件影像格式 + MDI image + Изображение — MDI + imatge MDI + MDI-billede + MDI-Bild + MDI image + imagen MDI + MDI irudia + MDI-kuva + image MDI + MDI slika + MDI-kép + Citra MDI + Immagine MDI + MDI суреті + MDI 그림 + Obraz MDI + Imagem MDI + Изображение MDI + Obrázok MDI + Slika MDI + MDI-bild + MDI görüntüsü + зображення MDI + MDI 图像 + MDI 影像 MDI Microsoft Document Imaging - + WebP image + WebP-beeld + Изображение — WebP imatge WebP obrázek WebP WebP-billede WebP-Bild Εικόνα WebP - WebP image + WebP image imagen WebP WebP irudia WebP-kuva image WebP + imagjin WebP íomhá WebP Imaxe WebP תמונת WebP @@ -27452,7 +28397,7 @@ imatge WebP Obraz WebP imagem WebP - Imagem WebP + Imagem WebP Изображение WebP Obrázok WebP Slika WebP @@ -27460,20 +28405,21 @@ WebP-bild WebP görüntüsü зображення WebP - WebP 图像 - WebP 影像 + WebP 图像 + WebP 影像 - - + + 3D Studio image + 3D Studio-beeld صورة استديو ثلاثية الأبعاد 3D Studio rəsmi - Vyjava 3D Studio + Vyjava 3D Studio Изображение — 3D Studio imatge de 3D Studio obrázek 3D Studio @@ -27481,13 +28427,14 @@ 3D Studio-billede 3D-Studio-Bild Εικόνα 3D Studio - 3D Studio image + 3D Studio image bildo de 3D Studio imagen de 3D Studio 3D Studio-ko irudia 3D Studio -kuva 3D Studio mynd image 3D Studio + imagjin 3D Studio íomhá 3D Studio Imaxe de 3D Studio תמונת 3D Studio @@ -27509,7 +28456,7 @@ imatge 3D Studio Obraz 3D Studio imagem 3D Studio - Imagem do 3D Studio + Imagem do 3D Studio Imagine 3D Studio Сцена 3D Studio Obrázok 3D Studio @@ -27520,27 +28467,32 @@ 3D Studio görüntüsü зображення 3D Studio Ảnh xuởng vẽ 3D - 3D Studio 图像 - 3D Studio 影像 + 3D Studio 图像 + 3D Studio 影像 + + + Applix Graphics image + Applix Graphics-beeld صورة رسوميات Applix - Vyjava Applix Graphics + Vyjava Applix Graphics Изображение — Applix Graphics imatge d'Applix Graphics obrázek Applix Graphics Applix Graphics-billede Applix-Graphics-Bild Εικόνα Applix Graphics - Applix Graphics image + Applix Graphics image bildo de Applix Graphics imagen de Applix Graphics Applix Graphics irudia Applix Graphics -kuva Applix Graphics mynd image Applix Graphics + imagjin Applix Graphics íomhá Applix Graphics imaxe de Applix Graphics תמונה של Applix Graphics @@ -27562,7 +28514,7 @@ imatge Applix Graphics Obraz Applix Graphics imagem Applix Graphics - Imagem do Applix Graphics + Imagem do Applix Graphics Imagine Applix Graphics Изображение Applix Graphics Obrázok Applix Graphics @@ -27573,36 +28525,38 @@ Applix Graphics görüntüsü зображення Applix Graphics Ảnh Applix Graphics - Applix Graphics 图像 - Applix Graphics 影像 + Applix Graphics 图像 + Applix Graphics 影像 - - + + EPS image (bzip-compressed) + EPS-beeld (bzip-saamgepers) صورة EPS (مضغوط-bzip) - Vyjava EPS (bzip-skampresavanaja) + Vyjava EPS (bzip-skampresavanaja) Изображение — EPS, компресирано с bzip imatge EPS (amb compressió bzip) obrázek EPS (komprimovaný pomocí bzip) EPS-billede (bzip-komprimeret) EPS-Bild (bzip-komprimiert) Εικόνα EPS (συμπιεσμένη bzip) - EPS image (bzip-compressed) + EPS image (bzip-compressed) imagen EPS (comprimida con bzip) EPS irudia (bzip-ekin konprimitua) EPS-kuva (bzip-pakattu) EPS mynd (bzip-stappað) image EPS (compressée bzip) + imagjin EPS (comprimude cun bzip) íomhá EPS (comhbhrúite le bzip) imaxe EPS (comprimida con bzip) תמונת EPS (מכווץ בbzip) EPS slika (bzip sažeta) - EPS kép (bzip-tömörítésű) + EPS kép (bzip tömörítésű) Imagine EPS (comprimite con bzip) Citra EPS (terkompresi bzip) Immagine EPS (compressa con bzip) @@ -27618,7 +28572,7 @@ imatge EPS (compressat bzip) Obraz EPS (kompresja bzip) imagem EPS (compressão bzip) - Imagem EPS (compactada com bzip) + Imagem EPS (compactada com bzip) Imagine EPS (compresie bzip) Изображение EPS (сжатое bzip) Obrázok EPS (komprimovaný pomocou bzip) @@ -27629,8 +28583,8 @@ EPS görüntüsü (bzip ile sıkıştırılmış) зображення EPS (стиснене bzip) Ảnh EPS (đã nén bzip) - EPS 图像(bzip 压缩) - EPS 影像 (bzip 格式壓縮) + EPS 图像(bzip 压缩) + EPS 影像 (bzip 壓縮) @@ -27638,9 +28592,10 @@ CMU raster image + CMU-roosterbeeld صورة CMU نقطية CMU raster rəsmi - Rastravaja vyjava CMU + Rastravaja vyjava CMU Изображение — CMU raster imatge ràster CMU rastrový obrázek CMU @@ -27648,13 +28603,14 @@ CMU-rasterbillede CMU-Rasterbild Εικόνα ράστερ CMU - CMU raster image + CMU raster image rastruma bildo de CMU imagen ráster CMU CMU bilbe-irudia CMU-rasterikuva CMU raster mynd image raster CMU + imagjin raster CMU íomhá rastar CMU imaxe raster CMU תמונת סריקה CMU @@ -27676,7 +28632,7 @@ imatge raster CMU Obraz rastrowy CMU imagem raster CMU - Imagem raster CMU + Imagem raster CMU Imagine raster CMU Растровое изображение CMU Rastrový obrázok CMU @@ -27687,33 +28643,35 @@ CMU tarama görüntüsü растрове зображення CMU Ảnh mành CMU - CMU 光栅图像 - CMU raster 影像 + CMU 光栅图像 + CMU raster 影像 compressed GIMP image + saamgepersde GIMP-beeld صورة GIMP مضغوطة - skampresavanaja vyjava GIMP + skampresavanaja vyjava GIMP Изображение — GIMP, компресирано imatge GIMP amb compressió komprimovaný obrázek GIMP komprimeret GIMP-billede Komprimiertes GIMP-Bild Συμπιεσμένη εικόνα GIMP - compressed GIMP image + compressed GIMP image imagen GIMP comprimida konprimitutako GIMP irudia pakattu GIMP-kuva stappað GIMP mynd image GIMP compressée + imagjin GIMP comprimude íomhá GIMP comhbhrúite imaxe de GIMP comprimida תמונת GIMP מכווצת Sažeta GIMP slika tömörített GIMP kép Imagine GIMP comprimite - Citra GIMP terkompresi + citra GIMP terkompresi Immagine GIMP compressa 圧縮 GIMP 画像 сығылған GIMP суреті @@ -27726,7 +28684,7 @@ imatge GIMP compressat Skompresowany obraz GIMP imagem GIMP comprimida - Imagem do GIMP compactada + Imagem do GIMP compactada imagine comprimată GIMP Сжатое изображение GIMP Komprimovaný obrázok GIMP @@ -27737,28 +28695,30 @@ sıkıştırılmış GIMP görüntüsü стиснене зображення GIMP ảnh GIMP đã nén - 压缩的 GIMP 图像 - 壓縮版 GIMP 影像 + 压缩的 GIMP 图像 + 壓縮版 GIMP 影像 DICOM image + DICOM-beeld صورة DICOM - Vyjava DICOM + Vyjava DICOM Изображение — DICOM imatge DICOM obrázek DICOM DICOM-billede DICOM-Bild Εικόνα DICOM - DICOM image + DICOM image DICOM-bildo imagen DICOM DICOM irudia DICOM-kuva DICOM mynd image DICOM + imagjin DICOM íomhá DICOM imaxe DICOM תמונת DICOM @@ -27779,7 +28739,7 @@ imatge DICOM Obraz DICOM imagem DICOM - Imagem DICOM + Imagem DICOM Imagine DICOM Изображение DICOM Obrázok DICOM @@ -27790,35 +28750,37 @@ DICOM görüntüsü зображення DICOM Ảnh DICOM - DICOM 图像 - DICOM 影像 + DICOM 图像 + DICOM 影像 DICOM Digital Imaging and Communications in Medicine - + DocBook document + DocBook-dokument مستند DocBook Documentu DocBook - Dakument DocBook + Dakument DocBook Документ — DocBook document DocBook dokument DocBook DocBook-dokument DocBook-Dokument Έγγραφο DocBook - DocBook document + DocBook document DocBook-dokumento documento DocBook DocBook dokumentua DocBook-asiakirja DocBook skjal document DocBook + document DocBook cáipéis DocBook documento de DocBook מסמך DocBook @@ -27839,7 +28801,7 @@ document DocBook Dokument DocBook documento DocBook - Documento DocBook + Documento DocBook Document DocBook Документ DocBook Dokument DocBook @@ -27850,8 +28812,8 @@ DocBook belgesi документ DocBook Tài liệu DocBook - DocBook 文档 - DocBook 文件 + DocBook 文档 + DocBook 文件 @@ -27867,21 +28829,23 @@ DIB image + DIB-beeld صورة DIB - Vyjava DIB + Vyjava DIB Изображение — DIB imatge DIB obrázek DIB DIB-billede DIB-Bild Εικόνα DIB - DIB image + DIB image DIB-bildo imagen DIB DIB irudia DIB-kuva DIB mynd image DIB + imagjin DIB íomhá DIB imaxe DIB תמונת DIB @@ -27902,7 +28866,7 @@ imatge DIB Obraz DIB imagem DIB - Imagem DIB + Imagem DIB Imagine DIB Изображение DIB Obrázok DIB @@ -27913,31 +28877,33 @@ DIB görüntüsü зображення DIB Ảnh DIB - DIB 图像 - DIB 影像 + DIB 图像 + DIB 影像 DIB Device Independent Bitmap - + DjVu image + DjVu-beeld صورة DjVu - Vyjava DjVu + Vyjava DjVu Изображение — DjVu imatge DjVu obrázek DjVu DjVu-billede DjVu-Bild Εικόνα DjVu - DjVu image + DjVu image DjVu-bildo imagen DjVu DjVU-ko irudia DjVu-kuva DjVu mynd image DjVu + imagjin DjVu íomhá DjVu imaxe de DjVu תמונת DjVu @@ -27959,7 +28925,7 @@ imatge DjVu Obraz DjVu imagem DjVu - Imagem DjVu + Imagem DjVu Imagine DjVu Изображение DjVu Obrázok DjVu @@ -27970,16 +28936,16 @@ DjVu görüntüsü зображення DjVu Ảnh DjVu - DjVu 图像 - DjVu 影像 + DjVu 图像 + DjVu 影像 - - + + - - + + @@ -27987,17 +28953,20 @@ DjVu document + DjVu-dokument Documentu DjVu + Документ — DjVu document DjVu dokument DjVu DjVu-dokument DjVu-Dokument Έγγραφο DjVu - DjVu document + DjVu document documento DjVu DjVu dokumentua DjVu-asiakirja document DjVu + document DjVu cáipéis DjVu מסמך DjVu DjVu dokument @@ -28010,22 +28979,23 @@ document DjVu Dokument DjVu documento DjVu - Documento DjVu + Documento DjVu Документ DjVu Dokument DjVu + Dokument DjVu ДјВу документ DjVu-dokument DjVu belgesi документ DjVu - DjVu 文档 - DjVu 文件 + DjVu 文档 + DjVu 文件 - - + + - - + + @@ -28034,21 +29004,23 @@ DPX image + DPX-beeld صورة DPX - Vyjava DPX + Vyjava DPX Изображение — DPX imatge DPX obrázek DPX DPX-billede DPX-Bild Εικόνα DPX - DPX image + DPX image DPX-bildo imagen DPX DPX irudia DPX-kuva DPX mynd image DPX + imagjin DPX íomhá DPX imaxe DPX תמונת DPX @@ -28069,7 +29041,7 @@ imatge DPX Obraz DPX imagem DPX - Imagem DPX + Imagem DPX Imagine DPX Изображение DPX Obrázok DPX @@ -28080,31 +29052,33 @@ DPX görüntüsü зображення DPX Ảnh DPX - DPX 图像 - DPX 影像 + DPX 图像 + DPX 影像 DPX Digital Moving Picture Exchange - + EPS image + EPS-beeld صورة EPS - Vyjava EPS + Vyjava EPS Изображение — EPS imatge EPS obrázek EPS EPS-billede EPS-Bild Εικόνα EPS - EPS image + EPS image EPS-bildo imagen EPS EPS irudia EPS-kuva EPS mynd image EPS + imagjin EPS íomhá EPS imaxe EPS תמונת EPS @@ -28125,7 +29099,7 @@ imatge EPS Obraz EPS imagem EPS - Imagem EPS + Imagem EPS Imagine EPS Изображение EPS Obrázok EPS @@ -28136,19 +29110,19 @@ EPS görüntüsü зображення EPS Ảnh EPS - EPS 图像 - EPS 影像 + EPS 图像 + EPS 影像 EPS Encapsulated PostScript - - + + - - + + - + @@ -28156,22 +29130,24 @@ FITS document + FITS-dokument مستند FITS Documentu FITS - Dakument FITS + Dakument FITS Документ — FITS document FITS dokument FITS FITS-dokument FITS-Dokument Έγγραφο FITS - FITS document + FITS document FITS-dokumento documento FITS FITS dokumentua FITS-asiakirja FITS skjal document FITS + document FITS cáipéis FITS documento FICT מסמך FITS @@ -28192,7 +29168,7 @@ document FITS Dokument FITS documento FITS - Documento FITS + Documento FITS Document FITS Документ FITS Dokument FITS @@ -28203,33 +29179,35 @@ FITS belgesi документ FITS Tài liệu FITS - FITS 文档 - FITS 文件 + FITS 文档 + FITS 文件 FITS Flexible Image Transport System - + FPX image + FPX-beeld صورة FPX - Vyjava FPX + Vyjava FPX Изображение — FPX imatge FPX obrázek FPX FPX-billede FPX-Bild Εικόνα FPX - FPX image + FPX image FPX-bildo imagen FPX FPX irudia FPX-kuva FPX mynd image FPX + imagjin FPX íomhá FPX imaxe FPX תמונת FPX @@ -28250,7 +29228,7 @@ imatge FPX Obraz FPX imagem FPX - Imagem FPX + Imagem FPX Imagine FPX Изображение FPX Obrázok FPX @@ -28261,35 +29239,37 @@ FPX görüntüsü зображення FPX Ảnh FPX - FPX 图像 - FPX 影像 + FPX 图像 + FPX 影像 FPX FlashPiX - + EPS image (gzip-compressed) + EPS-beeld (gzip-saamgepers) صورة EPS (مضغوط-gzip) - Vyjava EPS (gzip-skampresavanaja) + Vyjava EPS (gzip-skampresavanaja) Изображение — EPS, компресирано с gzip imatge EPS (amb compressió gzip) obrázek EPS (komprimovaný pomocí gzip) EPS-billede (gzip-komprimeret) EPS-Bild (gzip-komprimiert) Εικόνα EPS (συμπιεσμένη gzip) - EPS image (gzip-compressed) + EPS image (gzip-compressed) imagen EPS (comprimida con gzip) EPS irudia (gzip-ekin konprimitua) EPS-kuva (gzip-pakattu) EPS mynd (gzip-stappað) image EPS (compressée gzip) + imagjin EPS (comprimude cun gzip) íomhá EPS (comhbhrúite le gzip) imaxe EPS (comprimida con gzip) תמונת EPS (מכווץ ע״י gzip) EPS slika (gzip sažeta) - EPS kép (gzip-tömörítésű) + EPS kép (gzip tömörítésű) Imagine EPS (comprimite con gzip) Citra EPS (terkompresi gzip) Immagine EPS (compressa con gzip) @@ -28305,7 +29285,7 @@ imatge EPS (compressat gzip) Obraz EPS (kompresja gzip) imagem EPS (compressão gzip) - Imagem EPS (compactada com gzip) + Imagem EPS (compactada com gzip) Imagine EPS (compresie gzip) Изображение EPS (сжатое gzip) Obrázok EPS (komprimovaný pomocou gzip) @@ -28316,8 +29296,8 @@ EPS görüntüsü (gzip ile sıkıştırılmış) зображення EPS (стиснене gzip) Ảnh EPS (đã nén gzip) - EPS 图像(gzip 压缩) - EPS 影像 (gzip 格式壓縮) + EPS 图像(gzip 压缩) + EPS 影像 (gzip 壓縮) @@ -28325,16 +29305,19 @@ Windows icon + Windows-ikoon + Икона — Windows icona de Windows ikona Windows Windows-ikon Windows-Symbol Εικονίδιο Windows - Windows icon + Windows icon icono de Windows Windows ikonoa Windows-kuvake icône Windows + icone Windows deilbhín Windows סמל של Windows Windows ikona @@ -28343,11 +29326,11 @@ Ikon Windows Icona Windows Windows таңбашасы - 윈도우 아이콘 + Windows 아이콘 icòna Windows Ikona Windows ícone Windows - Ícone do Windows + Ícone do Windows Значок Windows Ikona Windows Ikona Windows @@ -28355,11 +29338,11 @@ Windows-ikon Windows simgesi піктограма Windows - Windows 图标 - Windows 圖示 + Windows 图标 + Windows 圖示 - - + + @@ -28372,21 +29355,23 @@ MacOS X icon + MacOS X-ikoon أيقونة MacOS X - Ikona MacOS X + Ikona MacOS X Икона — MacOS X icona MacOS X ikona MacOS X MacOS X-ikon MacOS-X-Symbol Εικονίδιο MacOS X - MacOS X icon + MacOS X icon MacOS-X-piktogramo icono de OS X MacOS X ikonoa MacOS X -kuvake MacOS X ímynd icône MacOS X + icone MacOS X deilbhín MacOS X Icona de MacOS X סמל בתקן MacOS X @@ -28407,7 +29392,7 @@ icòna MacOS X Ikona Mac OS X ćone MacOS X - Ícone do MacOS X + Ícone do MacOS X Iconiță MacOS X Значок MacOS X Ikona MacOS X @@ -28418,18 +29403,19 @@ MacOS X simgesi піктограма MacOS X Biểu tượng MacOS X - MacOS X 图标 - MacOS X 圖示 + MacOS X 图标 + MacOS X 圖示 - + ILBM image + ILBM-beeld صورة ILBM ILBM rəsmi - Vyjava ILBM + Vyjava ILBM Изображение — ILBM imatge ILBM obrázek ILMB @@ -28437,13 +29423,14 @@ ILBM-billede ILBM-Bild Εικόνα ILBM - ILBM image + ILBM image ILBM-bildo imagen ILBM ILBM irudia ILBM-kuva ILBM mynd image ILBM + imagjin ILBM íomhá ILBM imaxe ILBM תמונת ILBM @@ -28464,7 +29451,7 @@ imatge ILBM Obraz ILBM imagem ILBM - Imagem ILBM + Imagem ILBM Imagine ILBM Изображение ILBM Obrázok ILMB @@ -28475,8 +29462,8 @@ ILBM görüntüsü зображення ILBM Ảnh ILBM - ILBM 图像 - ILBM 影像 + ILBM 图像 + ILBM 影像 ILBM InterLeaved BitMap @@ -28491,9 +29478,10 @@ JNG image + JNG-beeld صورة JNG JNG rəsmi - Vyjava JNG + Vyjava JNG Изображение — JNG imatge JNG obrázek JNG @@ -28501,13 +29489,14 @@ JNG-billede JNG-Bild Εικόνα JNG - JNG image + JNG image JNG-bildo imagen JNG JNG irudia JNG-kuva JNG mynd image JNG + imagjin JNG íomhá JNG imaxe JNG תמונת JNG @@ -28528,7 +29517,7 @@ imatge JNG Obraz JNG imagem JNG - Imagem JNG + Imagem JNG Imagine JNG Изображение JNG Obrázok JNG @@ -28539,17 +29528,18 @@ JNG görüntüsü зображення JNG Ảnh JNG - JNG 图像 - JNG 影像 + JNG 图像 + JNG 影像 JNG JPEG Network Graphics LightWave object + LightWave-objek كائن LightWave LightWave cismi - Abjekt LightWave + Abjekt LightWave Обект — LightWave objecte de LightWave objekt LightWave @@ -28557,13 +29547,14 @@ LightWave-objekt LightWave-Objekt Αντικείμενο LightWave - LightWave object + LightWave object LightWave-objekto objeto de LightWave LightWave objektua LightWave-esine LightWave lutur objet LightWave + ogjet LightWave réad LightWave obxecto de LightWave עצם LightWave @@ -28584,7 +29575,7 @@ objècte LightWave Obiekt LightWave Objecto LightWave - Objeto LightWave + Objeto LightWave Obiect LightWave Объект LightWave Objekt LightWave @@ -28595,16 +29586,17 @@ LightWave nesnesi об'єкт LightWave Đối tượng LightWave - LightWave 对象 - LightWave 物件 + LightWave 对象 + LightWave 物件 LightWave scene + LightWave-toneel مشهد LightWave LightWave səhnəsi - Scena LightWave + Scena LightWave Сцена — LightWave escena de LightWave scéna LightWave @@ -28612,13 +29604,14 @@ LightWave-scene LightWave-Szene Σκηνή LightWave - LightWave scene + LightWave scene LightWave-sceno escena de LightWave LightWave eszena LightWave-maisema LightWave leikmynd scène LightWave + sene LightWave radharc LightWave escena de LightWave סצנה של LightWave @@ -28639,7 +29632,7 @@ scèna LightWave Scena Lightwave cenário LightWave - Cena LightWave + Cena LightWave Scenă LightWave Сцена LightWave Scéna LightWave @@ -28650,26 +29643,28 @@ LightWave sahnesi сцена LightWave Cảnh LightWave - LightWave 场景 - LightWave 場景 + LightWave 场景 + LightWave 場景 MacPaint Bitmap image + MacPaint-roosterbeeld صورة MacPaint Bitmap - Bitmapnaja vyjava MacPaint + Bitmapnaja vyjava MacPaint Изображение — MacPaint Bitmap imatge de mapa de bits MacPaint obrázek MacPaint Bitmap MacPaint BitMap-billede MacPaint-Bitmap-Datei Εικόνα Bitmap MacPaint - MacPaint Bitmap image + MacPaint Bitmap image imagen de mapa de bits de MacPaint MacPaint Bitmap irudia MacPaint-bittikartta MacPaint Bitmap mynd image matricielle MacPaint + imagjin bitmap MacPaint íomhá ghiotánmhapach MacPaint imaxe de mapa de bits MacPaint תמונת מפת-סיביות של MacPaint @@ -28689,7 +29684,7 @@ imatge matricial MacPaint Obraz bitmapowy MacPaint imagem MacPaint Bitmap - Imagem de bitmap do MacPaint + Imagem de bitmap do MacPaint Imagine MacPaint Bitmap Растровое изображение MacPaint Obrázok MacPaint Bitmap @@ -28700,26 +29695,28 @@ MacPaint bit eşlem görüntüsü растрове зображення MacPaint Ảnh mảng MacPaint - MacPaint 位图 - MacPaint 點陣影像 + MacPaint 位图 + MacPaint 點陣影像 Office drawing + Office-tekening تصميم أوفيس - Ofisny rysunak + Ofisny rysunak Чертеж — Office dibuix d'Office kresba Office Officetegning Office-Zeichnung Σχέδιο Office - Office drawing + Office drawing dibujo de Office Office marrazkia Office-piirros Office tekning dessin Office + dissen di Office líníocht Office debuxo de Office ציור של Office @@ -28739,7 +29736,7 @@ dessenh Office Rysunek Office desenho Office - Desenho do Office + Desenho do Office Desen Office Рисунок Office Kresba Office @@ -28750,27 +29747,29 @@ Ofis çizimi малюнок Office Bản vẽ Office - Office 绘图 - Office 繪圖 + Office 绘图 + Office 繪圖 NIFF image + NIFF-beeld صورة NIFF - Vyjava NIFF + Vyjava NIFF Изображение — NIFF imatge NIFF obrázek NIFF NIFF-billede NIFF-Bild Εικόνα NIFF - NIFF image + NIFF image NIFF-bildo imagen NIFF NIFF irudia NIFF-kuva NIFF mynd image NIFF + imagjin NIFF íomhá NIFF imaxe NIFF תמונת NIFF @@ -28790,7 +29789,7 @@ imatge NIFF Obraz NIFF imagem NIFF - Imagem NIFF + Imagem NIFF Imagine NIF Изображение NIFF Obrázok NIFF @@ -28801,29 +29800,31 @@ NIFF görüntüsü зображення NIFF Ảnh NIFF - NIFF 图像 - NIFF 影像 + NIFF 图像 + NIFF 影像 - + PCX image + PCX-beeld صورة PCX - Vyjava PCX + Vyjava PCX Изображение — PCX imatge PCX obrázek PCX PCX-billede PCX-Bild Εικόνα PCX - PCX image + PCX image PCX-bildo imagen PCX PCX irudia PCX-kuva PCX mynd image PCX + imagjin PCX íomhá PCX imaxe PCX תמונת PCX @@ -28843,7 +29844,7 @@ imatge PCX Obraz PCX imagem PCX - Imagem PCX + Imagem PCX Imagine PCX Изображение PCX Obrázok PCX @@ -28854,16 +29855,16 @@ PCX görüntüsü зображення PCX Ảnh PCX - PCX 图像 - PCX 影像 + PCX 图像 + PCX 影像 PCX PiCture eXchange - - - - - + + + + + @@ -28871,21 +29872,23 @@ PCD image + PCD-beeld صورة PCD - Vyjava PCD + Vyjava PCD Изображение — PCD imatge PCD obrázek PCD PCD-billede PCD-Bild Εικόνα PCD - PCD image + PCD image PCD-bildo imagen PCD PCD irudia PCD-kuva PCD mynd image PCD + imagjin PCD íomhá PCD imaxe PCD תמונת PCD @@ -28906,7 +29909,7 @@ imatge PCD Obraz PCD imagem PCD - Imagem PCD + Imagem PCD Imagine PCD Изображение PCD Obrázok PCD @@ -28917,17 +29920,18 @@ PCD görüntüsü зображення PCD Ảnh PCD - PCD 图像 - PCD 影像 + PCD 图像 + PCD 影像 PCD PhotoCD PNM image + PNM-beeld صورة PNM PNM rəsmi - Vyjava PNM + Vyjava PNM Изображение — PNM imatge PNM obrázek PNM @@ -28935,13 +29939,14 @@ PNM-billede PNM-Bild Εικόνα PNM - PNM image + PNM image PNM-bildo imagen PNM PNM irudia PNM-kuva PNM mynd image PNM + imagjin PNM íomhá PNM imaxe PNM תמונת PNM @@ -28962,7 +29967,7 @@ imatge PNM Obraz PNM imagem PNM - Imagem PNM + Imagem PNM Imagine PNM Изображение PNM Obrázok PNM @@ -28973,14 +29978,15 @@ PNM görüntüsü зображення PNM Ảnh PNM - PNM 图像 - PNM 影像 + PNM 图像 + PNM 影像 PBM image + PBM-beeld صورة PBM - Vyjava PBM + Vyjava PBM Изображение — PBM imatge PBM obrázek PBM @@ -28988,13 +29994,14 @@ PBM-billede PBM-Bild Εικόνα PBM - PBM image + PBM image PBM-bildo imagen PBM PBM irudia PBM-kuva PBM mynd image PBM + imagjin PBM íomhá PBM imaxe PBM תמונת PBM @@ -29015,7 +30022,7 @@ imatge PBM Obraz PBM imagem PBM - Imagem PBM + Imagem PBM Imagine PBM Изображение PBM Obrázok PBM @@ -29026,31 +30033,32 @@ PBM görüntüsü зображення PBM Ảnh PBM - PBM 图像 - PBM 影像 + PBM 图像 + PBM 影像 PBM Portable BitMap - - - - - - - - - - - + + + + + + + + + + + PGM image + PGM-beeld صورة PGM - Vyjava PGM + Vyjava PGM Изображение — PGM imatge PGM obrázek PGM @@ -29058,13 +30066,14 @@ PGM-billede PGM-Bild Εικόνα PGM - PGM image + PGM image PGM-bildo imagen PGM PGM irudia PGM-kuva PGM mynd image PGM + imagjin PGM íomhá PGM imaxe PGM תמונת PGM @@ -29084,7 +30093,7 @@ imatge PGM Obraz PGM imagem PGM - Imagem PGM + Imagem PGM Imagine PGM Изображение PGM Obrázok PGM @@ -29095,31 +30104,32 @@ PGM görüntüsü зображення PGM Ảnh PGM - PGM 图像 - PGM 影像 + PGM 图像 + PGM 影像 PGM Portable GrayMap - - - - - - - - - - - + + + + + + + + + + + PPM image + PPM-beeld صورة PPM - Vyjava PPM + Vyjava PPM Изображение — PPM imatge PPM obrázek PPM @@ -29127,13 +30137,14 @@ PPM-billede PPM-Bild Εικόνα PPM - PPM image + PPM image PPM-bildo imagen PPM PPM irudia PPM-kuva PPM mynd image PPM + imagjin PPM íomhá PPM imaxe PPM תמונת PPM @@ -29153,7 +30164,7 @@ imatge PPM Obraz PPM imagem PPM - Imagem PPM + Imagem PPM Imagine PPM Изображение PPM Obrázok PPM @@ -29164,29 +30175,30 @@ PPM görüntüsü зображення PPM Ảnh PPM - PPM 图像 - PPM 影像 + PPM 图像 + PPM 影像 PPM Portable PixMap - - - - - - - - - - - + + + + + + + + + + + Photoshop image + Photoshop-beeld صورة فوتوشوب Изображение — Photoshop imatge de Photoshop @@ -29194,13 +30206,14 @@ Photoshop-billede Photoshop-Bild Εικόνα Photoshop - Photoshop image + Photoshop image Photoshop-bildo imagen de Photoshop Photoshop irudia Photoshop-kuva Photoshop mynd image Photoshop + imagjin Photoshop íomhá Photoshop imaxe de Photoshop תמונת Photoshop @@ -29219,7 +30232,7 @@ imatge Photoshop Obraz Photoshop imagem Photoshop - Imagem do Photoshop + Imagem do Photoshop Imagine Photoshop Изображение Photoshop Obrázok Photoshop @@ -29229,10 +30242,10 @@ Photoshop görüntüsü зображення Photoshop Ảnh Photoshop - Photoshop 图像 - Photoshop 影像 + Photoshop 图像 + Photoshop 影像 - + @@ -29244,9 +30257,10 @@ RGB image + RGB-beeld صورة RGB RGB rəsmi - Vyjava RGB + Vyjava RGB Изображение — RGB imatge RGB obrázek RGB @@ -29254,13 +30268,14 @@ RGB-billede RGB-Bild Εικόνα RGB - RGB image + RGB image RGB-bildo imagen RGB RGB irudia RGB-kuva RGB mynd image RGB + imagjin RGB íomhá RGB imaxe RGB תמונת RGB @@ -29281,7 +30296,7 @@ imatge RGB Obraz RGB imagem RGB - Imagem RGB + Imagem RGB Imagine RGB Изображение RGB Obrázok RGB @@ -29292,27 +30307,29 @@ RGB görüntüsü зображення RGB Ảnh kiểu RGB - RGB 图像 - RGB 影像 + RGB 图像 + RGB 影像 SGI image + SGI-beeld صورة SGI - Vyjava SGI + Vyjava SGI Изображение — SGI imatge SGI obrázek SGI SGI-billede SGI-Bild Εικόνα SGI - SGI image + SGI image SGI-bildo imagen SGI SGI irudia SGI-kuva SGI mynd image SGI + imagjin SGI íomhá SGI imaxe SGI תמונת SGI @@ -29332,7 +30349,7 @@ imatge SGI Obraz SGI imagem SGI - Imagem SGI + Imagem SGI Imagine SGI Изображение SGI Obrázok SGI @@ -29343,26 +30360,28 @@ SGI görüntüsü зображення SGI Ảnh SGI - SGI 图像 - SGI 影像 + SGI 图像 + SGI 影像 Sun raster image + Sun-roosterbeeld صورة Sun raster - Rastravaja vyjava Sun + Rastravaja vyjava Sun Изображение — Sun raster imatge ràster Sun rastrový obrázek Sun Sun rasterbillede Sun-Rasterbild Εικόνα Sun raster - Sun raster image + Sun raster image imagen rasterizada de Sun Sun raster irudia Sun-rasterikuva Sun raster mynd image raster Sun + imagjin raster Sun íomhá rastar Sun imaxe ráster de Sun תמונה סרוקה של Sun @@ -29382,7 +30401,7 @@ imatge raster Sun Obraz rastrowy Sun imagem raster Sun - Imagem raster da Sun + Imagem raster da Sun Imagine rasterizată Sun Растровое изображение Sun Rastrový obrázok Sun @@ -29393,30 +30412,32 @@ Sun raster görüntüsü растрове зображення Sun Ảnh mành Sun - Sun 光栅图像 - Sun raster 影像 + Sun 光栅图像 + Sun raster 影像 - + TGA image + TGA-beeld صورة TGA - Vyjava TGA + Vyjava TGA Изображение — TGA imatge TGA obrázek TGA TGA-billede TGA-Bild Εικόνα TGA - TGA image + TGA image TGA-bildo imagen TGA TGA irudia TGA-kuva TGA mynd image TGA + imagjin TGA íomhá TGA imaxe TGA תמונת TGA @@ -29436,7 +30457,7 @@ imatge TGA Obraz TGA imagem TGA - Imagem TGA + Imagem TGA Imagine TGA Изображение TGA Obrázok TGA @@ -29447,23 +30468,23 @@ TGA görüntüsü зображення TGA Ảnh TGA - TGA 图像 - TGA 影像 + TGA 图像 + TGA 影像 TGA Truevision Graphics Adapter - - - - - + + + + + - - - - - + + + + + @@ -29471,25 +30492,33 @@ + + + + + + Windows cursor + Windows-wyser مؤشر ويندوز - Kursor Windows + Kursor Windows Курсор — Windows cursor de Windows kurzor Windows Windowsmarkør Windows-Cursor Δρομέας Windows - Windows cursor + Windows cursor Windows-kursoro cursor de Windows Windows kurtsorea Windows-osoitin Windows vísi curseur Windows + cursôr di Windows cúrsóir Windows Cursor de Windows סמן של Windows @@ -29510,7 +30539,7 @@ cursor Windows Kursor Windows cursor Windows - Cursor do Windows + Cursor do Windows Cursor Windows Курсор Windows Kurzor Windows @@ -29521,31 +30550,33 @@ Windows imleci курсор Windows Con chạy Windows - Windows 光标 - Windows 滑鼠游標 + Windows 光标 + Windows 滑鼠游標 - - + + Windows animated cursor + Windows geanimeerde wyser مؤشر ويندوز المتحرك - Animavany kursor Windows + Animavany kursor Windows Курсор — Windows, анимиран cursor animat de Windows animovaný kurzor Windows Windowsanimeret markør Animierter Windows-Cursor Κινούμενος δρομέας Windows - Windows animated cursor + Windows animated cursor cursor animado de Windows Windows-eko kurtsore animatua animoitu Windows-osoitin Windows livindaigjørdur vísi curseur animé Windows + cursôr animât di Windows cúrsóir beoite Windows Cursor animado de Windows סמן מונפש של Windows @@ -29564,7 +30595,7 @@ cursor animat Windows Animowany kursor Windows cursor animado Windows - Cursor animado do Windows + Cursor animado do Windows Cursor animat Windows Анимированный курсор Windows Animovaný kurzor Windows @@ -29575,32 +30606,34 @@ Windows canlandırmalı imleci анімований курсор Windows Con chạy hoạt họa Windows - Windows 动态光标 - Windows 滑鼠動畫游標 + Windows 动态光标 + Windows 滑鼠動畫游標 - - + + EMF image + EMF-beeld صورة EMF - Vyjava EMF + Vyjava EMF Изображение — EMF imatge EMF obrázek EMF EMF-billede EMF-Bild Εικόνα EMF - EMF image + EMF image EMF-bildo imagen EMF EMF irudia EMF-kuva EMF mynd image EMF + imagjin EMF íomhá EMF imaxe EMF תמונת EMF @@ -29621,7 +30654,7 @@ imatge EMF Obraz EMF imagem EMF - Imagem EMF + Imagem EMF Imagine EMF Изображение EMF Obrázok EMF @@ -29632,8 +30665,8 @@ EMF görüntüsü зображення EMF Ảnh EMF - EMF 图像 - EMF 影像 + EMF 图像 + EMF 影像 EMF Enhanced MetaFile @@ -29641,10 +30674,10 @@ - - - - + + + + @@ -29652,21 +30685,23 @@ WMF image + WMF-beeld صورة WMF - Vyjava WMF + Vyjava WMF Изображение — WMF imatge WMF obrázek WMF WMF-billede WMF-Bild Εικόνα WML - WMF image + WMF image WMF-bildo imagen WMF WMF irudia WMF-kuva WMF mynd image WMF + imagjin WMF íomhá WMF imaxe WMF תמונת WMF @@ -29686,7 +30721,7 @@ imatge WMF Obraz WMF imagem WMF - Imagem WMF + Imagem WMF Imagine WMF Изображение WMF Obrázok WMF @@ -29697,21 +30732,21 @@ WMF görüntüsü зображення WMF Ảnh WMF - WMF 图像 - WMF 影像 + WMF 图像 + WMF 影像 WMF Windows Metafile - - - - - + + + + + - - - + + + @@ -29723,21 +30758,23 @@ XBM image + XBM-beeld صورة XBM - Vyjava XBM + Vyjava XBM Изображение — XBM imatge XBM obrázek XBM XBM-billede XBM-Bild Εικόνα XBM - XBM image + XBM image XBM-bildo imagen XBM XBM irudia XBM-kuva XBM mynd image XBM + imagjin XBM íomhá XBM imaxe XBM תמונת XBM @@ -29757,7 +30794,7 @@ imatge XBM Obraz XBM imagem XBM - Imagem XBM + Imagem XBM Imagine XBM Изображение XBM Obrázok XBM @@ -29768,29 +30805,31 @@ XBM görüntüsü зображення XBM Ảnh XBM - XBM 图像 - XBM 影像 + XBM 图像 + XBM 影像 XBM X BitMap GIMP image + GIMP-beeld صورة GIMP - Vyjava GIMP + Vyjava GIMP Изображение — GIMP imatge de GIMP obrázek GIMP GIMP-billede GIMP-Bild Εικόνα GIMP - GIMP image + GIMP image GIMP-bildo imagen del GIMP GIMP irudia GIMP-kuva GIMP mynd image GIMP + imagjin GIMP íomhá GIMP imaxe de GIMP תמונת GIMP @@ -29812,7 +30851,7 @@ imatge GIMP Obraz GIMP imagem GIMP - Imagem do GIMP + Imagem do GIMP Imagine GIMP Изображение GIMP Obrázok GIMP @@ -29823,21 +30862,29 @@ GIMP görüntüsü зображення GIMP Ảnh GIMP - GIMP 图像 - GIMP 影像 + GIMP 图像 + GIMP 影像 - - + + GIMP brush + GIMP-kwas + Четка — GIMP pinzell de GIMP štětec GIMP + GIMP-pensel GIMP-Pinsel - GIMP brush + GIMP brush pincel del GIMP + GIMP pintzela + GIMP-sivellin + brosse GIMP + pinel GIMP + scuab GIMP GIMP kist GIMP ecset Kuas GIMP @@ -29845,47 +30892,65 @@ GIMP бояу жаққышы GIMP 붓 Pędzel programu GIMP - Pincel do GIMP + Pincel do GIMP Кисть GIMP Štetec aplikácie GIMP + Čopič GIMP GIMP-pensel + GIMP fırçası пензель GIMP - GIMP 笔刷 - GIMP 筆刷 + GIMP 笔刷 + GIMP 筆刷 - + GIMP brush pipe + Конвейер с четки — GIMP conducte del pinzell de GIMP zřetězení štětců GIMP + GIMP-penselrør GIMP-Pinselanimation - GIMP brush pipe + GIMP brush pipe pincel animado del GIMP - GIMP valjkasti kist + GIMP pintzel hodia pipe + GIMP-sivellinputki + brosse animée GIMP + condot pinel GIMP + píopa scuaba GIMP + Proces GIMP kista GIMP ecsetcsatorna Pipa kuas GIMP Pipe pennello GIMP GIMP бояу жаққыш түтігі GIMP 붓 파이프 Potok pędzla programu GIMP - Tubo de pincel do GIMP + Tubo de pincel do GIMP Анимированная кисть GIMP GIMP-penselrör + GIMP fırça borusu канал пензлів GIMP - GIMP 管刷 - GIMP 筆刷導管 + GIMP 管刷 + GIMP 筆刷導管 GIMP pattern + GIMP-patroon + Шарка — GIMP patró de GIMP vzorek GIMP + GIMP-mønster GIMP-Muster - GIMP pattern + GIMP pattern patrón del GIMP + GIMP eredua + GIMP-kuvio + motif GIMP + motîf GIMP + patrún GIMP GIMP uzorak GIMP minta Pola GIMP @@ -29893,35 +30958,39 @@ GIMP оюы GIMP 패턴 Deseń programu GIMP - Textura do GIMP + Textura do GIMP Шаблон GIMP Vzor aplikácie GIMP + Vzorec GIMP GIMP-mönster + GIMP deseni візерунок GIMP - GIMP 图案 - GIMP 樣式 + GIMP 图案 + GIMP 樣式 - + XFig image + XFig-beeld صورة XFig - Vyjava XFig + Vyjava XFig Изображение — XFig imatge de XFig obrázek XFig XFig-billede XFig-Bild Εικόνα XFig - XFig image + XFig image XFig-bildo imagen de XFig XFig irudia XFig-kuva XFig mynd image XFig + imagjin XFig íomhá XFig imaxe de XFig תמונת XFig @@ -29942,7 +31011,7 @@ imatge XFig Obraz XFig imagem XFig - Imagem do XFig + Imagem do XFig Imagine XFig Изображение XFig Obrázok XFig @@ -29953,17 +31022,18 @@ XFig görüntüsü зображення XFig Ảnh XFig - XFig 图像 - XFig 影像 + XFig 图像 + XFig 影像 - + XPM image + XPM-beeld صورة XPM - Vyjava XPM + Vyjava XPM Изображение — XPM imatge XPM obrázek XPM @@ -29971,13 +31041,14 @@ XPM-billede XPM-Bild Εικόνα XPM - XPM image + XPM image XPM-bildo imagen XPM XPM irudia XPM-kuva XPM mynd image XPM + imagjin XPM íomhá XPM imaxe XPM תמונת XPM @@ -29997,7 +31068,7 @@ imatge XPM Obraz XPM imagem XPM - Imagem XPM + Imagem XPM Imagine XPM Изображение XPM Obrázok XPM @@ -30008,21 +31079,22 @@ XPM görüntüsü зображення XPM Ảnh XPM - XPM 图像 - XPM 影像 + XPM 图像 + XPM 影像 XPM X PixMap - + X window image + X window-beeld صورة X window X window rəsmi - Vyjava vakna X + Vyjava vakna X Изображение — X Window imatge de X window obrázek X window @@ -30030,13 +31102,14 @@ X-billede X-Window-Bild Εικόνα περιβάλλοντος X - X window image + X window image bildo de X window imagen de ventana de X X window irudia X-ikkunakuva X vindeyga mynd image X window + imagjin X window íomhá X-windows imaxe de X Window תמונת חלון של X @@ -30057,7 +31130,7 @@ imatge X window Obraz X Window imagem de janela X - Imagem de janela do X + Imagem de janela do X Imagine X window Изображение X window Obrázok X window @@ -30068,28 +31141,30 @@ X pencere görüntüsü зображення X window Ảnh cửa sổ X - X Window 图像 - X window 影像 + X Window 图像 + X window 影像 block device + bloktoestel جهاز كتلي preséu de bloques - blokavaja pryłada + blokavaja pryłada Блоково устройство dispositiu de blocs blokové zařízení blokenhed Blockorientiertes Gerät Συσκευή block - block device + block device bloka disponaĵo dispositivo de bloques bloke-gailua laitetiedosto blokka tóleind périphérique de blocs + dispositîf a blocs gléas bloc dispositivo de bloque התקן בלוק @@ -30110,7 +31185,7 @@ periferic de blòts Urządzenie blokowe dispositivo de bloco - Dispositivo de bloco + Dispositivo de bloco dispozitiv bloc Блочное устройство Blokové zariadenie @@ -30121,27 +31196,29 @@ blok aygıtı блоковий пристрій thiết bị khối - 块设备 - 區塊裝置 + 块设备 + 區塊裝置 character device + karaktertoestel جهاز حرفي preséu de caráuteres - znakavaja pryłada + znakavaja pryłada Символно устройство dispositiu de caràcters znakové zařízení tegnenhed Zeichenorientiertes Gerät Συσκευή χαρακτήρων - character device + character device signa disponaĵo dispositivo de caracteres karaktereen gailua merkkilaite stavatóleind périphérique de caractères + dispositîf a caratars gléas carachtar dispositivo de caracter התקן תכונה @@ -30162,7 +31239,7 @@ periferic de caractèrs Urządzenie znakowe dispositivo de caracteres - Dispositivo de caractere + Dispositivo de caractere dispozitiv caracter Символьное устройство Znakové zariadenie @@ -30173,27 +31250,29 @@ karakter aygıtı символьний пристрій thiết bị ký tự - 字符设备 - 字元裝置 + 字符设备 + 字元裝置 folder + gids مجلّد carpeta - kataloh + kataloh Папка carpeta složka mappe Ordner Φάκελος - folder + folder dosierujo carpeta karpeta kansio mappa dossier + cartele fillteán cartafol תיקייה @@ -30214,7 +31293,7 @@ dorsièr Katalog pasta - Pasta + Pasta dosar Папка Priečinok @@ -30225,28 +31304,30 @@ dizin тека thư mục - 文件夹 - 資料夾 + 文件夹 + 資料夾 pipe + pyp إنبوب - kanvejer + kanvejer Конвейер conducte roura datakanal Pipe Διοχέτευση - pipe + pipe dukto - tubería + canalización kanalizazioa putki rør tube + condot píopa tubería צינור @@ -30267,7 +31348,7 @@ tub Potok canal - Pipe + Pipe canal pipe Канал Rúra @@ -30278,27 +31359,29 @@ boru канал ống dẫn - 管道 - 管線 + 管道 + 管線 mount point + hegpunt نقطة الوصْل puntu de montaxe - punkt mantavańnia + punkt mantavańnia Точка на монтиране punt de muntatge přípojné místo monteringspunkt Einhängepunkt Σημείο προσάρτησης - mount point + mount point surmetingo punto de montaje muntatze-puntua liitospiste ísetingarpunkt point d'accès + pont di montaç pointe feistithe punto de montaxe נקודת עיגון @@ -30319,7 +31402,7 @@ punt d'accès Punkt montowania ponto de montagem - Ponto de montagem + Ponto de montagem loc montare Точка монтирования Miesto pripojenia @@ -30330,27 +31413,29 @@ bağlama noktası точка монтування điểm lắp - 挂载点 - 掛載點 + 挂载点 + 掛載點 socket + sok مقبس - sokiet + sokiet Гнездо sòcol socket sokkel Socket Υποδοχή - socket + socket kontaktoskatolo socket socketa pistoke sokkul connecteur réseau + socket soicéad socket נקודת חיבור @@ -30371,7 +31456,7 @@ connector ret Gniazdo tomada - Socket + Socket socket Сокет Soket @@ -30382,15 +31467,16 @@ soket сокет ổ cắm - 套接字 - socket + 套接字 + socket symbolic link + simboliese skakel وصلة رمزية enllaz simbólicu simvolik körpü - symbalnaja spasyłka + symbalnaja spasyłka Символна връзка enllaç simbòlic symbolický odkaz @@ -30398,13 +31484,14 @@ symbolsk henvisning Symbolische Verknüpfung Συμβολικός σύνδεσμος - symbolic link + symbolic link simbola ligilo enlace simbólico esteka sinbolikoa symbolinen linkki tykislig leinkja lien symbolique + colegament simbolic nasc siombalach ligazón simbólica קישור סימבולי @@ -30426,7 +31513,7 @@ ligam simbolic Dowiązanie symboliczne ligação simbólica - Ligação simbólica + Ligação simbólica legătură simbolică Символьная ссылка Symbolický odkaz @@ -30434,17 +31521,18 @@ Lidhje simbolike симболичка веза symbolisk länk - sembolik bağlantı + simgesel bağlantı символічне посилання liên kết tượng trưng - 符号链接 - 符號鏈結 + 符号链接 + 符號連結 mail delivery report + posafleweringverslag تقرير تسليم البريد poçt yollama raportu - rapart ab dastaŭcy pošty + rapart ab dastaŭcy pošty Отчет за пристигналата поща informe de lliurament de correu zpráva o doručení pošty @@ -30452,13 +31540,14 @@ postleveringsrapport E-Mail-Zustellungsbericht Αναφορά παράδοσης μηνύματος - mail delivery report + mail delivery report raporto pri transdono de retpoŝto informe de entrega de correo posta banaketako txostena viestin jakeluilmoitus post útberingarfrásøgn rapport de livraison de courriels + rapuart di consegne pueste tuairisc sheachadta r-phoist informe de entrega de correo דוח העברת דואר @@ -30479,7 +31568,7 @@ rapòrt de liurason de corrièrs electronics Raport z dostarczenia poczty relatório de entrega de email - Relatório de entrega de correspondência + Relatório de entrega de correspondência raport de trimitere email Отчёт о доставке сообщения Správa o doručení pošty @@ -30490,8 +31579,8 @@ posta iletim raporu звіт про доставку пошти thông báo phát thư - 邮件投递报告 - 郵件寄送回報 + 邮件投递报告 + 郵件寄送回報 @@ -30499,7 +31588,7 @@ mail disposition report تقرير ترتيب البريد poçt qayıtma raportu - rapart ab raźmiaščeńni pošty + rapart ab raźmiaščeńni pošty Отчет за състоянието на пощата informe de disposició de correu zpráva o předání pošty @@ -30507,13 +31596,14 @@ postdisponeringsrapport E-Mail-Übertragungsbericht Αναφορά διάθεσης μηνύματος - mail disposition report + mail disposition report raporto pri dispono de retpoŝto informe de disposición de correo posta joerako txostena viestin kuittausilmoitus post avhendingarfrásøgn rapport de disposition de courriels + rapuart di disposizion pueste tuairisc chóirithe r-phoist informe de disposición de correo דוח אספקת דואר @@ -30534,7 +31624,7 @@ rapòrt de disposicion de corrièrs electronics Raport z wysyłania poczty relatório de disposição de email - Relatório de disposição de correspondência + Relatório de disposição de correspondência confirmare primire email Отчёт о перемещении почты Správa o odovzdaní pošty @@ -30545,16 +31635,17 @@ posta silinme raporu звіт про розташування пошти thông báo chuyển nhượng thư - 邮件接收报告 - 郵件處置回報 + 邮件接收报告 + 郵件處置回報 reference to remote file + verwysing na afgeleë lêer مرجع إلى ملف بعيد uzaq fayla göstəriş - spasyłka da addalenaha fajłu + spasyłka da addalenaha fajłu Препратка към отдалечен файл referència a fitxer remot odkaz na vzdálený soubor @@ -30562,13 +31653,14 @@ reference til fjern fil Verweis auf entfernte Datei Αναφορά σε απομακρυσμένο αρχείο - reference to remote file + reference to remote file referenco al fora dosiero referencia a un archivo remoto erreferentzia urruneko fitxategiari viittaus etätiedostoon tilvísing til fjarfílu référence au fichier distant + riferiment a file rimot tagairt do chomhad cianda referencia a un ficheiro remoto התיחסות לקובץ מרוחק @@ -30589,7 +31681,7 @@ referéncia al fichièr distant Odwołanie do pliku zdalnego referência a um ficheiro remoto - Referência para arquivo remoto + Referência para arquivo remoto referință fișier la distanță Ссылка на удалённый файл Odkaz na vzdialený súbor @@ -30597,32 +31689,34 @@ Referim për tek file në distancë упута на удаљену датотеку referens till fjärrfil - uzaktaki dosyaya başvuru + uzaktaki dosyaya atıf посилання на віддалений файл tham chiếu đến tập tin ở xa - 到远程文件的引用 - 遠端檔案的參照 + 到远程文件的引用 + 遠端檔案的參照 Usenet news message + Usenet-nuusboodskap رسالة أخبار Usenet Usenet xəbərlər ismarışı - Navina Usenet + Navina Usenet Съобщение — Usenet missatge de notícies Usenet příspěvek do diskusních skupin Usenet Neges newyddion Usenet - Usenetnyhedsmeddelelse + Usenet-nyhedsmeddelelse Usenet-News-Nachricht Μήνυμα ομάδων συζητήσεων Usenet - Usenet news message + Usenet news message novaĵmesaĝo de Usenet mensaje de noticias de Usenet Usenet berrien mezua nyyssiviesti Usenet news boð message de groupe d'échange Usenet + messaç gnovis Usenet teachtaireacht nuachta Usenet mensaxes de noticias de Usenet הודעת חדשות של Usenet @@ -30643,7 +31737,7 @@ messatge de grop d'escambi Usenet Wiadomość grupy dyskusyjnej mensagem de notícias Usenet - Mensagem de notícias da Usenet + Mensagem de notícias da Usenet Mesaj Usenet de știri Новостное сообщение Usenet Príspevok do diskusných skupín Usenet @@ -30654,21 +31748,22 @@ Usenet haber iletisi повідомлення новин Usenet Thông điệp tin tức USENET - Usenet 新闻信 - Usenet 新聞訊息 + Usenet 新闻信 + Usenet 新聞訊息 - - - + + + partial email message + gedeeltelike e-posboodskap رسالة البريد الإلكتروني الجزئية qismi poçt ismarışı - niapoŭny list email + niapoŭny list email Част от електронно писмо missatge de correu electrònic parcial částečná e-mailová zpráva @@ -30676,12 +31771,13 @@ delvis postmeddelelse E-Mail-Nachrichtenfragment Τμηματικό ηλ. μήνυμα - partial email message + partial email message parta retpoŝta mesaĝo mensaje de correo electrónico parcial posta mezu partziala osittainen sähköpostiviesti message partiel de courriel + messaç e-mail parziâl teachtaireacht ríomhphoist neamhiomlán mensaxe de correo electrónico parcial מסר דוא״ל חלקי @@ -30702,7 +31798,7 @@ messatge parcial de corrièr electronic Częściowa wiadomość e-mail mensagem parcial de email - Mensagem de e-mail parcial + Mensagem de e-mail parcial mesaj de email parțial Фрагмент сообщения электронной почты Čiastočná e-mailová správa @@ -30713,28 +31809,30 @@ kısmi eposta iletisi часткове поштове повідомлення thư điện tử riêng phần - 部分电子邮件 - 部份電子郵件訊息 + 部分电子邮件 + 部份電子郵件訊息 email message + e-posboodskap رسالة البريد الإلكتروني - list email + list email Съобщение по електронната поща missatge de correu electrònic e-mailová zpráva postmeddelelse E-Mail-Nachricht Ηλ. μήνυμα - email message + email message retpoŝta mesaĝo mensaje de correo electrónico helbide elektronikoen mezua sähköpostiviesti t-post boð message de courriel + messaç e-mail teachtaireacht ríomhphoist mensaxe de correo electrónico הודעת דואר אלקטרוני @@ -30755,7 +31853,7 @@ messatge de corrièr electronic Wiadomość e-mail mensagem de email - Mensagem de e-mail + Mensagem de e-mail mesaj email Почтовое сообщение E-mailová správa @@ -30766,29 +31864,30 @@ eposta iletisi повідомлення email thư điện tử - 电子邮件 - 電子郵件內容 + 电子邮件 + 電子郵件內容 - - - - - - - - - - + + + + + + + + + + GNU mail message + GNU-posboodskap رسالة بريد جنو GNU poçt ismarışı - List GNU + List GNU Съобщение — GNU mail missatge de GNU mail zpráva GNU mail @@ -30796,13 +31895,14 @@ GNU-postmeddelelse GNU-Mail-Nachricht Μήνυμα αλληλογραφίας GNU - GNU mail message + GNU mail message mesaĝo de GNU mail mensaje de correo de GNU GNU posta mezua GNU-postiviesti GNU mail boð message de courriel GNU + messaç di pueste GNU teachtaireacht r-phoist GNU mensaxe de correo electrónico de GNU הודעת דואר של GNU @@ -30824,7 +31924,7 @@ messatge de corrièr electronic GNU Wiadomość pocztowa GNU mensagem de email GNU - Mensagem de e-mail GNU + Mensagem de e-mail GNU Mesaj GNU mail Почтовое сообщение GNU Správa GNU mail @@ -30835,58 +31935,63 @@ GNU posta iletisi поштове повідомлення GNU Thư điện tử của GNU - GNU mail 信件 - GNU 郵件訊息 + GNU mail 信件 + GNU 郵件訊息 IGES document + IGES-dokument Documentu IGES + Документ — IGES document IGES dokument IGES IGES-dokument IGES-Dokument - IGES document + IGES document documento IGES IGES dokumentua IGES-asiakirja document IGES + document IGES cáipéis IGES מסמך IGES IGES dokument IGES dokumentum - dokumen IGES + Dokumen IGES Documento IGES IGES құжаты IGES 문서 Dokument IGES - Documento IGES + Documento IGES Документ IGES Dokument IGES + Dokument IGES ИГЕС документ IGES-dokument IGES belgesi документ IGES - IGES 文档 - IGES 文件 + IGES 文档 + IGES 文件 IGES Initial Graphics Exchange Specification - - + + VRML document + VRML-dokument مستند VRML Documentu VRML VRML sənədi - Dakument VRML + Dakument VRML Документ — VRML document VRML dokument VRML @@ -30894,13 +31999,14 @@ VRML-dokument VRML-Dokument Έγγραφο VRML - VRML document + VRML document VRML-dokumento documento VRML VRML dokumentua VRML-asiakirja VRML skjal document VRML + document VRML cáipéis VRML documento VRML מסמך VRML @@ -30921,7 +32027,7 @@ document VRML Dokument VRML documento VRML - Documento VRML + Documento VRML Document VRML Документ VRML Dokument VRML @@ -30932,14 +32038,14 @@ VRML belgesi документ VRML Tài liệu VRML - VRML 文档 - VRML 文件 + VRML 文档 + VRML 文件 VRML Virtual Reality Modeling Language - + @@ -30947,9 +32053,10 @@ message in several formats + boodskap in verskeie formate رسالة في عدة صيغ verici formatlarında ismarış - paviedamleńnie ŭ niekalkich farmatach + paviedamleńnie ŭ niekalkich farmatach Съобщение в няколко формата missatge en diversos formats zpráva v několika formátech @@ -30957,13 +32064,14 @@ meddelelse i flere formater Nachricht in mehreren Formaten Μήνυμα σε διάφορες μορφές - message in several formats + message in several formats mesaĝo en pluraj formatoj mensaje en varios formatos hainbat formatuko mezua viesti useissa muodoissa boð í fleiri sniðum message en formats divers + messaç in diviers formâts teachtaireacht i bhformáidí éagsúla mensaxe en varios formatos הודעה במספר תבניות @@ -30974,7 +32082,7 @@ Messaggio in diversi formati いくつかの形式でのメッセージ бірнеше пішімдегі мәлімдеме - 여러가지 형식의 메시지 + 여러 가지 형식의 메시지 laiškas keletu formatų ziņojums dažādos formātos Mesej dalam beberapa format @@ -30984,7 +32092,7 @@ messatge en formats divèrses Wiadomość w wielu formatach mensagem em vários formatos - Mensagem em vários formatos + Mensagem em vários formatos mesaj în diferite formate Сообщение в нескольких форматах Správa v niekoľkých formátoch @@ -30995,14 +32103,15 @@ farklı biçimlerde ileti повідомлення у кількох форматах thông điệp có vài định dạng - 各种格式的信件 - 多種格式的訊息 + 各种格式的信件 + 多種格式的訊息 Macintosh AppleDouble-encoded file + Macintosh AppleDouble-geënkodeerde lêer ملف Macintosh AppleDouble مشفر Macintosh AppleDouble-kodlanmış fayl - Fajł Macintosh, AppleDouble-zakadavany + Fajł Macintosh, AppleDouble-zakadavany Файл — кодиран с Macintosh AppleDouble fitxer codificat AppleDouble de Macintosh soubor kódovaný pomocí Macintosh AppleDouble @@ -31010,17 +32119,18 @@ Macintosh AppleDouble-kodet fil Macintosh-Datei (AppleDouble-kodiert) Αρχείο Macintosh κωδικοποίησης AppleDouble - Macintosh AppleDouble-encoded file + Macintosh AppleDouble-encoded file dosiero kodigita laŭ Macintosh AppleDouble archivo Macintosh codificado con AppleDouble Macintosh AppleDouble-rekin kodetutako fitxategia Macintosh AppleDouble -koodattu tiedosto Macintosh AppleDouble-bronglað fíla fichier codé Macintosh AppleDouble + file codificât in Macintosh AppleDouble comhad ionchódaithe le Macintosh AppleDouble ficheiro de Macintosh codificado con AppleDouble קובץ מסוג Macintosh AppleDouble-encoded - Macintosh AppleDouble-kodirana datoteka + Macintosh AppleDouble-kôdirana datoteka Macintosh AppleDouble kódolású fájl File codificate in AppleDouble de Macintosh Berkas tersandi Macintosh AppleDouble @@ -31037,7 +32147,7 @@ fichièr encodat Macintosh AppleDouble Zakodowany w AppleDouble plik Macintosh ficheiro codificado em AppleDouble de Macintosh - Arquivo do Macintosh codificado com AppleDouble + Arquivo do Macintosh codificado com AppleDouble Fișier codat Macintosh AppleDouble Файл, закодированный Macintosh AppleDouble Súbor kódovaný pomocou Macintosh AppleDouble @@ -31048,14 +32158,14 @@ Macintosh AppleDouble-şifreli dosyası файл закодований Macintosh AppleDouble Tập tin đã mã hoá Apple-Double của Macintosh - Macintosh AppleDouble 编码的文件 - Macintosh AppleDouble 編碼檔 + Macintosh AppleDouble 编码的文件 + Macintosh AppleDouble 編碼檔 message digest خلاصة الرسالة ismarış daycesti - digest paviedamleńniaŭ + digest paviedamleńniaŭ Извадка от съобщение recopilació de missatges přehled zpráv @@ -31063,13 +32173,14 @@ meddelelsessammendrag Nachrichtensammlung Περίληψη μηνύματος - message digest + message digest mesaĝaro recopilación de mensajes mezu laburra viestikokoelma boð samandráttur condensé de message + sunt di messaç achoimre theachtaireachtaí recompilación de mensaxe תקציר ההודעה @@ -31090,7 +32201,7 @@ condensé de messatge Wiadomość przetwarzania grupo de mensagens - Resumo de mensagem + Resumo de mensagem colecție mesaje email Дайджест сообщения Prehľad správ @@ -31098,17 +32209,18 @@ Shpërndarje mesazhesh гомила порука meddelandesamling - mesaj özeti + ileti özeti збірка повідомлень bản tóm tắt thông điệp - 信件摘要 - 訊息摘要 + 信件摘要 + 訊息摘要 encrypted message + geënkripteerde boodskap رسالة مشفرة şifrələnmiş ismarış - zašyfravanaje paviedamleńnie + zašyfravanaje paviedamleńnie Шифрирано съобщение missatge xifrat zašifrovaná zpráva @@ -31116,13 +32228,14 @@ krypteret meddelelse Verschlüsselte Nachricht Κρυπτογραφημένο μήνυμα - encrypted message + encrypted message ĉifrita mesaĝo mensaje cifrado - mezu enkriptatua + zifratutako mezua salattu viesti bronglað boð message chiffré + messaç cifrât teachtaireacht chriptithe mensaxe cifrado הודעה מוצפנת @@ -31143,7 +32256,7 @@ messatge chifrat Wiadomość zaszyfrowana mensagem encriptada - Mensagem criptografada + Mensagem criptografada mesaj criptat Зашифрованное сообщение Zašifrovaná správa @@ -31151,30 +32264,32 @@ Mesazh i kriptuar шифрована порука krypterat meddelande - şifrelenmiş mesaj + şifrelenmiş ileti шифроване повідомлення thông điệp đã mật mã - 加密信件 - 加密訊息 + 加密信件 + 加密訊息 compound documents + saamgestelde dokumente مستندات مركبة documentos compuestos - składanyja dakumenty + składanyja dakumenty Съставни документи documents compostos složené dokumenty sammensatte dokumenter Verbunddokumente Σύνθετα έγγραφα - compound documents + compound documents parentezaj dokumentoj documentos compuestos konposatutako dokumentuak yhdisteasiakirjat samansett skjøl documents composés + documents composcj cáipéisí comhshuite documentos compostos מסמכים מורכבים @@ -31195,7 +32310,7 @@ documents compausats Dokumenty złożone documentos compostos - Documentos compostos + Documentos compostos documente compuse Составные документы Zložené dokumenty @@ -31203,18 +32318,19 @@ dokumente të përbërë сједињени документи sammansatta dokument - birleşik belgeleri + bileşik belgeler складні документи tài liệu ghép - 组合文档 - 複合文件 + 组合文档 + 複合文件 compound document + saamgestelde dokument مستند مركب documentu compuestu birləşik sənəd - składany dakument + składany dakument Съставен документ document compost složený dokument @@ -31222,13 +32338,14 @@ sammensat dokument Verbunddokument Σύνθετο έγγραφο - compound document + compound document parenteza dokumento documento compuesto konposatutako dokumentua yhdisteasiakirja samansett skjal document composé + document compost cáipéis comhshuite documento composto מסמך מורכב @@ -31249,7 +32366,7 @@ document compausat Dokument złożony documento composto - Documento composto + Documento composto document compus Составной документ Zložený dokument @@ -31260,14 +32377,14 @@ bileşik belge складний документ tài liệu ghép - 组合文档 - 複合文件 + 组合文档 + 複合文件 mail system report تقرير نظام البريد poçt sistemi raportu - rapart paštovaj systemy + rapart paštovaj systemy Отчет за пощенската система informe de sistema de correu zpráva poštovního systému @@ -31275,13 +32392,14 @@ postsystemrapport E-Mail-Systembericht Αναφορά συστήματος ηλ. ταχυδρομείου - mail system report + mail system report raporto de retpoŝta sistemo informe del sistema de correo posta sistemako txostena viestijärjestelmän ilmoitus postkervisfrásøgn rapport système de courriels + rapuart di sisteme de pueste tuairisc chórais r-phoist informe do sistema de correo דו״ח של מערכת הדואר @@ -31302,7 +32420,7 @@ rapòrt sistèma de corrièrs electronics Raport systemu pocztowego relatório de sistema de email - Relatório do sistema de correspondência + Relatório do sistema de correspondência raport sistem email Отчёт почтовой системы Správa poštového systému @@ -31313,14 +32431,15 @@ posta sistem raporu звіт поштової системи thông báo hệ thống thư - 邮件系统报告 - 郵件系統回報 + 邮件系统报告 + 郵件系統回報 signed message + getekende boodskap رسالة موقّعة imzalanmış ismarış - padpisanaje paviedamleńnie + padpisanaje paviedamleńnie Подписано съобщение missatge signat podepsaná zpráva @@ -31328,13 +32447,14 @@ signeret meddelelse Signierte Nachricht Υπογεγραμμένο μήνυμα - signed message + signed message pruvita mesaĝo mensaje firmado sinatutako mezua allekirjoitettu viesti undirskrivað boð message signé + messaç firmât teachtaireacht sínithe mensaxe firmado הודעה חתומה @@ -31355,7 +32475,7 @@ messatge signat Podpisana wiadomość mensagem assinada - Mensagem assinada + Mensagem assinada mesaj semnat Подписанное сообщение Podpísaná správa @@ -31366,26 +32486,27 @@ imzalı ileti підписане повідомлення thông điệp đã ký - 签名信件 - 簽署的訊息 + 签名信件 + 已簽署的訊息 stream of data (server push) دفق بيانات (دفع خادم) - płyń źviestak (ad servera) - Поток от данни, от страна на сървър + płyń źviestak (ad servera) + Поток от данни — пратени от сървър flux de dades (enviat pel servidor) proud dat (posílaný serverem) datastrøm (serverskubbet) Datenstrom (Server-Push) Ροή δεδομένων (στελλόμενα από διακομιστή) - stream of data (server push) + stream of data (server push) datumstrio (puŝata per servilo) flujo de datos (por iniciativa del servidor) datu-korrontea (zerbitzari igortzailea) tietovirta (palvelin työntää) streymur av dáta (ambætara skump) flux de données (émis par le serveur) + flus di dâts (pe iniziative dal servidôr) sruth sonraí (brú freastalaí) fluxo de datos (por iniciativa do servidor) מידע בזרימה (דחיפה ע״י השרת) @@ -31406,7 +32527,7 @@ flux de donadas (emés pel servidor) Strumień danych (wymuszenie serwera) fluxo de dados (empurrados pelo servidor) - Fluxo de dados (por iniciativa do servidor) + Fluxo de dados (por iniciativa do servidor) flux de date (de la server) Поток данных (server push) Prúd dát (posielaný serverom) @@ -31417,26 +32538,28 @@ veri akışı (sunucudan gönderilen) потік даних (від сервера) luồng dữ liệu (trình phục vụ đẩy) - 数据流(服务器推送) - 資料串流 (server push) + 数据流(服务器推送) + 資料串流 (server push) VCS/ICS calendar + VCS/ICS-kalender سجل VCS/ICS - Kalandar VCS/ICS + Kalandar VCS/ICS Календар — VCS/ICS calendari VCS/ICS kalendář VCS/ICS VCS/ICS-kalender VCS/ICS-Kalender Ημερολόγιο VCS/ICS - VCS/ICS calendar + VCS/ICS calendar VCS/ICS-kalendaro calendario VCS/ICS VCS/ICS egutegia VCS/ICS-kalenteri VCS/ICS kalendari calendrier VCS/ICS + calendari VCS/ICS féilire VCS/ICS Calendario VCS/ICS לוח שנה VCS/ICS @@ -31456,7 +32579,7 @@ calendièr VCS/ICS Kalendarz VCS/ICS calendário VCS/ICS - Calendário VCS/ICS + Calendário VCS/ICS Calendar VCS/ICS Календарь VCS/ICS Kalendár VCS/ICS @@ -31467,37 +32590,39 @@ VCS/ICS takvimi календар VCS/ICS Lịch VCS/ICS - VCS/ICS 日历 - VCS/ICS 行事曆 + VCS/ICS 日历 + VCS/ICS 行事曆 VCS/ICS vCalendar/iCalendar - - + + CSS stylesheet + CSS-stylblad نمط CSS - Arkuš stylaŭ CSS + Arkuš stylaŭ CSS Стилове — CSS llista d'estil CSS stylopis CSS CSS-stilark CSS-Stilvorlage Φύλλο στυλ CSS - CSS stylesheet + CSS stylesheet CSS-stilfolio hoja de estilos CSS CSS estilo-orria CSS-tyylitiedosto CSS sniðark feuille de style CSS + sfuei di stîl CSS stílbhileog CSS folla de estilos CSS גליון עיצוב CSS @@ -31518,7 +32643,7 @@ fuèlh d'estil CSS Arkusz stylów CSS folha de estilos CSS - Folha de estilo CSS + Folha de estilo CSS Pagină de stil CSS Таблица стилей CSS Štýly CSS @@ -31529,8 +32654,8 @@ CSS stil kağıdı таблиця стилів CSS Tờ kiểu dáng CSS - CSS 样式表 - CSS 樣式表 + CSS 样式表 + CSS 樣式表 CSS Cascading Style Sheets @@ -31538,21 +32663,23 @@ electronic business card + elektroniese beskigheidskaartjie بطاقة أعمال إلكترونية - elektronnaja biznes-kartka + elektronnaja biznes-kartka Електронна визитна картичка targeta de visita electrònica elektronická navštívenka elektronisk visitkort Elektronische Visitenkarte Ηλεκτρονική επαγγελματική κάρτα - electronic business card + electronic business card elektronika vizitkarto tarjeta de visita electrónica enpresako txartel elektronikoa sähköinen käyntikortti elektroniskt handilskort carte de visite électronique + biliet di visite eletronic cárta gnó leictreonach tarxeta de negocio electrónica כרטיס ביקור אלקטרוני @@ -31571,7 +32698,7 @@ carta de visita electronica Wizytówka elektroniczna cartão de visita eletrónico - Cartão de visitas eletrônico + Cartão de visitas eletrônico carte de vizită electronică Электронная визитная карточка Elektronická vizitka @@ -31582,14 +32709,14 @@ elektronik iş kartı електронна бізнес-картка danh thiếp điện tử - 电子商务卡 - 電子商務名片 + 电子商务卡 + 電子商務名片 - - + + @@ -31598,17 +32725,20 @@ Turtle document + Turtle-dokument Documentu Turtle + Документ — Turtle document Turtle dokument Turtle Turtle-dokument Turtle-Dokument Έγγραφο Turtle - Turtle document + Turtle document documento de Turtle Turtle dokumentua Turtle-asiakirja document Turtle + document Turtle cáipéis Turtle מסמך Turtle Turtle dokument @@ -31621,43 +32751,46 @@ document Turtle Dokument Turtle documento Turtle - Documento Turtle + Documento Turtle Документ Turtle Dokument Turtle + Dokument Turtle Тартл документ Turtle-dokument Turtle belgesi документ Turtle - Turtle 文档 - Turtle 文件 + Turtle 文档 + Turtle 文件 txt2tags document + txt2tags-dokument مستند txt2tags Documentu txt2tags - dakument txt2tags + dakument txt2tags Документ — txt2tags document txt2tags dokument txt2tags txt2tags-dokument txt2tags-Dokument Έγγραφο txt2tags - txt2tags document + txt2tags document txt2tags-dokumento documento txt2tags txt2tags dokumentua txt2tags-asiakirja txt2tags skjal document txt2tags + document txt2tags cáipéis txt2tags documento txt2tags מסמך txt2tags txt2tags dokument txt2tags dokumentum Documento txt2tags - Dokumen txt2tags + dokumen txt2tags Documento txt2tags txt2tags ドキュメント txt2tags დოკუმენტი @@ -31671,7 +32804,7 @@ document txt2tags Dokument txt2tags documento txt2tags - Documento do txt2tags + Documento do txt2tags document txt2tags Документ txt2tags Dokument txt2tags @@ -31682,29 +32815,31 @@ txt2tags belgesi документ txt2tags tài liệu txt2tags - txt2tags 文档 - txt2tags 文件 + txt2tags 文档 + txt2tags 文件 - - + + Verilog source code + Verilog-bronkode Изходен код — Verilog codi font en Verilog zdrojový kód v jazyce Verilog Verilog-kildekode Verilog-Quelltext Πηγαίος κώδικας Verilog - Verilog source code + Verilog source code Verilog-fontkodo código fuente en Verilog Verilog iturburu-kodea Verilog-lähdekoodi code source Verilog + codiç sorzint Verilog cód foinseach Verilog código fonte en Verilog קוד מקור של @@ -31721,7 +32856,7 @@ còde font Verilog Kod źródłowy Verilog código origem Verilog - Código-fonte Verilog + Código-fonte Verilog Исходный код Verilog Zdrojový kód Verilog Datoteka izvorne kode Verilog @@ -31729,24 +32864,25 @@ Verilog-källkod Verilog kaynak kodu вихідний код мовою Verilog - Verilog 源代码 - Verilog 源碼 + Verilog 源代码 + Verilog 源碼 SystemVerilog header Заглавен файл — SystemVerilog - capçalera de SystemVerilog + capçalera en SystemVerilog záhlaví SystemVerilog SystemVerilog-teksthoved SystemVerilog-Header Κεφαλίδα SystemVerilog - SystemVerilog header + SystemVerilog header cabeceras de SystemVerilog SystemVerilog goiburua SystemVerilog-otsake en-tête + intestazion SystemVerilog ceanntásc SystemVerilog Cabeceiras de SystemVerilog כותרת SystemVerilog @@ -31763,7 +32899,7 @@ entèsta SystemVerilog Nagłówek SystemVerilog cabeçalho SystemVerilog - Cabeçalho de SystemVerilog + Cabeçalho de SystemVerilog Заголовочный файл SystemVerilog Hlavičky SystemVerilog Datoteka glave SystemVerilog @@ -31771,24 +32907,26 @@ SystemVerilog-headerfil SystemVerilog başlığı заголовки SystemVerilog - SystemVerilog 头文件 - SystemVerilog 標頭 + SystemVerilog 头文件 + SystemVerilog 標頭 SystemVerilog source code + SystemVerilog-bronkode Изходен код — SystemVerilog codi font en SystemVerilog zdrojový kód SystemVerilog SystemVerilog-kildekode SystemVerilog-Quelltext Πηγαίος κώδικας SystemVerilog - SystemVerilog source code + SystemVerilog source code código fuente en SystemVerilog SystemVerilog iturburu-kodea SystemVerilog-lähdekoodi code source + codiç sorzint SystemVerilog cód foinseach SystemVerilog código fonte en SystemVerilog קוד מקור של SystemVerilog @@ -31805,7 +32943,7 @@ còde font SystemVerilog Kod źródłowy SystemVerilog código origem SystemVerilog - Código-fonte de SystemVerilog + Código-fonte de SystemVerilog Исходный код SystemVerilog Zdrojový kód SystemVerilog Datoteka izvorne kode SystemVerilog @@ -31813,25 +32951,27 @@ SystemVerilog-källkod SystemVerilog kaynak kodu вихідний файл мовою SystemVerilog - SystemVerilog 源代码 - SystemVerilog 源碼 + SystemVerilog 源代码 + SystemVerilog 源碼 VHDL source code + VHDL-bronkode Изходен код — VHDL codi font en VHDL zdrojový kód v jazyce VHDL VHDL-kildekode VHDL-Quelltext Πηγαίος κώδικας VHDL - VHDL source code + VHDL source code VHDL-fontkodo código fuente en VHDL VHDL iturburu-kodea VHDL-lähdekoodi code source VHDL + codiç sorzint VHDL cód foinseach VHDL código fonte en VHDL קוד מקור של VHDL @@ -31848,7 +32988,7 @@ còde font VHDL Kod źródłowy VHDL código origem VHDL - Código-fonte VHDL + Código-fonte VHDL Исходный код VHDL Zdrojový kód VHDL Datoteka izvorne kode VHDL @@ -31856,8 +32996,8 @@ VHDL-källkod VHDL kaynak kodu вихідний код мовою VHDL - VHDL 源代码 - VHDL 源碼 + VHDL 源代码 + VHDL 源碼 VHDL Very-High-Speed Integrated Circuit Hardware Description Language @@ -31866,10 +33006,11 @@ enriched text document + verrykte teksdokument مستند نصي مغنى documentu de testu arriquecíu zəngin mətn sənədi - azdobleny tekstavy dakument + azdobleny tekstavy dakument Документ с обогатен текст document de text enriquit rozšířený textový dokument @@ -31877,13 +33018,14 @@ beriget tekstdokument Angereichertes Textdokument Έγγραφο εμπλουτισμένου κειμένου - enriched text document + enriched text document riĉigita teksta dokumento documento de texto enriquecido aberastutako testu dokumentua rikastettu tekstiasiakirja ríkað tekstskjal document texte enrichi + document di test inricjît cáipéis téacs saibhrithe documento de texto enriquecido מסמך טקסט מועשר @@ -31904,7 +33046,7 @@ document tèxte enriquit Wzbogacony dokument tekstowy documento de texto rico - Documento de texto enriquecido + Documento de texto enriquecido document text îmbogățit Форматированный текстовый документ Rozšírený textový dokument @@ -31915,15 +33057,16 @@ zenginleştirilmiş metin belgesi форматований текстовий документ tài liệu văn bản có kiểu dáng - 浓缩文本文档 (ETF) - 豐富化文字文件 + 浓缩文本文档 (ETF) + 豐富化文字文件 help page + hulpbladsy صفحة المساعدة yardım səhifəsi - staronka dapamohi + staronka dapamohi Страница от помощта pàgina d'ajuda stránka nápovědy @@ -31931,13 +33074,14 @@ hjælpeside Hilfeseite Σελίδα βοήθειας - help page + help page help-paĝo página de ayuda laguntzako orria ohjesivu hjálparsíða page d'aide + pagjine di jutori leathanach cabhrach páxina de axuda דף עזרה @@ -31958,7 +33102,7 @@ pagina d'ajuda Strona pomocy página de ajuda - Página de ajuda + Página de ajuda pagină de ajutor Страница справки Stránka Pomocníka @@ -31969,27 +33113,29 @@ yardım sayfası сторінка довідки trang trợ giúp - 帮助页面 - 求助頁面 + 帮助页面 + 求助頁面 plain text document + skoonteksdokument مستند نصي مجرد documentu de testu planu - prosty tekstavy dakument + prosty tekstavy dakument Документ с неформатиран текст document de text pla prostý textový dokument rent tekstdokument Einfaches Textdokument Έγγραφο απλού κειμένου - plain text document + plain text document plata teksta dokumento documento de texto sencillo testu soileko dokumentua perustekstiasiakirja document texte brut + document di test sempliç cáipéis ghnáth-théacs documento de texto sinxelo מסמך טקסט פשוט @@ -32010,7 +33156,7 @@ document tèxte brut Zwykły dokument tekstowy documento em texto simples - Documento de Texto + Documento de Texto document text simplu Текстовый документ Obyčajný textový dokument @@ -32021,11 +33167,11 @@ düz metin belgesi звичайний текстовий документ tài liệu nhập thô - 纯文本文档 - 純文字文件 + 纯文本文档 + 純文字文件 - - + + @@ -32033,21 +33179,23 @@ RDF file + RDF-lêer ملف RDF - Fajł RDF + Fajł RDF Файл — RDF fitxer RDF soubor RDF RDF-fil RDF-Datei Αρχείο RDF - RDF file + RDF file RDF-dosiero archivo RDF RDF fitxategia RDF-tiedosto RDF fíla fichier RDF + file RDF comhad RDF ficheiro RDF קובץ RDF @@ -32067,7 +33215,7 @@ fichièr RDF Plik RDF ficheiro RDF - Arquivo RDF + Arquivo RDF Fișier RDF Файл RDF Súbor RDF @@ -32078,8 +33226,8 @@ RDF dosyası файл RDF Tập tin RDF - RDF 文件 - RDF 檔 + RDF 文件 + RDF 檔 RDF Resource Description Framework @@ -32089,17 +33237,55 @@ + + reStructuredText document + reStructuredText-dokument + Документ — reStructuredText + document reStructuredText + dokument reStructuredText + reStructuredText-dokument + reStructuredText-Dokument + reStructuredText document + documento en reStructuredText + reStructuredText document + reStructuredText-asiakirja + document reStructuredText + document reStructuredText + cáipéis reStructuredText + reStructuredText dokument + reStructuredText dokumentum + dokumen reStructuredText + Documento reStructuredText + reStructuredText құжаты + reStructuredText 문서 + Dokument reStructuredText + Documento reStructuredText + Документ reStructuredText + Dokument reStructuredText + Dokument reStructuredText + reStructuredText-dokument + reStructuredText belgesi + документ reStructuredText + reStructuredText 文档 + reStructuredText 文件 + + + OWL XML file + OWL XML-lêer + Файл — OWL XML fitxer XML OWL soubor OWL XML OWL XML-fil OWL-XML-Datei Αρχείο OWL XML - OWL XML file + OWL XML file archivo en XML OWL OWL XML fitxategia + OWL XML -tiedosto fichier XML OWL + file OWL XML comhad XML OWL OWL XML datoteka OWL XML-fájl @@ -32111,21 +33297,22 @@ fichièr OWL XML Plik XML OWL ficheiro OWL XML - Arquivo OWL XML + Arquivo OWL XML Файл XML OWL Súbor XML OWL + Datoteka OWL XML ОВЛ ИксМЛ датотека OWL XML-fil OWL XML dosyası файл XML OWL - OWL XML 文件 - OWL XML 檔案 + OWL XML 文件 + OWL XML 檔案 OWL Web Ontology Language - + @@ -32133,7 +33320,7 @@ email headers ترويسة البريد الإلكتروني epoçt başlıqları - paštovyja zahałoŭki + paštovyja zahałoŭki Заглавни части на електронни писма capçaleres de correu electrònic záhlaví e-mailu @@ -32141,13 +33328,14 @@ posthoveder E-Mail-Kopfzeilen Κεφαλίδες ηλ. μηνυμάτων - email headers + email headers retpoŝtaj ĉapoj cabeceras de correo electrónico helbide elektronikoen goiburuak sähköpostiotsakkeet t-post tekshøvd en-têtes de courriel + intestazions e-mail ceanntásca ríomhphoist cabeceiras de correo electrónico כותרת דוא״ל @@ -32168,7 +33356,7 @@ entèstas de corrièr electronic Nagłówki wiadomości e-mail cabeçalhos de email - Cabeçalhos de e-mail + Cabeçalhos de e-mail antete email Почтовые заголовки Hlavičky e-mailu @@ -32179,16 +33367,17 @@ eposta başlığı заголовки email dòng đầu thư điện tử - 电子邮件头 - 電子郵件標頭 + 电子邮件头 + 電子郵件標頭 rich text document + rykteksdokument مستند نصي غني documentu de testu ricu zəngin mətn sənədi - azdobleny tekstavy dakument + azdobleny tekstavy dakument Документ — rich text document de text enriquit textový dokument RTF @@ -32196,12 +33385,13 @@ richtekstdokument RTF-Textdokument Έγγραφο εμπλουτισμένου κειμένου (RTF) - rich text document + rich text document riĉteksta dokumento documento de texto enriquecido aberastutako testu formatua RTF-asiakirja document « rich text » + document rich text cáipéis mhéith-théacs documento do texto enriquecido מסמך טקסט עשיר @@ -32222,7 +33412,7 @@ document « rich text » Dokument Rich Text documento em texto rico - Documento rich text + Documento rich text document text îmbogățit Документ с форматированным текстом Textový dokument RTF @@ -32233,27 +33423,29 @@ zengin metin belgesi форматований текстовий документ tài liệu văn bản có kiểu dáng (RTF) - 富文本文档 (RTF) - 豐富文字文件 + 富文本文档 (RTF) + 豐富文字文件 (RTF) RSS summary + RSS-opsomming ملخص RSS - Karotki ahlad RSS + Karotki ahlad RSS Обобщение за сайтове — RSS resum RSS souhrn RSS RSS-sammendrag RSS-Zusammenfassung Σύνοψη RSS - RSS summary - resumen de RSS + RSS summary + suministro RSS RSS laburpena RSS-tiivistelmä RSS samandráttur résumé RSS + somari RSS achoimre RSS Resumo RSS תקציר RSS @@ -32273,7 +33465,7 @@ resumit RSS Podsumowanie RSS resumo RSS - Resumo RSS + Resumo RSS Rezumat RSS Сводка RSS Súhrn RSS @@ -32284,8 +33476,8 @@ RSS özeti зведення сайту RSS Bản tóm tắt RSS - RSS 摘要 - RSS 摘要 + RSS 摘要 + RSS 摘要 RSS RDF Site Summary @@ -32293,25 +33485,26 @@ - - + + Atom syndication feed مروج تغذية Atom - Syndykacyjny kanał navinaŭ Atom + Syndykacyjny kanał navinaŭ Atom Емисия — Atom canal de sindicació Atom kanál Atom - Atom syndication-feed + Atom-syndikeringsfeed Atom-Nachrichtenquelle Τροφοδοσία διανομής Atom - Atom syndication feed - canal de noticias Atom + Atom syndication feed + suministro de sindicación Atom Atom harpidetze-iturria Atom-yhdistevirta fil de syndication Atom + canâl di notiziis Atom fotha sindeacáitithe Atom fonte de sindicación Atom הזנה דרך הרשת של Atom @@ -32331,7 +33524,7 @@ fial de sindicacion Atom Kanał Atom feed Atom - Fonte de notícias Atom + Fonte de notícias Atom Flux agregare Atom Лента новостей Atom Kanál Atom @@ -32342,31 +33535,32 @@ Atom besleme kaynağı трансляція подач Atom Nguồn tin tức Atom - Atom 聚合种子 - Atom 聯合供稿饋流 + Atom 聚合种子 + Atom 聯合供稿饋流 - + OPML syndication feed مروج تغذية OPML - Syndykacyjny kanał OPML + Syndykacyjny kanał OPML Емисия — OPML canal de sindicació OPML kanál OPML OPML-syndikeringsfeed OPML-Nachrichtenquelle Τροφοδοσία OPML - OPML syndication feed - canal de noticias OPML + OPML syndication feed + suministro de sindicación OPML OPML harpidetze-iturria OPML-yhdistevirta fil de syndication OPML + canâl di notiziis OPML fotha sindeacáitithe OPML fonte de sindicación OPML הזנה דרך הרשת OPML @@ -32386,7 +33580,7 @@ fial de sindicacion OPML Kanał OPML feed OPML - Fonte de notícias OPML + Fonte de notícias OPML Flux OPML syndication Лента новостей OPML Kanál OPML @@ -32397,21 +33591,22 @@ OPML besleme kaynağı трансляція подач OPML Nguồn tin tức OPML - OPML 聚合种子 - OPML 聯合供稿饋流 + OPML 聚合种子 + OPML 聯合供稿饋流 - + SGML document + SGML-dokument مستند SGML Documentu SGML - Dakument SGML + Dakument SGML Документ — SGML document SGML dokument SGML @@ -32419,13 +33614,14 @@ SGML-dokument SGML-Dokument Έγγραφο SGML - SGML document + SGML document SGML-dokumento documento SGML SGML dokumentua SGML-asiakirja SGML skjal document SGML + document SGML cáipéis SGML documento SGML מסמך SGML @@ -32446,7 +33642,7 @@ document SGML Dokument SGML documento SGML - Documento SGML + Documento SGML Document SGML Документ SGML Dokument SGML @@ -32457,8 +33653,8 @@ SGML belgesi документ SGML Tài liệu SGML - SGML 文档 - SGML 文件 + SGML 文档 + SGML 文件 SGML Standard Generalized Markup Language @@ -32469,19 +33665,20 @@ spreadsheet interchange document مستند تبادل الجدول documentu d'intercambéu de fueyes de cálculu - dakument dla abmienu raźlikovymi arkušami - Документ за обмяна между програми за електронни таблици + dakument dla abmienu raźlikovymi arkušami + Документ — обмяна между електронни таблици document d'intercanvi de full de càlcul sešitový výměnný dokument regnearksudvekslingsdokument Tabellenkalkulations-Austauschdokument Έγγραφο ανταλλαγής λογιστικού φύλλου - spreadsheet interchange document - documento de intercambio de hojas de cálculo + spreadsheet interchange document + documento de intercambio de hoja de cálculo kalkulu-orriak trukatzeko dokumentua taulukkovälitysasiakirja rokniarks umbýtisskjal document d'échange de feuilles de calcul + document di interscambi par sfuei di calcul cáipéis idirmhalartaithe scarbhileog documento de intercambio de follas de cálculo מסמך גליון נתונים מתחלף @@ -32501,7 +33698,7 @@ document d'escambi de fuèlhs de calcul Dokument wymiany arkuszy kalkulacyjnych documento de troca interna de folhas de cálculo - Documento de intercâmbio de planilhas + Documento de intercâmbio de planilhas document schimb filă de calcul Документ Spreadsheet Interchange Zošitový prenosový dokument @@ -32509,35 +33706,37 @@ Dokument shkëmbimi për fletë llogaritje документ размене табеле spreadsheet interchange-dokument - hesap tablosu değişim belgesi + hesap çizelgesi değişim belgesi документ обміну ел. таблицями tài liệu hoán đổi bảng tính - 电子表格交换文档 - 試算表交換文件 + 电子表格交换文档 + 試算表交換文件 - + TSV document + TSV-dokument مستند TSV Documentu TSV - Dakument TSV + Dakument TSV Документ — TSV document TSV dokument TSV TSV-dokument TSV-Dokument Έγγραφο TSV - TSV document + TSV document documento TSV TSV dokumentua TSV-asiakirja TSV skjal document TSV + document TSV cáipéis TSV documento TSV מסמך TSV @@ -32557,7 +33756,7 @@ document TSV Dokument TSV documento TSV - Documento TSV + Documento TSV Document TSV Документ TSV Dokument TSV @@ -32568,8 +33767,8 @@ TSV belgesi документ TSV Tài liệu TSV - TSV 文档 - TSV 文件 + TSV 文档 + TSV 文件 TSV Tab Separated Values @@ -32577,6 +33776,7 @@ Graphviz DOT graph + Graphviz DOT-grafiek مبيان Graphviz DOT Граф — Graphviz DOT gràfic Graphviz DOT @@ -32584,12 +33784,13 @@ Graphviz DOT-graf Graphviz-DOT-Graph Γράφημα Graphviz DOT - Graphviz DOT graph + Graphviz DOT graph gráfico de Graphviz DOT Graphviz DOT grafikoa Graphviz DOT -graafi Graphviz DOT ritmynd graphe Graphviz DOT + grafic Graphviz DOT graf DOT Graphviz gráfica DOT de Graphviz תרשים של Graphviz DOT @@ -32607,7 +33808,7 @@ graf Graphviz DOT Wykres DOT Graphviz gráfico Graphviz DOT - Gráfico do Graphviz DOT + Gráfico do Graphviz DOT Grafic Graphviz DOT Диаграмма Graphviz DOT Graf Graphviz DOT @@ -32617,36 +33818,38 @@ Graphviz DOT grafiği граф DOT Graphviz Biểu đồ DOT Graphviz - Graphviz DOT 图形 - Graphviz DOT 圖 + Graphviz DOT 图形 + Graphviz DOT 圖表 - - - - + + + + JAD document + JAD-dokument مستند JAD Documentu JAD - Dakument JAD + Dakument JAD Документ — JAD document JAD dokument JAD JAD-dokument JAD-Dokument Έγγραφο JAD - JAD document + JAD document JAD-dokumento documento JAD JAD dokumentua JAD-asiakirja JAD skjal document JAD + document JAD cáipéis JAD documento JAD מסמך JAD @@ -32666,7 +33869,7 @@ document JAD Dokument JAD documento JAD - Documento JAD + Documento JAD Document JAD Документ JAD Dokument JAD @@ -32677,21 +33880,22 @@ JAD belgesi документ JAD Tài liệu JAD - JAD 文档 - JAD 文件 + JAD 文档 + JAD 文件 JAD Java Application Descriptor - + WML document + WML-dokument مستند WML Documentu WML WML sənədi - Dakument WML + Dakument WML Документ — WML document WML dokument WML @@ -32699,13 +33903,14 @@ WML-dokument WML-Dokument Έγγραφο WML - WML document + WML document WML-dokumento documento WML WML dokumentua WML-asiakirja WML skjal document WML + document WML cáipéis WML documento WML מסמך WML @@ -32726,7 +33931,7 @@ document WML Dokument WML documento WML - Documento WML + Documento WML Document WML Документ WML Dokument WML @@ -32737,8 +33942,8 @@ WML belgesi документ WML Tài liệu WML - WML 文档 - WML 文件 + WML 文档 + WML 文件 WML Wireless Markup Language @@ -32746,20 +33951,22 @@ WMLScript program + WMLScript-program برنامج WMLScript - Prahrama WMLScript + Prahrama WMLScript Програма — WMLScript programa WMLScript program WMLScript WMLScript-program WMLScript-Programm Πρόγραμμα WMLScript - WMLScript program + WMLScript program programa en WMLScript WMLScript programa WMLScript-ohjelma WMLScript forrit programme WMLScript + program WMLScript ríomhchlár WMLScript programa en WMLScript תכנית של WMLScript @@ -32779,7 +33986,7 @@ programa WMLEscript Pogram WMLScript programa WMLScript - Programa WMLScript + Programa WMLScript Program WMLScript Программа WMLScript Program WMLScript @@ -32790,27 +33997,60 @@ WMLScript programı програма мовою WMLScript Chương trình WMLScript - WMLScript 程序 - WMLScript 程式 + WMLScript 程序 + WMLScript 程式 + + WarpScript source code + Изходен код — WarpScript + codi font en WarpScript + zdrojový kód v jazyce WarpScript + WarpScript-kildekode + WarpScript-Quelltext + WarpScript source code + código fuente en WarpScript + WarpScript iturburu-kodea + WarpScript-lähdekoodi + code source WarpScript + codiç sorzint WarpScript + WarpScript izvorni kôd + WarpScript forráskód + Kode sumber WarpScript + Codice sorgente WarpScript + WarpScript бастапқы коды + WarpScript 소스 코드 + Kod źródłowy WarpScript + Código-fonte WarpScript + Исходный код WarpScript + Izvorna koda WarpScript + WarpScript-källkod + WarpScript kaynak kodu + вихідний код мовою WarpScript + WarpScript 源代码 + WarpScript 原始碼 + + + ACE archive + ACE-argief أرشيف ACE - Archiŭ ACE + Archiŭ ACE Архив — ACE arxiu ACE archiv ACE ACE-arkiv ACE-Archiv Συμπιεσμένο αρχείο ACE - ACE archive + ACE archive ACE-arkivo archivador ACE ACE artxiboa ACE-arkisto ACE skjalasavn archive ACE + archivi ACE cartlann ACE arquivo ACE ארכיון ACE @@ -32831,7 +34071,7 @@ archiu ACE Archiwum ACE arquivo ACE - Pacote ACE + Pacote ACE Arhivă ACE Архив ACE Archív ACE @@ -32842,31 +34082,33 @@ ACE arşivi архів ACE Kho nén ACE - ACE 归档文件 - ACE 封存檔 + ACE 归档文件 + ACE 封存檔 - + Ada source code + Ada-bronkode شفرة مصدر Ada - Kryničny kod Ada + Kryničny kod Ada Изходен код — Ada codi font en Ada zdrojový kód v jazyce Ada Ada-kildekode Ada-Quelltext Πηγαίος κώδικας Ada - Ada source code + Ada source code Ada-fontkodo código fuente en Ada Ada iturburu-kodea Ada-lähdekoodi Ada keldukota code source Ada + codiç sorzint Ada cód foinseach Ada código fonte en Ada קוד מקור Ada @@ -32888,7 +34130,7 @@ còde font Ada Kod źródłowy Ada código origem Ada - Código-fonte Ada + Código-fonte Ada Cod sursă Ada Исходный код Ada Zdrojový kód jazyka Ada @@ -32899,29 +34141,31 @@ Ada kaynak kodu вихідний код мовою Ada Mã nguồn Ada - Ada 源代码 - Ada 源碼 + Ada 源代码 + Ada 源碼 author list + outeurlys لائحة المؤلف - śpis aŭtaraŭ + śpis aŭtaraŭ Списък на авторите llista d'autors seznam autorů forfatterliste Autorenliste Κατάλογος συγγραφέων - author list + author list listo de aŭtoroj lista de autores egile-zerrenda tekijäluettelo høvundalisti liste d'auteurs + liste di autôrs liosta údar lista de autores רשימת יוצרים @@ -32942,7 +34186,7 @@ lista d'autors Lista autorów lista de autores - Lista de autores + Lista de autores listă autori Список авторов Zoznam autorov @@ -32953,29 +34197,31 @@ yazar listesi перелік авторів danh sách tác giả - 作者列表 - 作者清單 + 作者列表 + 作者清單 BibTeX document + BibTeX-dokument مستند BibTeX Documentu de BibTeX - Dakument BibTeX + Dakument BibTeX Документ — BibTeX document BibTeX dokument BibTeX BibTeX-dokument BibTeX-Dokument Έγγραφο BibTeX - BibTeX document + BibTeX document BibTeX-dokumento documento BibTeX BibTeX dokumentua BibTeX-asiakirja BibTeX skjal document BibTeX + document BibTeX cáipéis BibTeX documento BibTex מסמך BibTeX @@ -32996,7 +34242,7 @@ document BibTeX Dokument BibTeX documento BibTeX - Documento BibTeX + Documento BibTeX Document BibTeX Документ BibTeX Dokument BibTeX @@ -33007,30 +34253,31 @@ BibTeX belgesi документ BibTeX Tài liệu BibTeX - BibTeX 文档 - BibTeX 文件 + BibTeX 文档 + BibTeX 文件 - + C++ header ترويسة سي++ - Zahałoŭny fajł C++ + Zahałoŭny fajł C++ Заглавен файл — C++ capçalera en C++ hlavičkový soubor C++ C++-posthoved C++-Header Κεφαλίδα C++ - C++ header + C++ header cabecera de código fuente en C++ C++ goiburua C++-otsake C++ tekshøvd en-tête C++ + intestazion C++ ceanntásc C++ cabeceira de código fonte en C++ כותר C++‎ @@ -33051,7 +34298,7 @@ entèsta C++ Plik nagłówkowy C++ cabeçalho C++ - Cabeçalho C++ + Cabeçalho C++ Antet C++ Заголовочный файл C++ Hlavičky jazyka C++ @@ -33062,8 +34309,8 @@ C++ başlığı файл заголовків мовою C++ Phần đầu mã nguồn C++ - C++ 头文件 - C++ 標頭檔 + C++ 头文件 + C++ 標頭檔 @@ -33073,21 +34320,23 @@ C++ source code + C++-bronkode شفرة مصدر سي++ - Kryničny kod C++ + Kryničny kod C++ Изходен код — C++ codi font en C++ zdrojový kód v jazyce C++ C++-kildekode C++-Quelltext Πηγαίος κώδικας C++ - C++ source code + C++ source code C++-fontkodo código fuente en C++ C++ iturburu-kodea C++-lähdekoodi C++ keldukota code source C++ + codiç sorzint C++ cód foinseach C++ código fonte de C++ קוד מקור של C++‎ @@ -33109,7 +34358,7 @@ còde font C++ Kod źródłowy C++ código origem C++ - Código-fonte C++ + Código-fonte C++ Cod sursă C++ Исходный код C++ Zdrojový kód jazyka C++ @@ -33120,8 +34369,8 @@ C++ kaynak kodu вихідний код мовою C++ Mã nguồn C++ - C++ 源代码 - C++ 源碼 + C++ 源代码 + C++ 源碼 @@ -33131,21 +34380,23 @@ ChangeLog document + ChangeLog-dokument مستند ChangeLog Documentu de rexistru de cambeos - Dakument zafiksavanych źmienaŭ ChangeLog + Dakument zafiksavanych źmienaŭ ChangeLog Дневник за промени — ChangeLog document de registre de canvis dokument ChangeLog ChangeLot-dokument Änderungsprotokoll-Dokument Έγγραφο ChangeLog - ChangeLog document + ChangeLog document documento de registro de cambios ChangeLog dokumentua Muutoslokiasiakirja ChangeLog skjal document ChangeLog + document ChangeLog cáipéis ChangeLog documento Changelog מסמך של ChangeLog @@ -33166,7 +34417,7 @@ document ChangeLog Dokument zmian (ChangeLog) documento ChangeLog - Documento ChangeLog + Documento ChangeLog Document ChangeLog Протокол изменений Dokument ChangeLog @@ -33174,30 +34425,31 @@ Dokument ChangeLog документ дневника измена Ändringsloggsdokument - Değişim Günlüğü belgesi + ChangeLog belgesi документ ChangeLog Tài liệu ChangeLog (ghi lưu thay đổi) - 变更日志文档 - ChangeLog 文件 + 变更日志文档 + ChangeLog 文件 C header ترويسة C - Zahałoŭny fajł C + Zahałoŭny fajł C Заглавен файл — C capçalera en C hlavičkový soubor C C-posthoved C-Header Κεφαλίδα C - C header + C header cabecera de código fuente en C C goiburua C-otsake C tekshøvd en-tête C + intestazion C ceanntásc C cabeceira de códifo fonte de C כותר C @@ -33218,7 +34470,7 @@ entèsta C Plik nagłówkowy C cabeçalho C - Cabeçalho C + Cabeçalho C Antet C Заголовочный файл C Hlavičky jazyka C @@ -33229,28 +34481,30 @@ C başlığı файл заголовків мовою C Phần đầu mã nguồn C - C 程序头文件 - C 標頭檔 + C 程序头文件 + C 標頭檔 CMake source code + CMake-bronkode شفرة مصدر CMake - Kryničny kod CMake + Kryničny kod CMake Изходен код — CMake codi font en CMake zdrojový kód CMake CMake-kildekode CMake-Quelltext Πηγαίος κώδικας CMake - CMake source code + CMake source code CMake-fontkodo código fuente en CMake CMake iturburu-kodea CMake-lähdekoodi CMake keldukota code source CMake + codiç sorzint CMake cód foinseach CMake código fonte de CMake קוד מקור של CMake @@ -33271,7 +34525,7 @@ còde font CMake Kod źródłowy CMake código origem CMake - Código-fonte CMake + Código-fonte CMake Cod sursă CMake Исходный код CMake Zdrojový kód CMake @@ -33282,30 +34536,55 @@ CMake kaynak kodu вихідний код CMake Mã nguồn CMake - CMake 源代码 - CMake 源碼 + CMake 源代码 + CMake 源碼 + + Common Lisp source code + codi font en Common Lisp + Common Lisp-kildekode + Common-Lisp-Quelltext + Common Lisp source code + código fuente en Common Lisp + Yleinen Lisp-lähdekoodi + code source Common Lisp + Common Lisp izvorni kôd + Codice sorgente Common Lisp + Kod źródłowy Common Lisp + Código-fonte Common Lisp + Common Lisp-källkod + вихідний код мовою Common Lisp + Common Lisp 源代码 + Common Lisp 源碼 + + + + + + CSV document + CSV-dokument مستند CSV Documentu CVS - Dakument CSV + Dakument CSV Документ — CSV document CSV dokument CSV CSV-dokument CSV-Dokument Έγγραφο CSV - CSV document + CSV document CSV-dokumento documento CSV CSV dokumentua CSV-asiakirja CSV skjal document CSV + document CSV cáipéis CSV documento CSV מסמך CSV @@ -33326,7 +34605,7 @@ document CSV Dokument CSV documento CSV - Documento CSV + Documento CSV Document CSV Документ CSV Dokument CSV @@ -33337,8 +34616,8 @@ CSV belgesi документ CSV Tài liệu CSV - CSV 文档 - CSV 文件 + CSV 文档 + CSV 文件 CSV Comma Separated Values @@ -33348,15 +34627,19 @@ CSV Schema document + CSV Schema-dokument Documentu d'esquema CSV + Документ — схема на CSV document Schema de CSV dokument schématu CSV CSV Schema-dokument CSV-Schemadokument - CSV Schema document + CSV Schema document documento esquemático CSV CSV Schema dokumentua + CSV Schema asiakirja document schéma CSV + document scheme CSV cáipéis scéimre CSV מסמך פריסת CSV CSV Shema dokument @@ -33368,15 +34651,16 @@ CSV 스키마 문서 Dokument schematu CSV documento CSV Schema - Documento CSV Schema + Documento CSV Schema Документ CSV Schema Dokument schémy CSV + Dokument CSV Schema документ ЦСВ шеме CSV Schema-dokument CSV Şeması belgesi документ Schema у форматі CSV - CSV 架构文档 - CSV Schema 文件 + CSV 架构文档 + CSV Schema 文件 CSV Comma Separated Values @@ -33384,21 +34668,23 @@ license terms + lisensievoorwaardes شروط الترخيص términos de llicencia - licenzijnyja ŭmovy + licenzijnyja ŭmovy Лицензни условия condicions de llicència licenční podmínky licensbetingelser Lizenzbedingungen Όροι άδειας - licence terms + licence terms términos de licencia lizentzia baldintzak lisenssiehdot loyvistreytir termes de licence + tiermins di licence téarmaí ceadúnais termos de licenza תנאי רישיון @@ -33418,7 +34704,7 @@ tèrmes de licéncia Warunki licencji termos de licença - Termos de licença + Termos de licença termeni de licență Лицензионное соглашение Licenčné podmienky @@ -33429,27 +34715,30 @@ lisans koşulları ліцензійні умови điều kiện giấy phép - 软件许可条款 - 授權條款 + 软件许可条款 + 授權條款 author credits + outeurerkenning شكر وتقدير المؤلف creitos del autor - zasłuhi aŭtara + zasłuhi aŭtara Благодарности към авторите atribucions d'autor autorské zásluhy bidragydere Autorendanksagung Μνεία συγγραφέων - author credits + author credits reconocimiento de autoría + egile-kredituak tekijöiden kiitokset høvundaheiður remerciements + ricognossiments autôrs admhálacha údar créditos de autor קרדיטים של היוצר @@ -33469,7 +34758,7 @@ mercejaments Podziękowania autorów programu créditos de autor - Créditos do autor + Créditos do autor mulțumiri autori Авторы программы Autorské zásluhy @@ -33480,28 +34769,30 @@ yazar bilgileri подяки авторам програми công trạng tác giả - 软件作者致谢 - 作者致謝名單 + 软件作者致谢 + 作者致謝名單 C source code + C-bronkode شفرة مصدر سي - Kryničny kod C + Kryničny kod C Изходен код — C codi font en C zdrojový kód v jazyce C C-kildekode C-Quelltext Πηγαίος κώδικας C - C source code + C source code C-fontkodo código fuente en C C iturburu-kodea C-lähdekoodi C keldukota code source C + codiç sorzint C cód foinseach C código fonte en C קוד מקור של C @@ -33523,7 +34814,7 @@ còde font C Kod źródłowy C código origem C - Código-fonte C + Código-fonte C Cod sursă C Исходный код C Zdrojový kód jazyka C @@ -33534,34 +34825,36 @@ C kaynak kodu вихідний код мовою C Mã nguồn C - C 源代码 - C 源碼 + C 源代码 + C 源碼 - - - + + + C# source code + C#-bronkode شفرة مصدر سي# - Kryničny kod C# + Kryničny kod C# Изходен код — C# codi font en C# zdrojový kód v jazyce C# C#-kildekode C#-Quelltext Πηγαίος κώδικας C# - C# source code + C# source code C#-fontkodo código fuente en C# C# iturburu-kodea C#-lähdekoodi C# keldukota code source C# + codiç sorzint C# cód foinseach C# código fonte en C# קוד מקור של C#‎ @@ -33583,7 +34876,7 @@ còde font C# Kod źródłowy C# código origem C# - Código-fonte C# + Código-fonte C# Cod sursă C# Исходный код C# Zdrojový kód jazyka C# @@ -33594,28 +34887,30 @@ C# kaynak kodu вихідний код мовою C# Mã nguồn C# - C# 源代码 - C# 源碼 + C# 源代码 + C# 源碼 Vala source code + Vala-bronkode شفرة مصدر Vala - Kryničny kod Vala + Kryničny kod Vala Изходен код — Vala codi font en Vala zdrojový kód v jazyce Vala - Valakildekode + Vala-kildekode Vala-Quelltext Πηγαίος κώδικας Vala - Vala source code + Vala source code Vala-fontkodo código fuente en Vala Vala iturburu-kodea Vala-lähdekoodi Vala keldukota code source Vala + codiç sorzint Vala cód foinseach Vala código fonte en Vala קוד מקור של Vala @@ -33635,7 +34930,7 @@ còde font Vala Kod źródłowy Vala código origem Vala - Código-fonte Vala + Código-fonte Vala Cod sursă Vala Исходный код Vala Zdrojový kód Vala @@ -33646,26 +34941,28 @@ Vala kaynak kodu вихідний код мовою Vala Mã nguồn Vala - Vala 源代码 - Vala 源碼 + Vala 源代码 + Vala 源碼 OOC source code + OOC-bronkode Изходен код — OOC codi font en OOC zdrojový kód OOC OOC-kildekode OOC-Quelltext Πηγαίος κώδικας OOC - OOC source code + OOC source code OOC-fontkodo código fuente en OOC OOC iturburu-kodea OOC-lähdekoodi source code OOC + codiç sorzint OOC cód foinseach OOC código fonte de OOC קוד מקור של OOC @@ -33683,7 +34980,7 @@ font còde OOC Kod źródłowy OOC código origem OOC - Código-fonte OOC + Código-fonte OOC Исходный код OOC Zdrojový kód OOC Izvorna koda OOC @@ -33691,8 +34988,8 @@ OOC-källkod OOC kaynak kodu вихідний код мовою OOC - OOC 源代码 - OOC 源碼 + OOC 源代码 + OOC 源碼 OOC Out Of Class @@ -33700,9 +34997,10 @@ DCL script + DCL-skrip سكربت DCL DCL skripti - Skrypt DCL + Skrypt DCL Скрипт — DCL script DCL skript DCL @@ -33710,13 +35008,14 @@ DCL-program DCL-Skript Δέσμη ενεργειών DCL - DCL script + DCL script DCL-skripto secuencia de órdenes en DCL DCL script-a DCL-komentotiedosto DCL boðrøð script DCL + script DCL script DCL script de DCL תסריט DCL @@ -33738,7 +35037,7 @@ escript DCL Skrypt DCL script DCL - Script DCL + Script DCL Script DCL Сценарий DCL Skript DCL @@ -33749,8 +35048,8 @@ DCL betiği скрипт DCL Văn lệnh DCL - DCL 脚本 - DCL 指令稿 + DCL 脚本 + DCL 指令稿 DCL Data Conversion Laboratory @@ -33758,10 +35057,11 @@ DSSSL document + DSSSL-dokument مستند DSSSL Documentu DSSSL DSSSL sənədi - Dakument DSSSL + Dakument DSSSL Документ — DSSSL document DSSSL dokument DSSSL @@ -33769,13 +35069,14 @@ DSSSL-dokument DSSSL-Dokument Έγγραφο DSSSL - DSSSL document + DSSSL document DSSSL-dokumento documento DSSSL DSSSL dokumentua DSSSL-asiakirja DSSSL skjal document DSSSL + document DSSSL cáipéis DSSSL documento DSSSL מסמך DSSSL @@ -33797,7 +35098,7 @@ document DSSSL Dokument DSSSL documento DSSSL - Documento DSSSL + Documento DSSSL Document DSSSL Документ DSSSL Dokument DSSSL @@ -33808,8 +35109,8 @@ DSSSL belgesi документ DSSSL Tài liệu DSSSL - DSSSL 文档 - DSSSL 文件 + DSSSL 文档 + DSSSL 文件 DSSSL Document Style Semantics and Specification Language @@ -33817,21 +35118,23 @@ D source code + D-bronkode شفرة مصدر D - Kryničny kod D + Kryničny kod D Изходен код — D codi font en D zdrojový kód v jazyce D D-kildekode D-Quelltext Πηγαίος κώδικας D - D source code + D source code D-fontkodo código fuente en D D iturburu-kodea D-lähdekoodi D keldukota code source D + codiç sorzint D cód foinseach D código fonte de D קוד מקור לשפת D @@ -33852,7 +35155,7 @@ còde font D Kod źródłowy D código origem D - Código-fonte D + Código-fonte D Cod sursă D Исходный код D Zdrojový kód jazyka D @@ -33863,29 +35166,31 @@ D kaynak kodu вихідний код мовою D Mã nguồn D - D 源代码 - D 源碼 + D 源代码 + D 源碼 DTD file + DTD-lêer ملف DTD - Fajł DTD + Fajł DTD Документ — DTD fitxer DTD soubor DTD DTD-fil DTD-Datei Αρχείο DTD - DTD file + DTD file DTD-dosiero archivo DTD DTD fitxategia DTD-tiedosto DTD fíla fichier DTD + file DTD comhad DTD ficheiro DTD מסמך DTD @@ -33906,7 +35211,7 @@ fichièr DTD Plik DTD ficheiro DTD - Arquivo DTD + Arquivo DTD Fișier DTD Файл DTD Súbor DTD @@ -33917,8 +35222,8 @@ DTD dosyası файл DTD Tập tin DTD - DTD 文件 - DTD 檔 + DTD 文件 + DTD 檔 DTD Document Type Definition @@ -33928,21 +35233,23 @@ Eiffel source code + Eiffel-bronkode شفرة مصدر Eiffel - Kryničny kod Eiffel + Kryničny kod Eiffel Изходен код — Eiffel codi font en Eiffel zdrojový kód v jazyce Eiffel - Eiffelkildekode + Eiffel-kildekode Eiffel-Quelltext Πηγαίος κώδικας Eiffel - Eiffel source code + Eiffel source code Eiffel-fontkodo código fuente en Eiffel Eiffel iturburu-kodea Eiffel-lähdekoodi Eiffel keldukota code source Eiffel + codiç sorzint Eiffel cód foinseach Eiffel código fone de Eiffel קוד מקור של Eiffel @@ -33963,7 +35270,7 @@ còde font Eiffel Kod źródłowy Eiffel código origem Eiffel - Código-fonte Eiffel + Código-fonte Eiffel Cod sursă Eiffel Исходный код Eiffel Zdrojový kód Eiffel @@ -33974,17 +35281,18 @@ Eiffel kaynak kodu вихідний код мовою Eiffel Mã nguồn Eiffel - Eiffel 源代码 - Eiffel 源碼 + Eiffel 源代码 + Eiffel 源碼 Emacs Lisp source code + Emacs Lisp-bronkode شفرة مصدر Emacs Lisp Emacs Lisp mənbə kodu - Kryničny kod Emacs Lisp + Kryničny kod Emacs Lisp Изходен код — Emacs Lisp codi font en Emacs Lisp zdrojový kód Emacs Lisp @@ -33992,13 +35300,14 @@ Emacs Lisp-kildekode Emacs-Lisp-Quelltext Πηγαίος κώδικας Emacs Lisp - Emacs Lisp source code + Emacs Lisp source code fontkodo en Emacs Lisp código fuente en Lisp de Emacs Emacs Lisp iturburu-kodea Emacs Lisp -lähdekoodi Emacs Lisp keldukota code source Emacs Lisp + codiç sorzint Emacs Lisp cód foinseach Emacs Lisp código fonte de Emacs Lisp קוד מקור של Emcas Lisp @@ -34018,9 +35327,9 @@ Emacs Lisp-broncode Emacs Lisp kjeldekode còde font Emacs Lisp - Plik źródłowy Emacs Lisp + Kod źródłowy Emacs Lisp código origem Emacs Lisp - Código-fonte Lisp do Emacs + Código-fonte Lisp do Emacs Cod sursă Emacs Lisp Исходный код Emacs Lisp Zdrojový kód Emacs Lisp @@ -34031,32 +35340,34 @@ Emacs Lisp kaynak kodu вихідний код мовою Emacs Lisp Mã nguồn Lisp Emacs - Emacs Lisp 源代码 - Emacs Lisp 源碼 + Emacs Lisp 源代码 + Emacs Lisp 源碼 - - + + Erlang source code + Erlang-bronkode شفرة مصدر Erlang - Kryničny kod Erlang + Kryničny kod Erlang Изходен код — Erlang codi font en Erlang zdrojový kód v jazyce Erlang - Erlangkildekode + Erlang-kildekode Erlang-Quelltext Πηγαίος κώδικας Erlang - Erlang source code + Erlang source code Erlang-fontkodo código fuente en Erlang Erlang iturburu-kodea Erlang-lähdekoodi Erlang keldukota code source Erlang + codiç sorzint Erlang cód foinseach Erlang código fonte de Erlang קוד מקור של Erlang @@ -34077,7 +35388,7 @@ còde font Erlang Kod źródłowy Erlang código origem Erlang - Código-fonte Erlang + Código-fonte Erlang Cod sursă Erlang Исходный код Erlang Zdrojový kód Erlang @@ -34088,30 +35399,32 @@ Erlang kaynak kodu вихідний код мовою Erlang Mã nguồn Erlang - Erlang 源代码 - Erlang 源碼 + Erlang 源代码 + Erlang 源碼 Fortran source code + Fortran-bronkode شفرة مصدر Fortran Fortran mənbə kodu - Kryničny kod Fortran + Kryničny kod Fortran Изходен код — Fortran codi font en Fortran zdrojový kód v jazyce Fortran Ffynhonnell rhaglen FORTRAN - Fortrankildekode + Fortran-kildekode Fortran-Quelltext Πηγαίος κώδικας Fortran - Fortran source code + Fortran source code Fotran-fontkodo código fuente en Fortran Fortran-en iturburu-kodea Fortran-lähdekoodi Fortran keldukota code source Fortran + codiç sorzint Fortran cód foinseach Fortran código fonte de Fortran קוד מקור של Fortran @@ -34133,7 +35446,7 @@ còde font Fortran Kod źródłowy Fortran código origem Fortran - Código-fonte Fortran + Código-fonte Fortran Cod sursă Fortran Исходный код Fortran Zdrojový kód Fortran @@ -34144,8 +35457,8 @@ Fortran kaynak kodu вихідний код мовою Fortran Mã nguồn Fortran - Fortran 源代码 - Fortran 源碼 + Fortran 源代码 + Fortran 源碼 @@ -34154,16 +35467,19 @@ Genie source code - codi font de Genius + Genie-bronkode + Изходен код — Genie + codi font en Genie zdrojový kód v jazyce Genie Genie-kildekode Genie-Quelltext Πηγαίος κώδικας Genie - Genie source code + Genie source code código fuente en Genie Genie iturburu-kodea Genie-lähdekoodi code source Genie + codiç sorzint Genie cód foinseach Genie קוד מקור של Genie Genie izvorni kôd @@ -34176,7 +35492,7 @@ còde font Genie Kod źródłowy Genie código origem Genie - Código-fonte Genie + Código-fonte Genie Исходный код Genie Zdrojový kód Genie Izvorna koda Genie @@ -34184,30 +35500,32 @@ Genie-källkod Genie kaynak kodu вихідний код мовою Genie - Genie 源代码 - Genie 源碼 + Genie 源代码 + Genie 源碼 translation file + vertaallêer ملف الترجمة ficheru de traducción - fajł pierakładu + fajł pierakładu Превод fitxer de traducció soubor překladu oversættelsesfil Übersetzungsdatei Αρχείο μετάφρασης - translation file + translation file tradukad-dosiero archivo de traducción itzulpen-fitxategia käännöstiedosto týðingarfíla fichier de traduction + file di traduzion comhad aistriúcháin ficheiro de tradución קובץ תרגום @@ -34228,7 +35546,7 @@ fichièr de traduccion Plik tłumaczenia ficheiro de tradução - Arquivo de tradução + Arquivo de tradução fișier traducere Файл переводов Súbor prekladu @@ -34239,8 +35557,8 @@ çeviri dosyası файл перекладу tập tin dịch - 翻译文件 - 翻譯檔 + 翻译文件 + 翻譯檔 @@ -34248,22 +35566,24 @@ translation template + vertaalsjabloon قالب الترجمة plantía de traducción - šablon dla pierakładu + šablon dla pierakładu Шаблон за преводи plantilla de traducció šablona překladu oversættelsesskabelon Übersetzungsvorlage Πρότυπο μετάφρασης - translation template + translation template tradukad-ŝablono plantilla de traducción itzulpenen txantiloia käännösmalli týðingarformur modèle de traduction + model di traduzion teimpléad aistriúcháin plantilla de tradución תבנית תרגום @@ -34284,7 +35604,7 @@ modèl de traduccion Szablon tłumaczenia modelo de tradução - Modelo de tradução + Modelo de tradução șablon de traducere Шаблон переводов Šablóna prekladu @@ -34295,63 +35615,65 @@ çeviri şablonu шаблон перекладу mẫu dịch - 翻译模板 - 翻譯模版 + 翻译模板 + 翻譯模版 - + - feature specification in Gherkin format - especificació de funcionalitat en format Gherkin - specifikace vlastností ve formátu Gherkin - funktionspecifikation i Gherkin-format - Funktionsspezifikation im Gherkin-Format - feature specification in Gherkin format - especificación de funcionalidad en formato Gherkin - spécification fonctionnelle au format Gherkin - sonraíocht gnéithe i bhformáid Gherkin - פירוט תכונות בתבנית Gherkin - opis značajke u Gherkin formatu - funkcióleírás Gherkin formátumban - spesifikasi fitur dalam format Gherkin - Specifica di funzionalità in formato Gherkin - Gherkin пішіміндегі функционалды анықтамалар - Gherkin 형식의 기능 명세 - Specyfikacja funkcji w formacie Gherkin - Especificação de recurso no formato Gherkin - Функциональные определения в формате Gherkin - Špecifikácia funkcie vo formáte Gherkin - одредба функције у запису Геркина - egenskapsspecifikation i Gherkin-format - Gherkin biçiminde özellik belirtimi - специфікація можливості у форматі Gherkin - Gherkin 格式中的功能规范 - Gherkin 格式的特徵規格 + Gherkin document + Документ — Gherkin + document Gherkin + Gherkin-dokument + Gherkin-Dokument + Gherkin document + documento de Gherkin + Gherkin dokumentua + Gherkin-asiakirja + document Gherkin + Gherkin dokument + Gherkin dokumentum + Dokumen Gherkin + Documento Gherkin + Gherkin құжаты + 게르킨 문서 + Dokument Gherkin + Documento Gherkin + Документ Gherkin + Dokument Gherkin + Dokument Gherkin + Gherkin-dokument + Gherkin belgesi + документ Gherkin + Gherkin 文档 + Gherkin 文件 HTML document + HTML-dokument مستند HTML Documentu HTML - Dakument HTML + Dakument HTML Документ — HTML document HTML dokument HTML HTML-dokument HTML-Dokument Έγγραφο HTML - HTML document + HTML document HTML-dokumento documento HTML HTML dokumentua HTML-asiakirja HTML skjal document HTML + document HTML cáipéis HTML documento HTML מסמך HTML @@ -34371,7 +35693,7 @@ document HTML Dokument HTML documento HTML - Documento HTML + Documento HTML Document HTML Документ HTML Dokument HTML @@ -34382,161 +35704,122 @@ HTML belgesi документ HTML Tài liệu HTML - HTML 文档 - HTML 文件 + HTML 文档 + HTML 文件 HTML HyperText Markup Language - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - + + + + + + + - Web application cache manifest - قائمة التخزين الموقت لتطبيق الويب - Манифест за кеша на уеб приложение - manifest de memòria cau d'aplicació Web - manifest mezipaměti webové aplikace - Manifest for internetprogrammellemlager - Webanwendungscache-Manifest - Δηλωτικό λανθάνουσας μνήμης εφαρμογής Ιστού - Web application cache manifest - manifiesto de antememoria de aplicación web - Web aplikazioaren cache-aren agiria - Net nýtsluskipanarkova manifest - manifeste de cache d'application Web - lastliosta taisce d'fheidhmchlár Gréasáin - manifesto de caché de aplicativo web - הצהרה של מטמון של תוכנית ברשת - Web aplikacija prikaza predmemorije - Webalkalmazás gyorsítótár-összefoglalója - Manifesto de cache de application web - Manifes singgahan aplikasi web - Manifesto cache applicazione Web - Web アプリケーションキャッシュ manifest - Веб қолданбасының кэш манифесті - 웹 애플리케이션 캐시 정의 - Žiniatinklio programos podėlio manifestas - Tīmekļa lietotņu keša manifests - Webapplicatie cache manifest - manifèste d'escondedor d'aplicacion Web - Manifest pamięci podręcznej aplikacji WWW - manifesto de cache de aplicação web - Manifest de cache de aplicação web - Manifest de cache pentru aplicații web - Манифест кэша веб-приложения - Manifest vyrovnávacej pamäte webovej aplikácie - Predpomnilnik spletnega programa - проглас оставе Веб програма - Cachemanifest för webbapplikation - Web uygulama önbelleği bildirimi - маніфест кешу веб-програми - 网络应用程序缓存清单 - 網頁應用程式快取聲明 + Web application cache file + Кеш — уеб приложение + fitxer de memòria cau d'aplicació Web + Webprogrammellemlagerfil + Webanwendungscache-Datei + Web application cache file + archivo de antememoria de aplicación web + Web-aplikazio katxe fitxategia + Web-sovelluksen välimuistitiedosto + fichier de cache d'application Web + Web aplikacija datoteka predmemorije + Webalkalmazás gyorsítótárfájl + Berkas singgahan aplikasi web + File cache applicazione Web + Веб қолданбасының кэш файлы + 웹 애플리케이션 캐시 파일 + Plik pamięci podręcznej aplikacji WWW + Arquivo de cache de aplicativo Web + Файл кэша веб-приложения + Webbapplikation cachefil + Web uygulama önbellek dosyası + файл кешу вебпрограми + Web 应用缓存文件 - - - - - + + + + + - Google Video Pointer - مؤشر فيديو جوجل - Google Video Pointer - Pakazalnik Google Video - Документ-указател към видео на Google - apuntador a vídeo de Google - Google Video Pointer - Google Video-peger - Google Video-Zeiger - Google Video Pointer - Google Video Pointer - lista de reproducción de Google Video (GVP) - Google Video-ren erreprodukzio-zerrenda - Google-video-osoitin - Google Video Pointer - pointeur vidéo Google - pointeoir Google Video - punteiro de vídeo de Google - מצביע וידאו של Google - Google Video pretraživač - Google Video Pointer - Punctator Google Video - Google Video Pointer - Puntatore Google Video - Google ビデオポインター - Google Video Pointer - Google 동영상 포인터 - Google Video Pointer - Google Video Pointer - Peker til Google Video - Google-videoverwijzing - Google Video-peikar - puntador vidèo Google - Lista odtwarzania Google Video - Ponteiro Google Video - Ponteiro do Google Vídeo - Indicator Google Video - Google Video Pointer - Google Video Pointer - Kazalec Google Video - Puntues Google Video - Гуглов видео показивач - Google Video-pekare - Google Video İşaretçisi - вказівник відео Google - Con trỏ ảnh động Google - Google 视频指向 - Google Video Pointer + Google Video Pointer shortcut + Отметка — Google Video + drecera d'apuntador a vídeo de Google + Google Video Pointer-genvej + Google-Video-Zeigerverweis + Google Video Pointer shortcut + atajo de Google Video Pointer + Google Video Pointer lasterbidea + Google Video Pointer -pikakuvake + raccourci de pointeur vidéo Google + Google Video pretraživač prečac + Google Video Pointer parancsikon + Pintasan Google Video Pointer + Scorciatoia Google Video Pointer + Google Video Pointer жарлығы + 구글 동영상 포인터 바로 가기 + Skrót listy odtwarzania Google Video + Atalho do Google Video Pointer + Ссылка Google Video Pointer + Google Video Pointer-genväg + Google Video Pointer kısayolu + скорочення вказівника відео Google + Google Video Pointer 快捷方式 - - + + Haskell source code + Haskell-bronkode شفرة مصدر Haskell Haskell mənbə kodu - Kryničny kod Haskell - Изходен код на Haskell + Kryničny kod Haskell + Изходен код — Haskell codi font en Haskell zdrojový kód v jazyce Haskell Ffynhonnell rhaglen Haskell - Haskellkildekode + Haskell-kildekode Haskell-Quelltext Πηγαίος κώδικας Haskell - Haskell source code + Haskell source code Haskell-fontkodo código fuente en Haskell Haskell iturburu-kodea Haskell-lähdekoodi Haskell keldukota code source Haskell + codiç sorzint Haskell cód foinseach Haskell código fonte de Haskell קוד מקור של Haskell @@ -34557,7 +35840,7 @@ còde font Haskell Kod źródłowy Haskell código origem Haskell - Código-fonte Haskell + Código-fonte Haskell Cod sursă Haskell Исходный код Haskell Zdrojový kód Haskell @@ -34568,17 +35851,18 @@ Haskell kaynak kodu вихідний код мовою Haskell Mã nguồn Haskell - Haskell 源代码 - Haskell 源碼 + Haskell 源代码 + Haskell 源碼 IDL document + IDL-dokument مستند IDL Documentu IDL IDL sənədi - Dakument IDL + Dakument IDL Документ — IDL document IDL dokument IDL @@ -34586,13 +35870,14 @@ IDL-dokument IDL-Dokument Έγγραφο IDL - IDL document + IDL document IDL-dokumento documento IDL IDL dokumentua IDL-asiakirja IDL skjal document IDL + document IDL cáipéis IDL documento IDL מסמך IDL @@ -34613,7 +35898,7 @@ document IDL Dokument IDL documento IDL - Documento IDL + Documento IDL Document IDL Документ IDL Dokument IDL @@ -34624,8 +35909,8 @@ IDL belgesi документ IDL Tài liệu IDL - IDL 文档 - IDL 文件 + IDL 文档 + IDL 文件 IDL Interface Definition Language @@ -34633,21 +35918,23 @@ installation instructions + installasie-instruksies تعليمات التثبيت instrucciones d'instalación - instrukcyja dla instalavańnia + instrukcyja dla instalavańnia Инструкции за инсталация instruccions d'instal·lació návod k instalaci installationsinstruktioner Installationsanleitung Οδηγίες εγκατάστασης - installation instructions + installation instructions instrucciones de instalación instalazioaren instrukzioak asennusohjeet innleggingar vegleiðing instructions d'installation + istruzions di instalazion treoracha suiteála instrucións de instalación הוראות התקנה @@ -34667,7 +35954,7 @@ instructions d'installacion Instrukcje instalacji instruções de instalação - Instruções de instalação + Instruções de instalação instrucțiuni de instalare Инструкции по установке Návod na inštaláciu @@ -34678,28 +35965,30 @@ kurulum yönergeleri інструкції з встановлення hướng dẫn cài đặt - 软件安装指南 - 安裝指引 + 软件安装指南 + 安裝指引 Java source code + Java-bronkode شفرة مصدر Java - Kryničny kod Java - Изходен код на Java + Kryničny kod Java + Изходен код — Java codi font en Java zdrojový kód v jazyce Java - Javakildekode + Java-kildekode Java-Quelltext Πηγαίος κώδικας Java - Java source code + Java source code Java-fontkodo código fuente en Java Java iturburu-kodea Java-lähdekoodi Java keldukota code source Java + codiç sorzint Java cód foinseach Java código fonte de Java קוד מקור ב־Java @@ -34720,7 +36009,7 @@ còde font Java Kod źródłowy Java código origem Java - Código-fonte Java + Código-fonte Java Cod sursă Java Исходный код Java Zdrojový kód Java @@ -34731,28 +36020,30 @@ Java kaynak kodu вихідний код мовою Java Mã nguồn Java - Java 源代码 - Java 源碼 + Java 源代码 + Java 源碼 LDIF address book + LDIF-adresboek دفتر عناوين LDIF - Adrasnaja kniha LDIF + Adrasnaja kniha LDIF Адресна книга — LDIF llibreta d'adreces LDIF adresář LDIF LDIF-adressebog LDIF-Adressbuch Βιβλίο διευθύνσεων LDIF - LDIF address book + LDIF address book LDIF-adresaro libreta de direcciones LDIF LDIF helbide-liburua LDIF-osoitekirja LDIF adressubók carnet d'adresses LDIF + rubriche LDIF leabhar seoltaí LDIF lista de enderezos LDIF ספר כתובות של LDIF @@ -34772,7 +36063,7 @@ quasernet d'adreças LDIF Książka adresowa LDIF livro de endereços LDIF - Livro de endereços LDIF + Livro de endereços LDIF Agendă LDIF Адресная книга LDIF Adresár LDIF @@ -34783,33 +36074,35 @@ LDIF adres defteri адресна книга LDIF Sổ địa chỉ LDIF - LDIF 地址簿 - LDIF 通訊錄 + LDIF 地址簿 + LDIF 通訊錄 LDIF LDAP Data Interchange Format - - + + Lilypond music sheet + Lilypond-musiekblad صفحة موسيقى Lilypond - Muzyčny arkuš Lilypond + Muzyčny arkuš Lilypond Нотация на Lilypond full de música Lilypond notový papír Lilypond Lilypondmusikkort Lilypond-Notenblatt Παρτιτούρα Lilypond - Lilypond music sheet + Lilypond music sheet partitura de LilyPond Lilypond musika-orria Lilypond-nuotit Lilypond tónleika ark partition musicale Lilypond + spartît Lilypond bileog cheoil Lilypond folla de música de Lilypond דף מוזיקה של Lilypond @@ -34828,7 +36121,7 @@ particion musicala Lilypond Plik partytury Lilypond folha de música Lilypond - Partitura do Lilypond + Partitura do Lilypond Fișă muzică Lilypond Список музыки Lilypond Notový papier Lilypond @@ -34839,28 +36132,30 @@ Lilypond müzik sayfası нотний запис Lilypond Bản nhạc Lilypond - Lilypond 乐谱 - Lilypond 樂譜 + Lilypond 乐谱 + Lilypond 樂譜 LHS source code + LHS-bronkode شفرة مصدر LHS - Kryničny kod LHS - Изходен код на LHS + Kryničny kod LHS + Изходен код — LHS codi font en LHS zdrojový kód LHS LHS-kildekode LHS-Quelltext Πηγαίος κώδικας LHS - LHS source code + LHS source code LHS-fontkodo código fuente en LHS LHS iturburu-kodea LHS-lähdekoodi LHS keld code source LHS + codiç sorzint LHS cód foinseach LHS código fonte en LHS קוד מקור של LHS @@ -34880,7 +36175,7 @@ còde font LHS Kod źródłowy LHS código origem LHS - Código-fonte LHS + Código-fonte LHS Cod sursă LHS Исходный код LHS Zdrojový kód LHS @@ -34891,8 +36186,8 @@ LHS kaynak kodu вихідний код LHS Mã nguồn LHS - LHS 源代码 - LHS 源碼 + LHS 源代码 + LHS 源碼 LHS Literate Haskell source code @@ -34902,20 +36197,21 @@ application log سجل التطبيق rexistru d'aplicación - časopis aplikacyi - Файл-дневник на приложение + časopis aplikacyi + Журнал със съобщения registre d'aplicació záznam aplikace programlog Anwendungsprotokoll Καταγραφή εφαρμογή - application log + application log protokolo de aplikaĵo registro de aplicación aplikazio egunkaria sovelluksen lokitiedosto nýtsluskipan logg journal d'application + regjistri aplicazion logchomhad feidhmchláir rexistro de aplicativo יומן יישום @@ -34936,7 +36232,7 @@ jornal d'aplicacion Dziennik programu diário de aplicação - Registro de aplicativo + Registro de aplicativo înregistrare aplicație Журнал сообщений Záznam aplikácie @@ -34947,64 +36243,36 @@ uygulama günlüğü журнал програми bản ghi ứng dụng - 应用程序日志 - 程式紀錄檔 + 应用程序日志 + 程式紀錄檔 - Makefile - ملف Makefile - İnşa faylı - Makefile - Файл — make - Makefile - Makefile - Ffeil "make" - Bygningsfil - Makefile - Makefile - Makefile - Muntodosiero - Makefile - Makefile - Makefile - Makefile - makefile - Makefile - Makefile - Makefile - Makefile - Makefile - Makefile - Makefile - Makefile - Makefile - Makefile - Makefile (жинау файлы) - Makefile - Makefile - Makefile - Makefile - Makefile - Makefile - Makefile - makefile - Plik make - Makefile - Makefile (arquivo do make) - Makefile - Файл Makefile - Makefile - Datoteka Makefile - Makefile - датотека стварања - Makefil - Makefile - файл проекту make - Tập tin tạo ứng dụng (Makefile) - Makefile - Makefile + Makefile build file + Проект — Makefile + fitxer de construcció Makefile + Makefile build-fil + Makefile Build-Datei + Makefile build file + archivo de generación Makefile + Makefile build fitxategia + Makefile rakennustiedosto + fichier de construction Makefile + Makefile datoteka izgradnje + Makefile összeállítási fájl + Berkas build Makefile + File compilazione Makefile + Makefile құрастыру файлы + Makefile 빌드 파일 + Plik budowania Makefile + Arquivo de compilação Makefile + Сборочный файл Makefile + Súbor zostavenia Makefile + Makefile-byggfil + Makefile derleme dosyası + файл збирання Makefile + Makefile 构建文件 @@ -35012,12 +36280,13 @@ - - + + Markdown document + Markdown-dokument Documentu Markdown Документ — Markdown document Markdown @@ -35025,11 +36294,12 @@ Markdown-dokument Markdown-Dokument Έγγραφο Markdown - Markdown document + Markdown document documento Markdown Markdown dokumentua Markdown-asiakirja document Markdown + document Markdown cáipéis Markdown documento de Markdown מסמך Markdown @@ -35046,7 +36316,7 @@ document Markdown Dokument Markdown documento Markdown - Documento Markdown + Documento Markdown Документ Markdown Dokument Markdown Dokument Markdown @@ -35054,8 +36324,8 @@ Markdown-dokument Markdown belgesi документ Markdown - Markdown 文档 - Markdown 文件 + Markdown 文档 + Markdown 文件 @@ -35065,19 +36335,20 @@ Qt MOC file ملف Qt MOC - Fajł Qt MOC + Fajł Qt MOC Файл — Qt MOC fitxer MOC de Qt soubor Qt MOC Qt MOC-fil Qt-MOC-Datei Αρχείο Qt MOC - Qt MOC file + Qt MOC file archivo MOC Qt Qt MOC fitxategia Qt MOC -tiedosto Qt MOC fíla fichier Qt MOC + file Qt MOC comhad MOC Qt ficheiro MOC Qt קובץ Qt MOC @@ -35097,7 +36368,7 @@ fichièr Qt MOC Plik Qt MOC ficheiro Qt MOC - Arquivo Qt MOC + Arquivo Qt MOC Fișier Qt MOC Файл Qt MOC Súbor Qt MOC @@ -35108,8 +36379,8 @@ Qt MOC dosyası файл-метаоб'єкт Qt Tập tin MOC của Qt - Qt 元对象编译器文件 - Qt MOC 檔 + Qt 元对象编译器文件 + Qt MOC 檔 Qt MOC Qt Meta Object Compiler @@ -35117,20 +36388,22 @@ Windows Registry extract + Windows-registerlêeruittreksel استخراج مسجل ويندوز - Element rehistru Windows + Element rehistru Windows Извадка от регистъра на Windows extracte de Windows Registry výtah registru Windows - Windows Registy-udtrækning + Windows registreringsdatabase-udtrækning Windows-Registry-Auszug Αποσυμπίεση Windows Registry - Windows Registry extract + Windows Registry extract extracto del registro de Windows Windows-eko erregistro erauzlea Windows-rekisteritietue Windows Registry úrdráttur extrait de registre Windows + estrat dal regjistri di Windows sliocht as Clárlann Windows Extracto do rexistro de Windows קובץ רשומות מערכת של Windows @@ -35150,7 +36423,7 @@ extrait de registre Windows Wycinek rejestru Windows extrato do registo do Windows - Extrator de registro do Windows + Extrator de registro do Windows Extras al registrului Windows Фрагмент Windows Registry Časť registrov Windows @@ -35161,138 +36434,99 @@ Windows Kayıt Defteri özü частина реєстру Windows Bản trích Registry Windows - Windows 注册表提取 - Windows Registry 抽出 + Windows 注册表提取 + Windows Registry 抽出 - - - + + + - Managed Object Format - صيغة كائن مدار - Farmat Managed Object - Управлявани обекти — MOF - format d'objecte gestionat - Managed Object Format - Håndteret objektformat - Managed Object Format - Μορφή διαχειριζόμενου αντικειμένου - Managed Object Format - formato de objeto gestionado - Kudeatutako objektu formatua - Managed Object Format - format Managed Object - formáid réada bainistithe - formato de obxecto xestionado - תבנית פריט מנוהל - Managed Object Format - Felügyelt objektum (MO) formátum - File in formato Managed Object - Managed Object Format - Managed Object Format - 管理オブジェクトフォーマット - Басқарылатын объект пішімі - 관리되는 객체 형식 - Sutvarkytų objektų formatas - Pārvaldītu objektu formāts - Managed Object Format - Managed Object Format - Managed Object Format - format Managed Object - Plik Managed Object Format - formato Managed Object - Formato de objeto gerenciado - Managed Object Format - Формат управляемого объекта - Formát Managed Object - Datoteka Managed Object - Managed Object Format - запис управљаног објекта - Managed Object Format - Yönetilen Nesne Biçimi - формат керування об’єктами - Định dạng Đối tượng đã Quản lý - 托管对象格式 - Managed Object Format + MOF file + Модел — MOF + fitxer MOF + MOF-fil + MOF-Datei + MOF file + archivo MOF + MOF fitxategia + MOF-tiedosto + fichier MOF + MOF datoteka + MOF fájl + Berkas MOF + File MOF + MOF файлы + MOF 파일 + Plik MOF + Arquivo MOF + Файл MOF + Súbor MOF + Datoteka MOF + MOF-fil + MOF dosyası + файл MOF + MOF 文件 + MOF 檔 + MOF + Windows Managed Object File - Mup publication - منشور Mup - Publikacyja Mup - Издание — Mup - publicació Mup - publikace Mup - Mupudgivelse - Mup-Veröffentlichung - Δημοσίευση Mup - Mup publication - publicación Mup - Mup publikazioa - Mup-julkaisu - Mup útgáva - publication Mup - foilseachán Mup - publicación Mup - פרסום של Mup - Mup publikacija - Mup publikáció - Publication Mup - Publikasi Mup - Pubblicazione Mup - Mup 出版ファイル - Mup жариялымы - Mup 출판물 - Mup leidinys - Mup publikācija - Mup publikasjon - Mup-publicatie - Mup-publikasjon - publication Mup - Publikacja Mup - publicação Mup - Publicação do Mup - Publicație Mup - Публикация Mup - Publikácie Mup - Datoteka objave Mup - Publikim Mup - Муп објава - Mup-publicering - Mup uygulaması - публікація Mup - Bản xuất Mup - Mup 应用程序 - Mup 出版品 + Mup musical composition document + Музикална композиция — Mup + document de composició musical Mup + Mup-musiksamling-dokument + Mup-Musikkompositions-Dokument + Mup musical composition document + documento de composición musical de Mup + Mup konposizio musikal dokumentua + Mup-sävellysdokumentti + document de composition musicale Mup + Mup dokument glazbene kompozicije + Mup zenei kompozíciós dokumentum + Dokumen komposisi musik Mup + Documento composizione musicale Mup + Mup музыкалық композиция құжаты + mup 작곡 문서 + Dokument kompozycji muzycznej Mup + Documento de composição musical Mup + Dokument hudobnej kompozície Mup + Mup musikkompositionsdokument + Mup musical composition belgesi + документ музичного запису твору Mup + Mup 乐曲文档 + Mup 音樂組合文件 - + Objective-C source code + Objective-C-bronkode شفرة مصدر الهدف-C - Kryničny kod Objective-C + Kryničny kod Objective-C Изходен код — Objective C codi font en Objective-C zdrojový kód v jazyce Objective-C Objektiv C-kildekode Objective-C-Quelltext Πηγαίος κώδικας Objective-C - Objective-C source code + Objective-C source code fontkodo en Objective-C código fuente en Objective-C Objective-C iturburu-kodea Objective-C-lähdekoodi Objective-C keldukota code source Objective-C + codiç sorzint Objective-C cód foinseach Objective-C código fonte de Objective-C קוד מקור של Objective-C @@ -35314,7 +36548,7 @@ còde font Objective-C Kod źródłowy Objective-C código origem Objective-C - Código-fonte Objective-C + Código-fonte Objective-C Cod sursă Objective-C Исходный код Objective-C Zdrojový kód Objective-C @@ -35325,31 +36559,33 @@ Objective-C kaynak kodu вихідний код мовою Objective-C Mã nguồn Objective-C - Objective-C 源代码 - Objective-C 源碼 + Objective-C 源代码 + Objective-C 源碼 - + OCaml source code + OCaml-bronkode شفرة مصدر OCaml - Kryničny kod OCaml + Kryničny kod OCaml Изходен код — OCaml codi font en OCaml zdrojový kód v jazyce OCaml OCaml-kildekode OCaml-Quelltext Πηγαίος κώδικας OCaml - OCaml source code + OCaml source code OCaml-fontkodo código fuente en OCaml OCaml iturburu-kodea OCaml-lähdekoodi OCaml keldukota code source OCaml + codiç sorzint OCaml cód foinseach OCaml código fonte de OCaml קוד מקור של OCaml @@ -35369,7 +36605,7 @@ còde font OCaml Kod źródłowy OCaml código origem OCaml - Código-fonte OCaml + Código-fonte OCaml Cod sursă OCaml Исходный код OCaml Zdrojový kód OCaml @@ -35380,19 +36616,26 @@ OCaml kaynak kodu первинний код мовою OCaml Mã nguồn OCaml - OCaml 源代码 - OCaml 源碼 + OCaml 源代码 + OCaml 源碼 OpenCL source code + OpenCL-bronkode + Изходен код — OpenCL codi font en OpenCL zdrojový kód v jazyce OpenCL + OpenCL-kildekode OpenCL-Quelltext - OpenCL source code + OpenCL source code código fuente en OpenCL + OpenCL iturburu-kodea OpenCL-lähdekoodi + code source OpenCL + codiç sorzint OpenCL + cód foinseach OpenCL OpenCL izvorni kôd OpenCL forráskód Kode sumber OpenCL @@ -35400,91 +36643,75 @@ OpenCL бастапқы коды OpenCL 소스 코드 Kod źródłowy OpenCL - Código-fonte do OpenCL + Código-fonte OpenCL Исходный код OpenGL Zdrojový kód OpenCL + Izvorna koda OpenCL OpenCL-källkod + OpenCL kaynak kodu вихідний код мовою OpenCL - OpenCL 源代码 - OpenCL 源碼 + OpenCL 源代码 + OpenCL 源碼 OpenCL Open Computing Language - MATLAB script/function - سكربت/وظيفة MATLAB - Skrypt/funkcyja MATLAB - Скрипт/функция — MATLAB - script/funció MATLAB - skript/funkce MATLAB - MATLAB-program/-funktion - MATLAB-Skript/-Funktion - Δέσμη ενεργειών/συνάρτηση MATLAB - MATLAB script/function - secuencia de órdenes/función de MATLAB - MATLAB script/funtzioa - MATLAB-komentotiedosto/funktio - MATLAB boðrøð/funka - script/fonction MATLAB - script/feidhm MATLAB - función/script de MATLAB - תסריט/פונקציית MATLAB - MATLAB skripta/funkcija - MATLAB parancsfájl/funkció - Script/function MATLAB - Skrip/fungsi MATLAB - Script/Funzione MATLAB - MATLAB スクリプト/関数 - MATLAB сценарий/функциясы - MATLAB 스크립트/함수 - MATLAB scenarijus / funkcija - MATLAB skripts/funkcija - Skript/funksjon for MATLAB - MATLAB-script/functie - MATLAB-skript/funksjon - escript/fonction MATLAB - Skrypt/funkcja MATLAB - script/função MATLAB - Script/função do MATLAB - Funcție/script MATLAB - Сценарий/функция MATLAB - Skript/funkcia MATLAB - Skriptna datoteka MATLAB - Script/Funksion MATLAB - скрипта/функција МАТЛАБ-а - MATLAB-skript/funktion - MATLAB betiği/fonksiyonu - скрипт/функція MATLAB - Văn lệnh/chức năng MATLAB - MATLAB 脚本/函数 - MATLAB 指令稿/函式 + MATLAB file + Файл — MATLAB + fitxer MATLAB + MATLAB-fil + MATLAB-Datei + MATLAB file + archivo de MATLAB + MATLAB fitxategia + MATLAB-tiedosto + fichier MATLAB + MATLAB datoteka + MATLAB fájl + Berkas MATLAB + File MATLAB + MATLAB файлы + MATLAB 파일 + Plik MATLAB + Arquivo do MATLAB + Файл MATLAB + Súbor MATLAB + Datoteka MATLAB + MATLAB-fil + MATLAB dosyası + файл MATLAB + MATLAB 文件 + MATLAB 檔 - + - + - + Meson source code + Meson-bronkode + Изходен код — Meson codi font en Meson zdrojový kód Meson Meson-kildekode Meson-Quelltext Πηγαίος κώδικας Meson - Meson source code + Meson source code código fuente en Meson Meson iturburu-kodea Meson-lähdekoodi code source Meson + codiç sorzint Meson cód foinseach Meson קוד מקור Meson Meson izvorni kôd @@ -35497,31 +36724,35 @@ còde font Meson Kod źródłowy Meson código origem Meson - Código-fonte Meson + Código-fonte Meson Исходный код Meson Zdrojový kód Meson + Izvorna koda Meson Месон изворни ко̂д Meson-källkod Meson kaynak kodu вихідний код мовою Meson - Meson 源代码 - Meson 源碼 + Meson 源代码 + Meson 源碼 Modelica model + Modelica-model + Модел — Modelica model de Modelica model Modelica Modelica-model Modelica-Modell Μοντέλο Modelica - Modelica model + Modelica model modelo de Modelica Modelica modeloa Modelica-malli modèle Modelica + model Modelica samhail Modelica Modelo de Modelica דגם של Modelica @@ -35537,7 +36768,7 @@ modèl Modelica Model Modelica modelo Modelica - Modelo da Modelica + Modelo da Modelica Модель Modelica Model Modelica Model Modelica @@ -35545,43 +36776,45 @@ Modelica-modell Modelica modeli модель Modelica - Modelica 模型 - Modelica 模型 + Modelica 模型 + Modelica 模型 - + - + - + - + - + Pascal source code + Pascal-bronkode شفرة مصدر باسكال - Kryničny kod Pascal + Kryničny kod Pascal Изходен код — Pascal codi font en Pascal zdrojový kód v jazyce Pascal - Pascalkildekode + Pascal-kildekode Pascal-Quelltext Πηγαίος κώδικας Pascal - Pascal source code + Pascal source code Pascal-fontkodo código fuente en Pascal Pascal iturburu-kodea Pascal-lähdekoodi Pascal keldukota code source Pascal + codiç sorzint Pascal cód foinseach Pascal código fonte en Pascal קוד מקור של Pascal @@ -35602,7 +36835,7 @@ còde font Pascal Kod źródłowy Pascal código origem Pascal - Código-fonte Pascal + Código-fonte Pascal Cod sursă Pascal Исходный код Pascal Zdrojový kód Pascal @@ -35613,29 +36846,31 @@ Pascal kaynak kodu вихідний код мовою Pascal Mã nguồn Pascal - Pascal 源代码 - Pascal 源碼 + Pascal 源代码 + Pascal 源碼 differences between files + verskille tussen lêers الاختلافات بين الملفات - adroźnieńni pamiž fajłami + adroźnieńni pamiž fajłami Разлики между файлове diferències entre fitxers rozdíly mezi soubory forskel mellem filer Unterschiede zwischen Dateien Διαφορές μεταξύ αρχείων - differences between files + differences between files diferencoj inter dosieroj diferencias entre archivos fitxategien arteko ezberdintasunak tiedostojen väliset erot munur millum fílur différences entre fichiers + diferencis tra file difríochtaí idir chomhaid diferenzas entre ficheiros הבדל בין קבצים @@ -35656,7 +36891,7 @@ différences entre fichièrs Różnica pomiędzy plikami diferenças entre ficheiros - Diferenças entre arquivos + Diferenças entre arquivos diferențe între fișiere Различия между файлами Rozdiely medzi súbormi @@ -35667,39 +36902,41 @@ dosyalar arasındaki fark різниця між файлами khác biệt giữa các tập tin - 文件的区别 - 檔案內容差異 + 文件的区别 + 檔案內容差異 - - - - - - - - - - + + + + + + + + + + Go source code + Go-bronkode Изходен код — Go codi font en Go zdrojový kód v jazyce Go Go-kildekode Go-Quelltext Πηγαίος κώδικας Go - Go source code + Go source code Go-fontkodo código fuente en Go Go iturburu-kodea Go-lähdekoodi code source Go + codiç sorzint Go cód foinseach Go código fonte de Go קוד מקור של Go @@ -35717,7 +36954,7 @@ còde font Go Kod źródłowy Go cigo origem Go - Código-fonte Go + Código-fonte Go Исходный код Go Zdrojový kód Go Izvorna koda Go @@ -35725,23 +36962,26 @@ Go-källkod Go kaynak kodu вихідний код мовою Go - Go 源代码 - Go 源碼 + Go 源代码 + Go 源碼 SCons configuration file + SCons-opstellingslêer + Настройки — SCons fitxer de configuració de SCons konfigurační soubor SCons SCons-konfigurationsfil SCons-Konfigurationsdatei Αρχείο ρυθμίσεων SCons - SCons configuration file + SCons configuration file archivo de configuración de SCons SCons konfigurazio-fitxategia SCons-asetustiedosto fichier de configuration SCons + file di configurazion SCons comhad cumraíochta SCons קובץ תצורה של SCons SCons datoteka podešavanja @@ -35754,7 +36994,7 @@ fichièr de configuracion SCons Plik konfiguracji SCons ficheiro de configuração SCons - Arquivo de configuração do SCons + Arquivo de configuração do SCons Файл настроек SCons Konfiguračný súbor SCons Prilagoditvena datoteka SCons @@ -35762,8 +37002,8 @@ SCons-konfigurationsfil SCons yapılandırma dosyası файл налаштувань SCons - SCons 配置文件 - SCons 組態檔 + SCons 配置文件 + SCons 組態檔 @@ -35771,12 +37011,19 @@ Python 3 script + Python 3-skrip + Скрипт — Python 3 script Python 3 skript v jazyce Python 3 + Python 3-program Python-3-Skript - Python 3 script + Python 3 script secuencia de órdenes en Python 3 + Python 3 script-a Python 3 -skripti + script Python 3 + script Python 3 + script Python 3 Python3 skripta Python 3 parancsfájl Skrip Python 3 @@ -35784,47 +37031,51 @@ Python 3 скрипті 파이썬 3 스크립트 Skrypt Python 3 - Script Python 3 + Script Python 3 Сценарий Python 3 Skript Python 3 + Skript Python 3 Python 3-skript + Python 3 betiği скрипт мовою Python 3 - Python 3 脚本 - Python 3 指令稿 - - - - - - - - - - - - - - - - + Python 3 脚本 + Python 3 指令稿 + + + + + + + + + + + + + + + + Python script + Python-skrip سكربت بايثون - Skrypt Python + Skrypt Python Скрипт — Python script Python skript v jazyce Python - Pythonprogram + Python-program Python-Skript Δέσμη ενεργειών Python - Python script + Python script Python-skripto secuencia de órdenes en Python Python script-a Python-komentotiedosto Python boðrøð script Python + script Python script Python Script en Python תסריט Python @@ -35845,7 +37096,7 @@ escript Python Skrypt Python script Python - Script Python + Script Python Script Python Сценарий Python Skript Python @@ -35856,43 +37107,56 @@ Python betiği скрипт мовою Python Văn lệnh Python - Python 脚本 - Python 指令稿 - - - - - - - - - - - - - - - - - + Python 脚本 + Python 指令稿 + + + + + + + + + + + + + + + + + + + + SageMath script + script SageMath + SageMath skripti + Script SageMath + Skrypt SageMath + Script SageMath + скрипт SageMath + + Lua script + Lua-skrip سكربت Lua - Skrypt Lua + Skrypt Lua Скрипт на Lua script Lua skript v jazyce Lua - Luaprogram + Lua-program Lua-Skript Δέσμη ενεργειών Lua - Lua script + Lua script Lua-skripto secuencia de órdenes en Lua Lua script-a Lua-komentotiedosto Lua boðrøð script Lua + script Lua script Lua script de Lua תסריט Lua @@ -35912,7 +37176,7 @@ escript Lua Skrypt Lua script Lua - Script Lua + Script Lua Script Lua Сценарий Lua Skript Lua @@ -35923,24 +37187,25 @@ Lua betiği скрипт Lua Văn lệnh Lua - Lua 脚本 - Lua 指令稿 - + Lua 脚本 + Lua 指令稿 + - - - - + + + + README document + README-dokument مستند README Documentu LLEIME README sənədi - Dakument README + Dakument README Документ — „Да се прочете“ document README dokument README @@ -35948,13 +37213,14 @@ README-dokument README-Dokument Έγγραφο README - README document + README document README-dokumento documento README README dokumentua LUEMINUT-asiakirja README skjal document LISEZ-MOI + document README cáipéis README documento README מסמך README @@ -35975,7 +37241,7 @@ document LISEZ-MOI Dokument README documento LEIA-ME - Documento README + Documento README Document README Документ README Dokument README @@ -35983,32 +37249,34 @@ Dokument README документ ПРОЧИТАЈМЕ README-dokument - BENİOKU belgesi + README belgesi документ README Tài liệu Đọc Đi (README) - README 文档 - README 說明文件 + README 文档 + README 說明文件 NFO document + NFO-dokument مستند NFO Documentu NFO - Dakument NFO + Dakument NFO Документ — NFO document NFO dokument NFO NFO-dokument NFO-Dokument Έγγραφο NFO - NFO document + NFO document NFO-dokumento documento NFO NFO dokumentua NFO-asiakirja NFO skjal document NFO + document NFO cáipéis NFO documento NFO מסמך NFO @@ -36028,7 +37296,7 @@ document NFO Dokument NFO documento NFO - Documento NFO + Documento NFO Document NFO Документ NFO Dokument NFO @@ -36039,27 +37307,29 @@ NFO belgesi документ NFO Tài liệu NFO - NFO 文档 - NFO 文件 + NFO 文档 + NFO 文件 RPM spec file + RPM-spesifikasielêer ملف مواصفات RPM - Specyfikacyjny fajł RPM + Specyfikacyjny fajł RPM Файл — спецификация за RPM fitxer spec RPM soubor specifikace RPM RPM spec-fil RPM-Spezifikationsdatei Αρχείο spec RPM - RPM spec file + RPM spec file archivo de especificaciones RPM RPM espezifikazio fitxategia RPM spec -tiedosto RPM tøknilýsingarfíla fichier de spécification RPM + file di specifiche RPM comhad spec RPM ficheiro de especificacións RPM קובץ מפרט RPM @@ -36079,7 +37349,7 @@ fichièr d'especificacion RPM Plik spec RPM ficheiro de especificações RPM - Arquivo de especificação RPM + Arquivo de especificação RPM Fișier RPM spec Файл описания RPM Súbor RPM spec @@ -36090,61 +37360,70 @@ RPM spec dosyası spec-файл RPM Tập tin đặc tả RPM - RPM spec 文件 - RPM spec 規格檔 + RPM spec 文件 + RPM spec 規格檔 RPM Red Hat Package Manager - - + + Sass CSS pre-processor file + Sass CSS-voorverwerkerlêer + Директиви за препроцесора — Sass CSS fitxer preprocessador CSS Sass soubor preprocesoru Sass CSS - Sass CSS-forbrænderfil + Sass CSS pre-processor-fil Sass-CSS-Präprozessordatei - Sass CSS pre-processor file + Sass CSS pre-processor file archivo de preprocesador de CSS Sass + Sass CSS fitxategi prozesatu gabea + Sass CSS pre-processor -tiedosto fichier de prétraitement CSS Sass + file di pre-elaborazion di CSS Sass comhad réamhphróiseálaí CSS Sass קובץ קדם עיבוד Sass CSS Sass CSS datoteka predobrade Sass CSS előfeldolgozó fájl - berkas pre-processor Sass CSS + Berkas pre-processor Sass CSS File CSS Sass Sass CSS препроцессор файлы Sass CSS 전처리기 파일 Plik preprocesora CSS Sass - Arquivo de pré-processamento Sass CSS + Arquivo de pré-processamento Sass CSS Файл препроцессора Sass CSS Súbor Sass CSS pre-procesora датотека Сас ЦСС пре-процесора Sass CSS-preprocessorfil Sass CSS önişlemci dosyası файл препроцесора CSS Sass - Sass CSS 预处理器文件 - Sass CSS 處理器前檔案 + Sass CSS 预处理器文件 + Sass CSS 處理器前檔案 + Sass + Syntactically Awesome Style Sheets Scala source code + Scala-bronkode Изходен код — Scala codi font en Scala zdrojový kód Scala Scala-kildekode Scala-Quelltext Πηγαίος κώδικας Scala - Scala source code + Scala source code código fuente en Scala Scala iturburu-kodea Scala-lähdekoodi code source Scala + codiç sorzint Scala cód foinseach Scala código fnote en Scala קוד מקור של Scala @@ -36162,7 +37441,7 @@ còde font Scala Kod źródłowy Scala código origem Scala - Código-fonte Scala + Código-fonte Scala Исходный код Scala Zdrojový kód Scala Izvorna koda Scala @@ -36170,30 +37449,32 @@ Scala-källkod Scala kaynak kodu вихідний код мовою Scala - Scala 源代码 - Scala 源碼 + Scala 源代码 + Scala 源碼 Scheme source code + Scheme-bronkode شفرة مصدر Scheme Sxem mənbə kodu - Kryničny kod Scheme + Kryničny kod Scheme Изходен код — Scheme codi font en Scheme zdrojový kód Scheme Ffynhonnell Rhaglen Scheme - Schemekildekode + Scheme-kildekode Scheme-Quelltext Πηγαίος κώδικας Scheme - Scheme source code + Scheme source code Scheme-fontkodo código fuente en Scheme Scheme iturburu-kodea Scheme-lähdekoodi Scheme keldukota code source Scheme + codiç sorzint Scheme cód foinseach Scheme código fonte en Scheme קוד מקור של Scheme @@ -36214,7 +37495,7 @@ còde font Scheme Kod źródłowy Scheme código origem Scheme - Código-fonte Scheme + Código-fonte Scheme Cod sursă Scheme Исходный код Scheme Zdrojový kód Scheme @@ -36225,49 +37506,50 @@ Scheme kaynak kodu вихідний файл мовою Scheme Mã nguồn Scheme - Scheme 源代码 - Scheme 源碼 + Scheme 源代码 + Scheme 源碼 - Sass CSS pre-processor file - fitxer preprocessador CSS Sass - soubor preprocesoru Sass CSS - Sass CSS-forbrænderfil - Sass-CSS-Präprozessordatei - Sass CSS pre-processor file - archivo de preprocesador de CSS Sass - fichier de prétraitement CSS Sass - comhad réamhphróiseálaí CSS Sass - קובץ קדם עיבוד Sass CSS - Sass CSS datoteka predobrade - Sass CSS előfeldolgozó fájl - berkas pre-processor Sass CSS - File CSS Sass - Sass CSS препроцессор файлы - Sass CSS 전처리기 파일 - Plik preprocesora CSS Sass - Arquivo de pré-processamento Sass CSS - Файл препроцессора Sass CSS - Súbor Sass CSS pre-procesora - датотека Сас ЦСС пре-процесора - Sass CSS-preprocessorfil - Sass CSS önişlemci dosyası - файл препроцесора CSS Sass - Sass CSS 预处理器文件 - Sass CSS 處理器前檔案 + SCSS pre-processor file + Директиви за препроцесора — SCSS + fitxer preprocessador SCSS + SCSS pre-processor-fil + SCSS-Präprozessordatei + SCSS pre-processor file + archivo de preprocesador SCSS + SCSS fitxategi prozesatu gabea + SCSS pre-processor -tiedosto + fichier de prétraitement SCSS + SCSS datoteka predobrade + SCSS előfeldolgozófájl + Berkas preprosesor SCSS + File SCSS + SCSS препроцессор файлы + SCSS 전처리 파일 + Plik preprocesora SCSS + Arquivo de pré-processamento SCSS + Файл препроцессора SCSS + SCSS förprocessorfil + SCSS ön işleyici dosyası + файл засобу попередньої обробки SCSS + SCSS 预处理文件 + SCSS 前處理器檔 + SCSS + Sassy CSS Setext document + Setext-dokument مستند Setext Documentu Setext Setext sənədi - Dakument Setext + Dakument Setext Документ — Setext document Setext dokument Setext @@ -36275,13 +37557,14 @@ Setextdokument Setext-Dokument Έγγραφο Setext - Setext document + Setext document Setext-dokumento documento Setext Setext dokumentua Setext-asiakirja Setext skjal document Setext + document Setext cáipéis Setext documento Settext מסמך של Setext @@ -36302,7 +37585,7 @@ document Setext Dokument Setext documento Setext - Documento Setext + Documento Setext Document Setext Документ Setext Dokument Setext @@ -36313,16 +37596,17 @@ Setext belgesi документ Setext Tài liệu Setext - Setext 文档 - Setext 文件 + Setext 文档 + Setext 文件 SQL code + SQL-kode شفرة SQL SQL kodu - Kod SQL + Kod SQL Код — SQL codi en SQL kód SQL @@ -36330,13 +37614,14 @@ SQL-kode SQL-Befehle Κώδικας SQL - SQL code + SQL code SQL-kodo código SQL SQL kodea SQL-koodi SQL kota code SQL + codiç SQL cód SQL código SQL קוד SQL @@ -36357,7 +37642,7 @@ còde SQL Kod SQL código SQL - Código SQL + Código SQL Cod SQL Код SQL Kód SQL @@ -36368,29 +37653,31 @@ SQL kodu код SQL Mã SQL - SQL 代码 - SQL 程式碼 + SQL 代码 + SQL 程式碼 - + Tcl script + Tcl-skrip سكربت Tcl - Skrypt Tcl + Skrypt Tcl Скрипт — Tcl script Tcl skript Tcl Tcl-program Tcl-Skript Δέσμη ενεργειών Tcl - Tcl script + Tcl script Tcl-skripto secuencia de órdenes en Tcl Tcl script-a Tcl-komentotiedosto Tcl boðrøð script Tcl + script Tcl script Tcl Script en Tcl תסריט Tcl @@ -36411,7 +37698,7 @@ escript Tcl Skrypt Tcl script Tcl - Script Tcl + Script Tcl Script Tcl Сценарий Tcl Skript Tcl @@ -36422,17 +37709,19 @@ Tcl betiği скрипт Tcl Văn lệnh Tcl - Tcl 脚本 - Tcl 描述語言檔 + Tcl 脚本 + Tcl 描述語言檔 + TeX document + TeX-dokument مستند TeX Documentu TeX - Dakument TeX + Dakument TeX Документ — TeX document TeX dokument TeX @@ -36440,13 +37729,14 @@ TeX-dokument TeX-Dokument Έγγραφο TeX - TeX document + TeX document TeX-dokumento documento de TeX TeX dokumentua TeX-asiakirja TeX skjal document TeX + document TeX cáipéis TeX documenton TeX מסמך TeX @@ -36467,7 +37757,7 @@ document TeX Dokument TeX documento TeX - Documento TeX + Documento TeX Document TeX Документ TeX Dokument TeX @@ -36478,8 +37768,8 @@ TeX belgesi документ TeX Tài liệu TeX - TeX 文档 - TeX 文件 + TeX 文档 + TeX 文件 @@ -36490,18 +37780,19 @@ - + - + TeXInfo document + TeXInfo-dokument مستند TeXInfo Documentu TeXInfo TeXInfo sənədi - Dakument TeXInfo + Dakument TeXInfo Документ — TeXInfo document TeXInfo dokument TeXInfo @@ -36509,13 +37800,14 @@ TeXInfo-dokument TeXInfo-Dokument Έγγραφο TeXInfo - TeXInfo document + TeXInfo document TeXInfo-dokumento documento de TeXInfo TeXInfo dokumentua TeXInfo-asiakirja TeXInfo skjal document TeXInfo + document TeXInfo cáipéis TeXInfo documento TeXInfo מסמך של TeXInfo @@ -36536,7 +37828,7 @@ document TeXInfo Dokument TeXInfo documento TeXInfo - Documento TeXInfo + Documento TeXInfo Document TexInfo Документ TeXInfo Dokument TeXInfo @@ -36547,30 +37839,32 @@ TeXInfo belgesi документ TeXInfo Tài liệu TeXInfo - TeXInfo 文档 - TeXInfo 文件 + TeXInfo 文档 + TeXInfo 文件 Troff ME input document + Troff ME-toevoerdokument مستند Troff ME input Documentu d'entrada de Troff ME - Uvodny dakument Troff ME + Uvodny dakument Troff ME Изходен документ — Troff ME document d'entrada Troff ME vstupní dokument Troff ME Troff ME inddata-dokument Troff-ME-Eingabedokument Έγγραφο εντολών troff ME - Troff ME input document + Troff ME input document eniga dokumento de Troff ME documento de entrada Troff ME Troff ME sarrerako dokumentua Troff ME -syöteasiakirja Troff ME inntaksskjal document d'entrée Troff ME + document di jentrade Troff ME cáipéis ionchurtha Troff ME documento de entrada Troff ME מסמך קלט של Troff ME @@ -36591,7 +37885,7 @@ document d'entrada Troff ME Dokument wejściowy Troff ME documento origem Troff ME - Documento de entrada Troff ME + Documento de entrada Troff ME Document intrare Troff ME Входной документ Troff ME Vstupný dokument Troff ME @@ -36602,29 +37896,31 @@ Troff ME girdi belgesi вхідний документ Troff ME Tài liệu nhập ME Troff - Troff ME 输入文档 - Troff ME 輸入文件 + Troff ME 输入文档 + Troff ME 輸入文件 Troff MM input document + Troff MM-toevoerdokument مستند Troff MM input Documentu d'entrada de Troff MM - Uvodny dakument Troff MM + Uvodny dakument Troff MM Изходен документ — Troff MM document d'entrada Troff MM vstupní dokument Troff MM Troff MM inddata-dokument Troff-MM-Eingabedokument Έγγραφο εντολών troff MM - Troff MM input document + Troff MM input document eniga dokumento de Troff MM documento de entrada Troff MM Troff MM sarrerako dokumentua Troff MM -syöteasiakirja Troff MM inntaksskjal document d'entrée Troff MM + document di jentrade Troff MM cáipéis ionchurtha Troff MM documento de entrada Troff MM מסמך קלט של Troff MM @@ -36645,7 +37941,7 @@ document d'entrada Troff MM Dokument wejściowy Troff MM documento origem Troff MM - Documento de entrada Troff MM + Documento de entrada Troff MM Document intrare Troff MM Входной документ Troff MM Vstupný dokument Troff MM @@ -36656,29 +37952,31 @@ Troff MM girdi belgesi вхідний документ Troff MM Tài liệu nhập MM Troff - Troff MM 输入文档 - Troff MM 輸入文件 + Troff MM 输入文档 + Troff MM 輸入文件 Troff MS input document + Troff MS-toevoerdokument مستند Troff MS input Documentu d'entrada de Troff MS - Uvodny dakument Troff MS + Uvodny dakument Troff MS Изходен документ — Troff MS document d'entrada Troff MS vstupní dokument Troff MS Troff MS inddata-dokument Troff-MS-Eingabedokument Έγγραφο εντολών troff MS - Troff MS input document + Troff MS input document eniga dokumento de Troff MS documento de entrada Troff MS Troff MS sarrerako dokumentua Troff MS -syöteasiakirja Troff MS inntaksskjal document d'entrée Troff MS + document di jentrade Troff MS cáipéis ionchurtha Troff MS documento de entrada Troff MS מסמך קלט של Troff MS @@ -36699,7 +37997,7 @@ document d'entrada Troff MS Dokument wejściowy Troff MS documento origem Troff MS - Documento de entrada Troff MS + Documento de entrada Troff MS Document intrare Troff MS Входной документ Troff MS Vstupný dokument Troff MS @@ -36710,59 +38008,65 @@ Troff MS girdi belgesi вхідний документ Troff MS Tài liệu nhập MS Troff - Troff MS 输入文档 - Troff MS 輸入文件 + Troff MS 输入文档 + Troff MS 輸入文件 Twig template + Twig-sjabloon + Шаблон — Twig plantilla Twig šablona Twig Twig-skabelon Twig-Vorlage - Twig template + Twig template plantilla de Twig Twig txantiloia + Twig-malli modèle Twig + model Twig teimpléad Twig תבנית Twig Twig predložak Twig-sablon - templat Twig + Templat Twig Modello twig Twig үлгісі Twig 문서 서식 Szablon Twig - Modelo Twig + Modelo Twig Шаблон Twig Šablóna Twig Твиг шаблон Twig-mall Twig şablonu шаблон twig - Twig 模板 - Twig 範本 + Twig 模板 + Twig 範本 X-Motif UIL table + X-Motif UIL-tabel جدول X-Motif UIL - Tablica X-Motif UIL + Tablica X-Motif UIL Таблица — X-Motif UIL taula UIL de X-Motif tabulka X-Motif UIL X-Motif UIL-tabel X-Motif-UIL-Tabelle Πίνακας X-Motif UIL - X-Motif UIL table + X-Motif UIL table tabla de X-Motif UIL X-Motif UIL taula X-Motif UIL -taulukko X-Motif UIL talva table X-Motif UIL + tabele X-Motif UIL tábla X-Motif UIL Táboa de X-Motif UIL טבלה של X-Motif UIL @@ -36783,7 +38087,7 @@ taula X-Motif UIL Tabela UIL X-Motif tabela UIL do X-Motif - Tabela UIL do X-Motif + Tabela UIL do X-Motif Tabel X-Motif UIL Таблица UIL X-Motif Tabuľka X-Motif UIL @@ -36794,28 +38098,29 @@ X-Motif UIL tablosu таблиця X-Motif UIL Bảng UIL X-Motif - X-Motif UIL 表 - X-Motif UIL 表格 + X-Motif UIL 表 + X-Motif UIL 表格 resource location موقع المورد - pałažeńnie resursu + pałažeńnie resursu Местоположение на ресурс localització de recurs umístění prostředku resurseplacering Ressourcenort Τοποθεσία πόρου - resource location + resource location loko de risurco ubicación del recurso baliabidearen kokalekua resurssisijainti tilfeingisstaður localisation de ressource + posizion risorse suíomh acmhainne localización do recurso מיקום של משאב @@ -36836,7 +38141,7 @@ localizacion de ressorsa Położenie zasobu localização de recurso - Localização de recurso + Localização de recurso locație de resursă Расположение ресурса Umiestnenie zdroja @@ -36847,29 +38152,33 @@ kaynak ayırma розташування ресурсу địa điểm tài nguyên - 资源位置 - 資源位置 + 资源位置 + 資源位置 - + uuencoded file + uu-geënkodeerde lêer + Файл — кодиран с uuencode fitxer uuencoded soubor kódovaný pomocí uuencoding uuencodede-fil Datei im uuencode-Format Αρχείο κωδικοποιημένο unix σε unix (uuencoded) - uuencoded file + uuencoded file archivo codificado con uuencode uuencode-aturiko fitxategia + uuencoded tiedosto fichier uuencodé + file codificât cun uuencode comhad uuencoded Ficheiro uuencoded קובץ בקידוד uu uuencoded datoteka uuencode-olt fájl File in uuencode - Berkas ter-uuencode + berkas ter-uuencode File uuencoded 未エンコードファイル uuencode кодталған файлы @@ -36878,7 +38187,7 @@ fichièr uuencodat Plik zakodowany za pomocą uuencode ficheiro uuencoded - Arquivo codificado UUE + Arquivo codificado UUE Файл, кодированный uuencode Súbor v kódovaní uuencode Datoteka uuencode @@ -36886,32 +38195,56 @@ uuencode-fil uuencoded dosyası файл даних у форматі UUE - Uuencode 文件 - uuencoded 檔 + Uuencode 文件 + uuencoded 檔 - + + + VBScript program + programa VBScript + VBScript-program + VBScript-Programm + VBScript program + programa en VBScript + VBScript-ohjelma + programme VBScript + VBScript program + Programma VBScript + Pogram VBScript + Programa VBScript + VBScript-program + програма мовою VBScript + VBScript 程序 + VBScript 程式 + + + + + XMI file + XMI-lêer ملف XMI - Fajł XMI + Fajł XMI Файл — XMI fitxer XMI soubor XMI XMI-fil XMI-Datei Αρχείο XML - XMI file + XMI file XMI-dosiero archivo XMI XMI fitxategia XMI-tiedosto XMI fíla fichier XMI + file XMI comhad XMI ficheiro XMI קובץ XMI @@ -36931,7 +38264,7 @@ fichièr XMI Plik XMI ficheiro XMI - Arquivo XMI + Arquivo XMI Fișier XMI Файл XMI Súbor XMI @@ -36942,8 +38275,8 @@ XMI dosyası файл XMI Tập tin XMI - XMI 文件 - XMI 檔 + XMI 文件 + XMI 檔 XMI XML Metadata Interchange @@ -36953,21 +38286,23 @@ XSL FO file + XSL FO-lêer ملف XSL FO - Fajł XSL FO + Fajł XSL FO Форматиращ файл — XSL FO fitxer FO XSL soubor XSL FO XML FO-fil XSL-FO-Datei Αρχείο XSL FO - XSL FO file + XSL FO file XSL-FO-dosiero archivo XSL FO XSL FO fitxategia XSL FO -tiedosto XSL FO fíla fichier XSL FO + file XSL FO comhad XSL FO ficheiro XSL FO קובץ XSL FO @@ -36987,7 +38322,7 @@ fichièr XSL FO Plik XSL FO ficheiro XSL FO - Arquivo XSL FO + Arquivo XSL FO Fișier XSL FO Файл XSL FO Súbor XSL FO @@ -36998,8 +38333,8 @@ XSL FO dosyası файл XSL FO Tập tin FO của XSL (XFO) - XSL 格式化对象文件 - XSL FO 檔 + XSL 格式化对象文件 + XSL FO 檔 XSL FO XSL Formatting Objects @@ -37009,21 +38344,23 @@ iptables configuration file + iptables-opstellingslêer ملف تضبيط iptables ficheru de configuración d'iptables - kanfihuracyjny fajł iptables + kanfihuracyjny fajł iptables Настройки за iptables fitxer de configuració d'iptables soubor nastavení iptables iptableskonfigurationsfil iptables-Konfigurationsdatei Αρχείο ρυθμίσεων iptables - iptables configuration file + iptables configuration file archivo de configuración de iptables iptables konfigurazio-fitxategia iptables-asetustiedosto iptables samansetingarfíla fichier de configuration iptables + file di configurazion di iptables comhad cumraíochta iptables ficheiro de configuración de iptables קובץ הגדרה של iptables @@ -37043,7 +38380,7 @@ fichièr de configuracion iptables Plik konfiguracji iptables ficheiro de configuração iptables - Arquivo de configuração do iptables + Arquivo de configuração do iptables fișier configurare iptables Файл настроек iptables Súbor nastavení iptables @@ -37054,26 +38391,26 @@ iptables yapılandırma dosyası файл налаштувань iptables tập tin cấu hình iptables - iptables 防火墙配置文件 - iptables 組態檔 + iptables 防火墙配置文件 + iptables 組態檔 - - - - - + + + + + - - - + + + - - - + + + @@ -37081,49 +38418,57 @@ D-Bus service file + D-Bus-dienslêer + Услуга — D-Bus fitxer de servei de D-Bus soubor služby D-Bus + D-Bus-tjenestefil D-Bus-Dienstdatei - D-Bus service file + D-Bus service file archivo de servicio de D-Bus D-Bus zerbitzu fitxategia D-Bus-palvelutiedosto fichier de service D-Bus + file di servizi D-Bus comhad seirbhíse D-Bus Datoteka D-Bus usluge D-Bus szolgáltatás fájl - berkas layanan D-Bus + Berkas layanan D-Bus File servizio D-Bus D-Bus қызметтік файлы D-Bus 서비스 파일 Plik usługi D-Bus - Arquivo de serviço do D-Bus + Arquivo de serviço do D-Bus Файл службы D-Bus Súbor služby D-Bus датотека услуге Д-сабирнице D-BUS-tjänstfil D-Bus hizmeti dosyası файл служби D-Bus - D-Bus 服务文件 - D-Bus 服務檔 + D-Bus 服务文件 + D-Bus 服務檔 - - + + systemd unit file + systemd-eenheidlêer ficheru d'unidaes de systemd + Елемент — systemd fitxer d'unitat de systemd jednotkový soubor systemd + systemd unit-fil systemd-Einheitsdatei - systemd unit file + systemd unit file archivo de unidad de systemd systemd unitate fitxategia systemd-yksikkötiedosto fichier d'unité systemd + file unitât di systemd comhad aonaid systemd Datoteka systemd jedinice systemd egység fájl @@ -37132,44 +38477,44 @@ systemd юнит файлы systemd 유닛 파일 Plik jednostki systemd - Arquivo de unit do systemd + Arquivo de unit do systemd Модульный файл Systemd Súbor jednotky systemd датотека јединице системд-а systemd-enhetsfil systemd birim dosyası файл модуля systemd - systemd 单元文件 - systemd 單位檔 + systemd 单元文件 + systemd 單位檔 - - - - - - - - - - - - - - + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + @@ -37185,21 +38530,23 @@ XSLT stylesheet + XSLT-stylblad نمط XSLT - Arkuš stylaŭ XSLT + Arkuš stylaŭ XSLT Стилове — XSLT full d'estil XSLT stylopis XSLT XSLT-stilark XSLT-Stylesheet Φύλλο στυλ XSLT - XSLT stylesheet + XSLT stylesheet XSLT-stilfolio hoja de estilos XSLT XSLT estilo-orria XSLT-tyylitiedosto XSLT sniðark feuille de style XSLT + sfuei di calcul XSLT stílbhileog XSLT folla de estilo XSLT גליון סגנון XSLT @@ -37220,7 +38567,7 @@ fuèlh d'estil XSLT Arkusz stylów XSLT folha de estilos XSLT - Folha de estilo XSLT + Folha de estilo XSLT Fișă de stil XSLT Таблица стилей XSLT Štýl XSLT @@ -37231,35 +38578,72 @@ XSLT çalışma sayfası таблиця стилів XSLT Tờ kiểu dáng XSLT - XSLT 样式表 - XSLT 樣式表 + XSLT 样式表 + XSLT 樣式表 XSLT eXtensible Stylesheet Language Transformation - + + + Maven description file + Maven-beskrywingslêer + Модел — Maven + fitxer de descripció Maven + popisný soubor Maven + Maven-beskrivelsesfil + Maven-Beschreibungsdatei + Maven description file + archivo de descripción de Maven + Maven azalpen fitxategia + Maven-kuvaustiedosto + fichier de description Maven + file di descrizion Maven + cur síos Maven + Maven datoteka opisa + Maven leírófájl + Berkas deskripsi Maven + File descrizione Mave + Maven сипаттама файлы + Maven 설명 파일 + Plik opisu Maven + Arquivo de descrição Maven + Файл описания Maven + Súbor popisu Maven + Maven-beskrivningsfil + Maven açıklama dosyası + файл опису Maven + Maven 描述文件 + Maven 描述檔 + + + + + XMCD CD database + XMCD CD-databasis قاعدة بيانات XMCD CD - Baza źviestak ab dyskach XMCD + Baza źviestak ab dyskach XMCD База от данни за CD-та — XMCD base de dades de CD XMCD databáze XMCD CD XMCD-cd-database XMCD-CD-Datenbank Βάση δεδομένων CD XMCD - XMCD CD database + XMCD CD database base de datos de CD XMCD XMCD CD datu-basea XMCD CD -tietokanta XMCD fløgu dátustovnur base de données de CD XMCD + base di dâts XMCD CD bunachar sonraí XMCD CD base de datos de CD XMCD מסד נתונים XMCD CD @@ -37279,7 +38663,7 @@ banca de donadas de CD XMCD Baza danych CD XMCD base de dados XMCD CD - Banco de dados de CD XMCD + Banco de dados de CD XMCD Bază de date XMCD CD База данных компакт-дисков XMCD Databáza XMCD CD @@ -37287,34 +38671,36 @@ Bazë me të dhëna XMCD CD ИксМЦД ЦД база података XMCD cd-databas - XMCD CD veritabanı + XMCD CD veri tabanı база даних XMCD CD Cơ sở dữ liệu CD XMCD - XMCD CD 数据库 - XMCD CD 資料庫 + XMCD CD 数据库 + XMCD CD 資料庫 - + XML document + XML-dokument مستند XML Documentu XML - Dakument XML + Dakument XML Документ — XML document XML dokument XML XML-dokument XML-Dokument Έγγραφο XML - XML document + XML document XML-dokumento documento XML XML dokumentua XML-asiakirja XML skjal document XML + document XML cáipéis XML documento XML מסמך XML @@ -37334,7 +38720,7 @@ document XML Dokument XML documento XML - Documento XML + Documento XML Document XML Документ XML Dokument XML @@ -37345,15 +38731,14 @@ XML belgesi документ XML Tài liệu XML - XML 文档 - XML 文件 + XML 文档 + XML 文件 XML eXtensible Markup Language - - + @@ -37363,21 +38748,23 @@ XML entities document + XML-entiteitedokument مستند كيانات XML Documentu d'entidaes XML - Dakument elementaŭ XML + Dakument elementaŭ XML Документ — заместващи последователности в XML document d'entitats XML dokument entit XML XML-enhedsdokument XML-Dokument-Entitäten Έγγραφο οντοτήτων XML - XML entities document + XML entities document documento de entidades XML XML entitateen dokumentua XML-entiteettiasiakirja XML einindisskjal document d'entités XML + document entitâts XML cáipéis aonán XML documento de entidades XML מסמך ישויות XML @@ -37397,7 +38784,7 @@ document d'entitats XML Dokument jednostek XML documento de entidades XML - Documento de entidades XML + Documento de entidades XML Document entități XML Файл сущностей XML Dokument entít XML @@ -37408,8 +38795,8 @@ XML varlıklar belgesi документ об’єктів XML Tài liệu thực thể XML - XML 特征文档 - XML 實體文件 + XML 特征文档 + XML 實體文件 XML eXtensible Markup Language @@ -37419,22 +38806,24 @@ DV video + DV-video DV مرئي Videu en DV - Videa DV + Videa DV Видео — DV vídeo DV video DV DV-video DV-Video Βίντεο DV - DV video + DV video DV-video vídeo DV DV bideoa DV-video DV video vidéo DV + video DV físeán DV vídeo DV וידאו DV @@ -37455,7 +38844,7 @@ vidèo DV Plik wideo DV vídeo DV - Vídeo DV + Vídeo DV Video DV Видео DV Video DV @@ -37466,21 +38855,22 @@ DV video відеокліп DV Ảnh động DV - DV 视频 - DV 視訊 + DV 视频 + DV 視訊 DV Digital Video - + ISI video + ISI-video مرئي ISI Videu n'ISI ISI video faylı - Videa ISI + Videa ISI Видео — ISI vídeo ISI video ISI @@ -37488,13 +38878,14 @@ ISI-video ISI-Video Βίντεο ISI - ISI video + ISI video ISI-video vídeo ISI ISI bideoa ISI-video ISI video vidéo ISI + video ISI físeán ISI vídeo ISI וידאו ISI @@ -37515,7 +38906,7 @@ vidèo ISI Plik wideo ISI vídeo ISI - Vídeo ISI + Vídeo ISI Video ISI Видео ISI Video ISI @@ -37526,11 +38917,12 @@ ISI videosu відеокліп ISI Ảnh động ISI - ISI 视频 - ISI 視訊 + ISI 视频 + ISI 視訊 MPEG-2 transport stream + MPEG-2-vervoerstroom بث نقل MPEG-2 Поток — транспорт по MPEG-2 flux de transport MPEG-2 @@ -37538,12 +38930,13 @@ MPEG-2-transportstrøm MPEG-2-Transportstrom Ροή μεταφοράς MPEG-2 - MPEG-2 transport stream + MPEG-2 transport stream flujo de transporte MPEG-2 MPEG-2 korronte garraioa MPEG-2 -siirtobittivirta MPEG-2 flutningsstreymur flux de transport MPEG-2 + flus di traspuart MPEG-2 sruth aistrithe MPEG-2 fluxo de transporte MPEG-2 העברת זרימה של MPEG-2 @@ -37562,7 +38955,7 @@ flux de transpòrt MPEG-2 Strumień przesyłania MPEG-2 fluxo de transporte MPEG-2 - Fluxo de transporte de MPEG-2 + Fluxo de transporte de MPEG-2 Flux transport MPEG-2 Транспортный поток MPEG-2 MPEG-2 Transport Stream @@ -37571,25 +38964,25 @@ MPEG-2 transportström MPEG-2 aktarım akışı потік передавання даних MPEG-2 - MPEG-2 传输流 - MPEG-2 傳輸串流 + MPEG-2 传输流 + MPEG-2 傳輸串流 MPEG-2 TS Moving Picture Experts Group 2 Transport Stream - - - - - + + + + + - - - - - + + + + + @@ -37608,22 +39001,24 @@ MPEG video + MPEG-video MPEG مرئي Videu en MPEG - Videa MPEG + Videa MPEG Видео — MPEG vídeo MPEG video MPEG MPEG-video MPEG-Video Βίντεο MPEG - MPEG video + MPEG video MPEG-video vídeo MPEG MPEG bideoa MPEG-video MPEG video vidéo MPEG + video MPEG físeán MPEG vídeo MPEG וידאו MPEG @@ -37645,7 +39040,7 @@ vidèo MPEG Plik wideo MPEG vídeo MPEG - Vídeo MPEG + Vídeo MPEG Video MPEG Видео MPEG Video MPEG @@ -37656,8 +39051,8 @@ MPEG videosu відеокліп MPEG Ảnh động MPEG - MPEG 视频 - MPEG 視訊 + MPEG 视频 + MPEG 視訊 MPEG Moving Picture Experts Group @@ -37665,9 +39060,9 @@ - - - + + + @@ -37677,50 +39072,11 @@ - MPEG video (streamed) - Videu en MPEG (tresmitíu) - Видео — MPEG, поточно - vídeo MPEG (flux) - video MPEG (proud) - MPEG-video (streamet) - MPEG-Video (Datenstrom) - Βίντεο MPEG (εκπεμπόμενο) - MPEG video (streamed) - vídeo MPEG (transmisión) - MPEG bideoa (korronte bidez) - MPEG-video (virtaus) - vidéo MPEG (flux) - físeán MPEG (sruthaithe) - vídeo MPEG (en stream) - קובץ MPEG (בהזרמה) - MPEG video snimka (strujanje) - MPEG videó (szórt) - Video MPEG (in fluxo) - Video MPEG (di-stream-kan) - Video MPEG (streamed) - MPEG ビデオ(ストリーム) - MPEG ვიდეო (ნაკადი) - MPEG видео (ағымдық) - MPEG 동영상(스트리밍) - MPEG video (straumēts) - MPEG video (streamed) - vidèo MPEG (flux) - Plik wideo MPEG (strumień) - vídeo MPEG (em fluxo) - Vídeo MPEG (fluxo) - Видео MPEG (потоковое) - MPEG video (streamované) - MPEG-video (pretočni) - МПЕГ видео (проточни) - MPEG-video (strömmad) - MPEG videosu (akış) - відеокліп MPEG (потоковий) - MPEG 视频流媒体 - MPEG 視訊 (串流) + Video playlist - + @@ -37728,22 +39084,24 @@ QuickTime video + QuickTime-video QuickTime مرئي Videu en QuickTime - Videa QuickTime + Videa QuickTime Видео — QuickTime vídeo QuickTime video QuickTime QuickTime-video QuickTime-Video Βίντεο QuickTime - QuickTime video + QuickTime video QuickTime-video vídeo QuickTime QuickTime bideoa QuickTime-video QuickTime video vidéo QuickTime + video QuickTime físeán QuickTime vídeo QuickTime וידאו של QuickTime @@ -37764,7 +39122,7 @@ vidèo QuickTime Plik wideo QuickTime vídeo QuickTime - Vídeo do QuickTime + Vídeo do QuickTime Video QuickTime Видео QuickTime Video QuickTime @@ -37775,13 +39133,13 @@ QuickTime videosu відеокліп QuickTime Ảnh động QuickTime - QuickTime 视频 - QuickTime 視訊 + QuickTime 视频 + QuickTime 視訊 - - - - + + + + @@ -37790,21 +39148,23 @@ QuickTime image + QuickTime-beeld صورة QuickTime - Vyjava QuickTime + Vyjava QuickTime Изображение — QuickTime imatge QuickTime obrázek QuickTime QuickTime-billede QuickTime-Bild Εικόνα QuickTime - QuickTime image + QuickTime image QuickTime-bildo imagen de QuickTime QuickTime irudia QuickTime-kuva QuickTime mynd image QuickTime + imagjin QuickTime íomhá QuickTime imaxe QuickTime תמונה של QuickTime @@ -37824,7 +39184,7 @@ imatge QuickTime Obraz QuickTime imagem QuickTime - Imagem do QuickTime + Imagem do QuickTime Imagine QuickTime Изображение QuickTime Obrázok QuickTime @@ -37835,54 +39195,116 @@ QuickTime görüntüsü зображення QuickTime Ảnh QuickTime - QuickTime 图像 - QuickTime 影像 + QuickTime 图像 + QuickTime 影像 - + Khronos texture image + Khronos-tekstuurbeeld + Изображение — текстура за Khronos imatge de textura de Khronos obrázek s texturou Khronos + Khronos-strukturbillede Khronos-Texturbild - Khronos texture image + Khronos texture image imagen de textura de Khronos + Khronos testura irudia + Khronos-tekstuurikuva image de texture Khronos + imagjin di struture/texture Khronos íomhá uigeachta Khronos Khronos tekstura slika Khronos textúra kép - citra tekstur Khronos + Citra tekstur Khronos Immagine texture Khronos Khronos текстура суреті 크로노스 텍스처 파일 Obraz tekstury Khronos - Imagem de textura do Khronos + Imagem de textura do Khronos Изображение текстуры Khronos Obrázok textúry Khronos слика Кронос текстуре Khronos-texturbild Khronos kaplama görüntüsü зображення текстури Khronos - Khronos 纹理图像 - Khronos 紋理影像 + Khronos 纹理图像 + Khronos 紋理影像 - - - + + + + + Khronos texture image + Khronos-tekstuurbeeld + Изображение — текстура за Khronos + imatge de textura de Khronos + obrázek s texturou Khronos + Khronos-strukturbillede + Khronos-Texturbild + Khronos texture image + imagen de textura de Khronos + Khronos testura irudia + Khronos-tekstuurikuva + image de texture Khronos + imagjin di struture/texture Khronos + íomhá uigeachta Khronos + Khronos tekstura slika + Khronos textúra kép + Citra tekstur Khronos + Immagine texture Khronos + Khronos текстура суреті + 크로노스 텍스처 파일 + Obraz tekstury Khronos + Imagem de textura do Khronos + Изображение текстуры Khronos + Obrázok textúry Khronos + слика Кронос текстуре + Khronos-texturbild + Khronos kaplama görüntüsü + зображення текстури Khronos + Khronos 纹理图像 + Khronos 紋理影像 + + + + + + + + + + + ASTC texture + textura ASTC + ASTC tekstuuri + Texture ASTC + Tekstura ASTC + Textura ASTC + текстура ASTC + ASTC + Advanced Scalable Texture Compression + + + + + Vivo video + Vivo-video Vivo مرئي Videu en Vivo Vivo video faylı - Videa Vivo + Videa Vivo Видео — Vivo vídeo Vivo video Vivo @@ -37890,13 +39312,14 @@ Vivo-video Vivo-Video Βίντεο Vivo - Vivo video + Vivo video Vivo-video vídeo Vivo Vivo bideoa Vivo-video Vivo video vidéo Vivo + video Vivo físeán Vivo vídeo Vivo וידאו של Vivo @@ -37917,7 +39340,7 @@ vidèo Vivo Plik wideo Vivo vídeo Vivo - Vídeo Vivo + Vídeo Vivo Video Vivo Видео Vivo Video Vivo @@ -37928,32 +39351,34 @@ Vivo videosu відео Vivo Ảnh động Vivo - Vivo 视频 - Vivo 視訊 + Vivo 视频 + Vivo 視訊 Wavelet video + Wavelet-video Wavelet مرئي Videu en Wavelet Wavelet video faylı - Videa Wavelet + Videa Wavelet Видео — Wavelet vídeo Wavelet video Wavelet Fideo Wavelet - Waveletvideo + Wavelet-video Wavelet-Video Βίντεο Wavelet - Wavelet video + Wavelet video Wavelet-video vídeo Wavelet Wavelet bideoa Wavelet-video Wavelet video vidéo Wavelet + video Wavelet físeán Wavelet vídeo Wavelet וידאו של Wavelet @@ -37974,7 +39399,7 @@ vidèo Wavelet Plik wideo Wavelet vídeo Wavelet - Vídeo Wavelet + Vídeo Wavelet Video Wavelet Видео Wavelet Video Wavelet @@ -37985,14 +39410,15 @@ Wavelet videosu відеокліп Wavelet Ảnh động Wavelet - Wavelet 视频 - Wavelet 視訊 + Wavelet 视频 + Wavelet 視訊 ANIM animation + ANIM-animasie تحريكة ANIM ANIM animasiyası - Animacyja ANIM + Animacyja ANIM Анимация — ANIM animació ANIM animace ANIM @@ -38000,13 +39426,14 @@ ANIM-animation ANIM-Animation Κινούμενο σχέδιο ANIM - ANIM animation + ANIM animation ANIM-animacio animación ANIM ANIM animazioa ANIM-animaatio ANIM teknmyndagerð animation ANIM + animazion ANIM beochan ANIM animación ANIM הנפשת ANIM @@ -38028,7 +39455,7 @@ animacion ANIM Plik animacji ANIM animação ANIM - Animação ANIM + Animação ANIM Animație ANIM Анимация ANIM Animácia ANIM @@ -38039,26 +39466,28 @@ ANIM canlandırması анімація ANIM Hoạt ảnh ANIM - ANIM 动画 - ANIM 動畫 + ANIM 动画 + ANIM 動畫 FLIC animation + FLIC-animasie تحريكة FLIC - Animacyja FLIC + Animacyja FLIC Анимация — FLIC animació FLIC animace FLIC FLIC-animation FLIC-Animation Κινούμενο σχέδιο FLIC - FLIC animation + FLIC animation animación FLIC FLIC animazioa FLIC-animaatio FLIC teknimyndagerð animation FLIC + animazion FLIC beochan FLIC animación FLIC הנפשת FLIC @@ -38079,7 +39508,7 @@ animacion FLIC Plik animacji FLIC animação FLIC - Animação FLIC + Animação FLIC Animație FLIC Анимация FLIC Animácia FLIC @@ -38090,34 +39519,36 @@ FLIC animasyonu анімація FLIC Hoạt ảnh FLIC - FLIC 动画 - FLIC 動畫 + FLIC 动画 + FLIC 動畫 - - + + Haansoft Hangul document + Haansoft Hangul-dokument مستند Haansoft Hangul Documentu de Haansoft Hangul - Dakument Haansoft Hangul + Dakument Haansoft Hangul Документ — Haansoft Hangul document d'Haansoft Hangul dokument Haansoft Hangul Haansoft Hangul-dokument Haansoft-Hangul-Dokument Έγγραφο Haansoft Hangul - Haansoft Hangul document + Haansoft Hangul document documento de Haansoft Hangul Haansoft Hangul dokumentua Haansoft Hangul -asiakirja Haansoft Hangul skjal document Haansoft Hangul + document Haansoft Hangul cáipéis Haansoft Hangul documento de Haansoft Hangul מסמך Haansoft Hangul @@ -38137,7 +39568,7 @@ document Haansoft Hangul Dokument Haansoft Hangul documento Haansoft Hangul - Documento do Haansoft Hangul + Documento do Haansoft Hangul Document Haansoft Hangul Документ Haansoft Hangul Dokument Haansoft Hangul @@ -38148,32 +39579,34 @@ Haansoft Hangul belgesi документ Haansoft Hangul Tài liệu Hangul Haansoft - Haansoft Hangul 文档 - Haansoft 韓文文件 + Haansoft Hangul 文档 + Haansoft 韓文文件 - + Haansoft Hangul document template + Haansoft Hangul-dokumentsjabloon قالب مستند Haansoft Hangul Plantía de documentu de Haansoft Hangul - Šablon dakumentu Haansoft Hangul + Šablon dakumentu Haansoft Hangul Шаблон за документи — Haansoft Hangul plantilla de document d'Haansoft Hangul šablona dokumentu Haansoft Hangul Haansoft Hangul-dokumentskabelon Haansoft-Hangul-Dokumentvorlage Πρότυπο εγγράφου Haansoft Hangul - Haansoft Hangul document template + Haansoft Hangul document template plantilla de documento de Haansoft Hangul Haansoft Hangul dokumentuaren txantiloia Haansoft Hangul -asiakirjamalli Haansoft Hangul skjalaformur modèle de document Haansoft Hangul + model document Haansoft Hangul teimpléad cháipéis Haansoft Hangul modelo de documento de Haansoft Hangul תבנית מסמך של Haansoft Hangul @@ -38193,7 +39626,7 @@ modèl de document Haansoft Hangul Szablon dokumentu Haansoft Hangul modelo de documento Haansoft Hangul - Modelo de documento do Haansoft Hangul + Modelo de documento do Haansoft Hangul Document șablon Haansoft Hangul Шаблон документа Haansoft Hangul Šablóna dokumentu Haansoft Hangul @@ -38204,29 +39637,31 @@ Haansoft Hangul belge şablonu шаблон документа Haansoft Hangul Mẫu tài liệu Hangul Haansoft - Haansoft Hangul 文档模板 - Haansoft 韓文文件範本 + Haansoft Hangul 文档模板 + Haansoft 韓文文件範本 MNG animation + MNG-animasie تحريكة MNG - Animacyja MNG + Animacyja MNG Анимация — MNG animació MNG animace MNG MNG-animation MNG-Animation Κινούμενο σχέδιο MNG - MNG animation + MNG animation MNG-animacio animación MNG MNG animazioa MNG-animaatio MNG teknimyndagerð animation MNG + animazion MNG beochan MNG animación MNG הנפשת MNG @@ -38247,7 +39682,7 @@ animacion MNG Animacja MNG animação MNG - Animação MNG + Animação MNG Animație MNG Анимация MNG Animácia MNG @@ -38258,33 +39693,35 @@ MNG canlandırması анімація MNG Hoạt ảnh MNG - MNG 动画 - MNG 動畫 + MNG 动画 + MNG 動畫 MNG Multiple-Image Network Graphics - + ASF video + ASF-video ASF مرئي Videu n'ASF - Videa ASF + Videa ASF Видео — ASF vídeo ASF video ASF ASF-video ASF-Video Βίντεο ASF - ASF video + ASF video ASF-video vídeo ASF ASF bideoa ASF-video ASF video vidéo ASF + video ASF físeán ASF vídeo ASF וידאו ASF @@ -38305,7 +39742,7 @@ vidèo ASF Plik wideo ASF vídeo ASF - Vídeo ASF + Vídeo ASF Video ASF Видео ASF Video ASF @@ -38316,8 +39753,8 @@ ASF videosu відеокліп ASF Ảnh động ASF - ASF 视频 - ASF 視訊 + ASF 视频 + ASF 視訊 ASF Advanced Streaming Format @@ -38325,26 +39762,28 @@ - - + + Windows Media Station file + Windows Media Station-lêer ملف محطة Windows Media - Fajł Windows Media Station + Fajł Windows Media Station Файл — Windows Media Station fitxer de Windows Media Station soubor Windows Media Station Windows Media Station-fil Windows-Media-Streamingbeschreibung Αρχείο Windows Media Station - Windows Media Station file + Windows Media Station file archivo de emisora de Windows Media Windows Media Station fitxategia Windows Media Station-tiedosto Windows Media Station fíla fichier Windows Media Station + file Windows Media Station comhad Windows Media Station ficheiro de emisora de Windows Media קובץ תחנה של Windows Media @@ -38364,7 +39803,7 @@ fichièr Windows Media Station Plik Windows Media Station ficheiro Windows Media Station - Arquivo de estação do Windows Media + Arquivo de estação do Windows Media Fișier Windows Media Station Файл Windows Media Station Súbor Windows Media Station @@ -38375,32 +39814,34 @@ Windows Media Station dosyası файл Windows Media Station Tập tin Windows Media Station - Windows 媒体工作站文件 - Windows Media Station 檔 + Windows 媒体工作站文件 + Windows Media Station 檔 - + Windows Media video + Windows Media-video Windows Media مرئي Videu de Windows Media - Videa Windows Media + Videa Windows Media Видео — Windows Media vídeo de Windows Media video Windows Media Windows Medie-video Windows-Media-Video Βίντεο Windows Media - Windows Media video + Windows Media video vídeo de Windows Media Windows Media bideoa Windows Media -video Windows Media video vidéo Windows Media + video Windows Media físeán Windows Media vídeo de Windows Media וידאו של Windows Media @@ -38420,7 +39861,7 @@ vidèo Windows Media Plik wideo Windows Media vídeo Windows Media - Vídeo do Windows Media + Vídeo do Windows Media Video Windows Media Видео Windows Media Video Windows Media @@ -38431,17 +39872,18 @@ Windows Media videosu відеокліп Windows Media Ảnh động Windows Media - Windows Media 视频 - Windows Media 視訊 + Windows Media 视频 + Windows Media 視訊 AVI video + AVI-video AVI مرئي Videu n'AVI AVI video faylı - Videa AVI + Videa AVI Видео — AVI vídeo AVI video AVI @@ -38449,13 +39891,14 @@ AVI-video AVI-Video Βίντεο AVI - AVI video + AVI video AVI-video vídeo AVI AVI bideoa AVI-video AVI video vidéo AVI + video AVI físeán AVI vídeo AVI וידאו AVI @@ -38477,7 +39920,7 @@ vidèo AVI Plik wideo AVI vídeo AVI - Vídeo AVI + Vídeo AVI Video AVI Видео AVI Video AVI @@ -38488,8 +39931,8 @@ AVI videosu відеокліп AVI Ảnh động AVI - AVI 视频 - AVI 視訊 + AVI 视频 + AVI 視訊 AVI Audio Video Interleave @@ -38498,11 +39941,11 @@ - - + + - - + + @@ -38511,22 +39954,24 @@ NullSoft video + NullSoft-video NullSoft مرئي Videu de NullSoft - Videa NullSoft + Videa NullSoft Видео — NullSoft vídeo NullSoft video NullSoft NullSoft-video NullSoft-Video Βίντεο Nullsoft - NullSoft video + NullSoft video NullSoft-video vídeo NullSoft NullSoft bideoa NullSoft-video NullSoft video vidéo NullSoft + video NullSoft físeán NullSoft vídeo de NullSoft וידאו של NullSot @@ -38546,7 +39991,7 @@ vidèo NullSoft Plik wideo NullSoft vídeo NullSoft - Vídeo do NullSoft + Vídeo do NullSoft Video NullSoft Видео Nullsoft Video NullSoft @@ -38557,29 +40002,30 @@ Nullsoft videosu відеокліп NullSoft Ảnh động NullSoft - NullSoft 视频 - NullSoft 視訊 + NullSoft 视频 + NullSoft 視訊 - + SDP multicast stream file ملف دفق متعدد البث SDP - Šmatadrasny płynievy fajł SDP - Файл за поток — SDP multicast + Šmatadrasny płynievy fajł SDP + Поток — SDP multicast fitxer de flux de multidifusió SDP soubor vícesměrového vysílání proudu SDP SDP multicast-strømfil SDP-Multicast-Datenstromdatei Αρχείο ροής πολλαπλής αναμετάδοσης SDP - SDP multicast stream file + SDP multicast stream file archivo de flujo multicast SDP SDP multicast korrontearen fitxategia SDP-monilähetysvirran tiedosto SDP margvarpað streymafíla fichier de flux multidiffusion SDP + file di flus a trasmission multiple SDP comhad shruth ilchraolacháin SDP ficheiro de fluxo multicast SDP קובץ שידור בזרימה SDP @@ -38599,7 +40045,7 @@ fichièr de flux multidifusion SDP Plik strumienia multicast SDP ficheiro de fluxo SDP multicast - Arquivo de canal multicast SDP + Arquivo de canal multicast SDP Fișier flux multicast SDP Файл мультикаст-потока SDP Súbor viacsmerového vysielania prúdu SDP @@ -38610,8 +40056,8 @@ SDP çoklu yayın akışı dosyası файл потокової трансляції SDP Tập tin luồng truyền một-nhiều SDP - SDP 多播流文件 - SDP multicast 串流檔 + SDP 多播流文件 + SDP multicast 串流檔 SDP Session Description Protocol @@ -38619,18 +40065,19 @@ - - + + SGI video + SGI-video SGI مرئي Videu en SGI SGI video faylı - Videa SGI + Videa SGI Видео — SGI vídeo SGI video SGI @@ -38638,13 +40085,14 @@ SGI-video SGI-Video Βίντεο SGI - SGI video + SGI video SGI-video vídeo SGI SGI bideoa SGI-video SGI video vidéo SGI + video SGI físeán SGI vídeo SGI וידאו SGI @@ -38665,7 +40113,7 @@ vidèo SGI Plik wideo SGI vídeo SGI - Vídeo SGI + Vídeo SGI Video SGI Видео SGI Video SGI @@ -38676,29 +40124,31 @@ SGI videosu відеокліп SGI Ảnh động SGI - SGI 视频 - SGI 視訊 + SGI 视频 + SGI 視訊 - + eMusic download package + eMusic-aflaaipakket حزمة تنزيل eMusic - pakunak zahruzki eMusic + pakunak zahruzki eMusic Пакет за сваляне — eMusic - paquet de descàrrega eMusic + paquet de baixades d'eMusic balíček stahování eMusic - eMusic-hentpakke + eMusic-downloadpakke eMusic-Download-Paket Πακέτο λήψης eMusic - eMusic download package + eMusic download package paquete de descarga eMusic eMusic deskargaren paketea eMusic-imurointipaketti eMusic niðurtøkupakki paquet de téléchargement eMusic + pachet di discjariament eMusic pacáiste íosluchtú eMusic paquete de descarga de eMusic חבילת הורדה של eMusic @@ -38718,7 +40168,7 @@ paquet de telecargament eMusic Pobrany pakiet eMusic pacote transferido eMusic - Pacote de download do eMusic + Pacote de download do eMusic pachet descărcare eMusic Пакет загрузок eMusic Balíček sťahovania eMusic @@ -38729,16 +40179,17 @@ eMusic indirme paketi пакунок завантаження eMusic gói nhạc tải xuống eMusic - eMusic 下载包 - eMusic 下載包 + eMusic 下载包 + eMusic 下載包 - + KML geographic data + KML geografiese data بيانات جغرافية KML Географски данни — KML dades geogràfiques KML @@ -38746,12 +40197,13 @@ Geografiske data i KML-format KML geographische Daten Γεωγραφικά δεδομένα KML - KML geographic data + KML geographic data datos geográficos KML KML datu geografikoak KML-paikkatieto KML landafrøðilig dáta données géographiques KML + dâts gjeografics KML sonraí geografacha KML datos xeográficos KML מידע גאוגרפי KML @@ -38769,7 +40221,7 @@ donadas geograficas KML Dane geograficzne KML dados geográficos KML - Dados geográficos KML + Dados geográficos KML Date geografice KML Географические данные KML Zemepisné údaje KML @@ -38778,8 +40230,8 @@ KML geografisk data KML coğrafi verisi географічні дані KML - KML 地理数据 - KML 地理資料 + KML 地理数据 + KML 地理資料 KML Keyhole Markup Language @@ -38788,6 +40240,7 @@ KML geographic compressed data + KML saamgepersde geografiese data بيانات جغرافية مضغوطة KML Географски данни — KML, компресирани dades geogràfiques KML amb compressió @@ -38795,12 +40248,13 @@ KML-geografiske komprimerede data KML geographische komprimierte Daten Γεωγραφικά συμπιεσμένα δεδομένα KML - KML geographic compressed data + KML geographic compressed data datos geográficos comprimidos KML KML datu geografiko konprimituak Pakattu KML-paikkatieto KML landafrøðilig stappað dáta données géographiques KML compressées + dâts gjeografics KML comprimûts sonraí comhbhrúite geografacha KML datos xeográficos KML comprimidos מידע גאוגרפי דחוס KML @@ -38818,7 +40272,7 @@ donadas geograficas KML compressats Skompresowane dane geograficzne KML dados geográficos comprimidos KML - Dados geográficos KML compactados + Dados geográficos KML compactados Date geografice comprimate KML Сжатые географические данные KML Komprimované zemepisné údaje KML @@ -38827,8 +40281,8 @@ KML geografiskt komprimerat data KML sıkıştırılmış coğrafi verisi стиснуті географічні дані KML - KML 地理压缩数据 - KML 地理壓縮資料 + KML 地理压缩数据 + KML 地理壓縮資料 KML Keyhole Markup Language @@ -38836,13 +40290,18 @@ GeoJSON geospatial data + GeoJSON georuimtelike data + Географски данни — GeoJSON dades geomàtiques GeoJSON geoprostorová data GeoJSON GEoJSON-geospatiale data GeoJSON raumbezogene Daten - GeoJSON geospatial data + GeoJSON geospatial data datos geoespaciales en GeoJSON + GeoJSON geomatika datua + GeoJSON-paikkatiedot données géospatiales GeoJSON + dâts gjeo-spaziâls GeoJSON sonraí geospásúla GeoJSON GeoJSON geoprostorni podaci GeoJSON téradatok @@ -38851,15 +40310,15 @@ GeoJSON геокеңістіктік деректері GeoJSON 지리 정보 데이터 Dane geoprzestrzenne GeoJSON - Dados geoespaciais GeoJSON + Dados geoespaciais GeoJSON Геопространственные данные GeoJSON Geopriestorové údaje GeoJSON ГеоЈСОН геопросторни подаци Geospatialt GeoJSON-data - GeoJSON coğrafi veriler + GeoJSON coğrafi verileri геопросторові дані GeoJSON - GeoJSON 地理空间数据 - GeoJSON 地理空間資料 + GeoJSON 地理空间数据 + GeoJSON 地理空間資料 @@ -38867,15 +40326,18 @@ GPX geographic data + GPX geografiese data + Географски данни — GPX dades geogràfiques GPX geografická data GPX GPX-geografiske data GPX geographische Daten - GPX geographic data + GPX geographic data datos geográficos en GPX GPX datu geografikoak GPX-paikkatieto données géographiques GPX + dâts gjeografics GPX sonraí geografacha GPX נתונים גאוגרפיים GPX GPX geografski podaci @@ -38886,15 +40348,15 @@ GPX 지리 공간정보 데이터 Donadas geograficas GPX Dane geograficzne GPX - Dados geográficos GPX + Dados geográficos GPX Географические данные GPX Zemepisné údaje GPX ГПИкс географски подаци GPX geografisk data GPX coğrafi verileri географічні дані GPX - GPX 地理数据 - GPX 地理資料 + GPX 地理数据 + GPX 地理資料 GPX GPS Exchange Format @@ -38907,20 +40369,22 @@ Citrix ICA settings file + Citrix ICA-instellingslêer ملف إعدادات Citrix ICA - Fajł naładaŭ Citrix ICA + Fajł naładaŭ Citrix ICA Настройки — Citrix ICA fitxer d'ajusts de Citrix ICA soubor nastavení Citrix ICA Citrix ICA-opsætningsfil Citrix-ICA-Einstellungsdatei Αρχείο ρυθμίσεων Citrix ICA - Citrix ICA settings file + Citrix ICA settings file archivo de configuración de Citrix ICA Citrix ICA ezarpenen fitxategia Citrix ICA -asetustiedosto Citrix ICA stillingarfíla fichier de paramètres ICA Citrix + file impostazions Citrix ICA comhad socruithe Citrix ICA ficheiro de configuracións de Citrix ICA קובץ הגדרות של Citrix ICA @@ -38941,7 +40405,7 @@ fichièr de paramètres ICA Citrix Plik ustawień Citrix ICA ficheiro de definições Citrix ICA - Arquivo de configuração do Citrix ICA + Arquivo de configuração do Citrix ICA Fișier de configurări Citrix ICA Файл настроек Citrix ICA Súbor nastavení Citrix ICA @@ -38952,8 +40416,8 @@ Citrix ICA ayar dosyası файл параметрів ICA Citrix Tập tin thiết lập ICA Citrix - Citrix ICA 设置文件 - Citrix ICA 設定值檔案 + Citrix ICA 设置文件 + Citrix ICA 設定值檔案 ICA Independent Computing Architecture @@ -38962,21 +40426,23 @@ XUL interface document + XUL-koppelvlakdokument مستند واجهة XUL Documentu d'interfaz XUL - Interfejsny dakument XUL - Документ — интерфейс за XUL + Interfejsny dakument XUL + Документ — интерфейс, XUL document d'interfície XUL dokument rozhraní XUL XUL-grænsefladedokument XUL-Oberflächendokument Έγγραφο διεπαφής XUL - XUL interface document + XUL interface document documento de interfaz XUL XUL interfazearen dokumentua XUL-käyttöliittymäasiakirja XUL markamótsskjal document d'interface XUL + document di interface XUL cáipéis chomhéadan XUL documento de interface XUL מסמך ממשק XUL @@ -38996,7 +40462,7 @@ document d'interfàcia XUL Dokument interfejsu XUL documento de ambiente XUL - Documento de interface XUL + Documento de interface XUL Document interfață XUL Документ интерфейса XUL Dokument rozhrania XUL @@ -39007,8 +40473,8 @@ XUL arayüz belgesi документ інтерфейсу XUL Tài liệu giao diện XUL - XUL 界面文档 - XUL 介面文件 + XUL 界面文档 + XUL 介面文件 XUL XML User interface markup Language @@ -39018,6 +40484,7 @@ XPInstall installer module + XPInstall-installasiemodule وحدة مثبت XPInstall Пакет — инсталация XPInstall mòdul de l'instal·lador XPinstall @@ -39025,12 +40492,13 @@ XPInstall-installationsmodul XPInstall-Installationsmodul Άρθρωμα εγκατάστασης XPInstall - XPInstall installer module + XPInstall installer module módulo del instalador XPInstall XPInstall instalatzailearen modulua XPInstall-asennuspaketti XPInstall innleggjaramótul module d'installation XPInstall + modul instaladôr XPInstall modúl suiteála XPInstall Módulo do instalador XPInstall מודול התקנה של XPInstall @@ -39048,7 +40516,7 @@ modul d'installacion XPInstall Moduł instalatora XPInstall módulo de instalador XPInstall - Módulo de instalador XPInstall + Módulo de instalador XPInstall Modul de instalare XPInstall Модуль установщика XPInstall Modul inštalátora XPInstall @@ -39057,13 +40525,14 @@ XPInstall-installeringsmodul XPInstall kurulum modülü модуль засобу встановлення XPInstall - XPInstall 安装工具模块 - XPInstall 安裝程式模組 + XPInstall 安装工具模块 + XPInstall 安裝程式模組 Word 2007 document + Word 2007-dokument مستند Word 2007 Documentu de Word 2007 Документ — Word 2007 @@ -39072,12 +40541,13 @@ Word 2007-dokument Word-2007-Dokument Έγγραφο Word 2007 - Word 2007 document + Word 2007 document documento de Word 2007 Word 2007 dokumentua Word 2007 -asiakirja Word 2007 skjal document Word 2007 + document Word 2007 cáipéis Word 2007 documento de Word 2007 מסמך Word 2007 @@ -39095,7 +40565,7 @@ document Word 2007 Dokument Word 2007 documento Word 2007 - Documento do Word 2007 + Documento do Word 2007 Document Word 2007 Документ Word 2007 Dokument Word 2007 @@ -39105,14 +40575,15 @@ Word 2007 belgesi документ Word 2007 Tài liệu Word 2007 - Word 2007 文档 - Word 2007 文件 + Word 2007 文档 + Word 2007 文件 Word 2007 document template + Word 2007-dokumentsjabloon Plantía de documentu de Word 2007 Шаблон за документи — Word 2007 plantilla de document de Word 2007 @@ -39120,11 +40591,12 @@ Word 2007-dokumentskabelon Word-2007-Dokumentvorlage Πρότυπο έγγραφο Word 2007 - Word 2007 document template + Word 2007 document template plantilla de documento de Word 2007 Word 2007 dokumentuaren txantiloia Word 2007 -asiakirjamalli modèle de document Word 2007 + model document Word 2007 teimpléad cháipéis Word 2007 Plantilla de documento de Word 2007 תבנית מסמך של Word 2007 @@ -39142,7 +40614,7 @@ modèl de document Word 2007 Szablon dokumentu Word 2007 modelo de documento Word 2007 - Modelo de documento do Word 2007 + Modelo de documento do Word 2007 Шаблон документа Word 2007 Šablóna dokumentu Word 2007 Predloga dokumenta Word 2007 @@ -39150,14 +40622,15 @@ Word 2007-dokumentmall Word 2007 belge şablonu шаблон документа Word 2007 - Word 2007 文档模板 - Word 2007 文件範本 + Word 2007 文档模板 + Word 2007 文件範本 PowerPoint 2007 presentation + PowerPoint 2007-voorlegging عرض تقديمي PowerPoint 2007 Презентация — PowerPoint 2007 presentació de PowerPoint 2007 @@ -39165,12 +40638,13 @@ PowerPoint 2007-præsentation PowerPoint-2007-Präsentation Παρουσίαση PowerPoint 2007 - PowerPoint 2007 presentation + PowerPoint 2007 presentation presentación de PowerPoint 2007 PowerPoint 2007 aurkezpena PowerPoint 2007 -esitys PowerPoint 2007 framløga présentation PowerPoint 2007 + presentazion PowerPoint 2007 láithreoireacht PowerPoint 2007 presentación de PowerPoint 2007 מצגת של PowerPoint 2007 @@ -39188,7 +40662,7 @@ presentacion PowerPoint 2007 Prezentacja PowerPoint 2007 apresentação PowerPoint 2007 - Apresentação do PowerPoint 2007 + Apresentação do PowerPoint 2007 Prezentare PowerPoint 2007 Презентация PowerPoint 2007 Prezentácia PowerPoint 2007 @@ -39198,25 +40672,27 @@ PowerPoint 2007 sunumu презентація PowerPoint 2007 Trình diễn PowerPoint 2007 - PowerPoint 2007 演示文稿 - PowerPoint 2007 簡報 + PowerPoint 2007 演示文稿 + PowerPoint 2007 簡報 PowerPoint 2007 slide + PowerPoint 2007-skyfie Кадър — PoerPoint 2007 dispositiva de PowerPoint 2007 snímek PowerPoint 2007 PowerPoint 2007-slide PowerPoint 2007-Folie Διαφάνεια PowerPoint 2007 - PowerPoint 2007 slide + PowerPoint 2007 slide diapositiva de PowerPoint 2007 PowerPoint 2007 diapositiba PowerPoint 2007 -dia diapositive PowerPoint 2007 + diapositive PowerPoint 2007 sleamhnán PowerPoint 2007 Diaporama de PowerPoint 2007 שקופית של PowerPoint 2007 @@ -39234,7 +40710,7 @@ diapositive PowerPoint 2007 Slajd PowerPoint 2007 diapositivo PowerPoint 2007 - Slide do PowerPoint 2007 + Slide do PowerPoint 2007 Слайд PowerPoint 2007 Snímka PowerPoint 2007 Prosojnica PowerPoint 2007 @@ -39242,14 +40718,15 @@ PowerPoint 2007-bildspel PowerPoint 2007 slaytı слайд PowerPoint 2007 - PowerPoint 2007 幻灯片 - PowerPoint 2007 投影片 + PowerPoint 2007 幻灯片 + PowerPoint 2007 投影片 PowerPoint 2007 show + PowerPoint 2007-vertoning عرض PowerPoint 2007 Презентация-шоу — PowerPoint 2007 exposició de PowerPoint 2007 @@ -39257,12 +40734,13 @@ PowerPoint 2007-dias PowerPoint-2007-Präsentation Παρουσίαση PowerPoint 2007 - PowerPoint 2007 show + PowerPoint 2007 show presentación autoejecutable de PowerPoint 2007 PowerPoint 2007 ikuskizuna PowerPoint 2007 -diaesitys PowerPoint 2007 framsýning diaporama PowerPoint 2007 + esecuzion presentazion PowerPoint 2007 taispeántas PowerPoint 2007 Exposición de PowerPoint 2007 תצוגה של PowerPoint 2007 @@ -39280,7 +40758,7 @@ diaporama PowerPoint 2007 Pokaz PowerPoint 2007 espetáculo PowerPoint 2007 - Apresentação do PowerPoint 2007 + Apresentação do PowerPoint 2007 Prezentare PowerPoint 2007 Презентация PowerPoint 2007 Ukážka PowerPoint 2007 @@ -39289,25 +40767,27 @@ PowerPoint 2007-visning PowerPoint 2007 gösterisi показ слайдів PowerPoint 2007 - PowerPoint 2007 放映 - PowerPoint 2007 展示 + PowerPoint 2007 放映 + PowerPoint 2007 展示 PowerPoint 2007 presentation template + PowerPoint 2007-voorleggingsjabloon Шаблон за презентации — PowerPoint 2007 plantilla de presentació de PowerPoint 2007 šablona prezentace PowerPoint 2007 PowerPoint 2007-præsentationsskabelon PowerPoint 2007-Präsentationsvorlage Πρότυπο παρουσίασης PowerPoint 2007 - PowerPoint 2007 presentation template + PowerPoint 2007 presentation template plantilla de presentación de PowerPoint 2007 PowerPoint 2007 aurkezpen txantiloia PowerPoint 2007 -esitysmalli modèle de présentation PowerPoint 2007 + model presentazion PowerPoint 2007 teimpléad láithreoireachta PowerPoint 2007 modelo de presentación de PowerPoint 2007 תבנית למצגת של PowerPoint 2007 @@ -39325,7 +40805,7 @@ modèl de presentacion PowerPoint 2007 Szablon prezentacji PowerPoint 2007 modelo de apresentação PowerPoint 2007 - Modelo de apresentação do PowerPoint 2007 + Modelo de apresentação do PowerPoint 2007 Шаблон презентации PowerPoint 2007 Šablóna prezentácie PowerPoint 2007 Predloga predstavitve PowerPoint 2007 @@ -39333,14 +40813,15 @@ PowerPoint 2007-presentationsmall PowerPoint 2007 sunum şablonu шаблон презентації PowerPoint 2007 - PowerPoint 2007 演示文稿模板 - PowerPoint 2007 簡報範本 + PowerPoint 2007 演示文稿模板 + PowerPoint 2007 簡報範本 Excel 2007 spreadsheet + Excel 2007-sigblad جدول Excel 2007 Таблица — Excel 2007 full de càlcul d'Excel 2007 @@ -39348,12 +40829,13 @@ Excel 2007-regneark Excel-2007-Tabelle Λογιστικό φύλλο Excel 2007 - Excel 2007 spreadsheet + Excel 2007 spreadsheet hoja de cálculo de Excel 2007 Excel 2007 kalkulu-orria Excel 2007 -taulukko Excel 2007 rokniark feuille de calcul Excel 2007 + sfuei di calcul Excel 2007 scarbhileog Excel 2007 folla de cálculo de Excel 2007 גליון נתונים של Excel 2007 @@ -39372,35 +40854,37 @@ fuèlh de calcul Excel 2007 Arkusz Excel 2007 folha de cálculo Excel 2007 - Planilha do Excel 2007 + Planilha do Excel 2007 Foaie de calcul Excel 2007 Электронная таблица Excel 2007 Zošit Excel 2007 Razpredelnica Microsoft Excel 2007 табела Ексела 2007 Excel 2007-kalkylblad - Excel 2007 çalışma sayfası + Excel 2007 hesap çizelgesi sayfası ел. таблиця Excel 2007 Bảng tính Excel 2007 - Excel 2007 电子表格 - Excel 2007 試算表 + Excel 2007 电子表格 + Excel 2007 試算表 Excel 2007 spreadsheet template + Excel 2007-sigbladsjabloon Шаблон за таблици — Excel 2007 plantilla de full de càlcul d'Excel 2007 šablona sešitu Excel 2007 Excel 2007-regnearksskabelon Excel 2007-Tabellenvorlage Πρότυπο λογιστικού φύλλου Excel 2007 - Excel 2007 spreadsheet template + Excel 2007 spreadsheet template plantilla de hoja de cálculo de Excel 2007 Excel 2007 kalkulu-orri txantiloia Excel 2007 -taulukkomalli modèle de feuille de calcul Excel 2007 + model sfuei di calcul Excel 2007 teimpléad scarbhileoige Excel 2007 modelo de folla de cálculo Excel 2007 תבנית של גיליון נתונים של Excel 2007 @@ -39418,38 +40902,40 @@ modèl de fuèlh de calcul Excel 2007 Szablon arkusza Excel 2007 modelo de folha de cálculo Excel 2007 - Modelo de planilha do Excel 2007 + Modelo de planilha do Excel 2007 Шаблон электронной таблицы Excel 2007 Šablóna zošitu Excel 2007 Predloga razpredelnice Excel 2007 шаблон табеле Ексела 2007 Excel 2007-kalkylarksmall - Excel 2007 çalışma sayfası şablonu + Excel 2007 hesap çizelgesi şablonu шаблон електронної таблиці Excel 2007 - Excel 2007 电子表格模板 - Excel 2007 試算表範本 + Excel 2007 电子表格模板 + Excel 2007 試算表範本 T602 document + T602-dokument مستند T602 Documentu T602 - Dakument T602 + Dakument T602 Документ — T602 document T602 dokument T602 T602-dokument T602-Dokument Έγγραφο T602 - T602 document + T602 document T602-dokumento documento T602 T602 dokumentua T602-asiakirja T602 skjal document T602 + document T602 cáipéis T602 documento T602 מסמך T602 @@ -39469,7 +40955,7 @@ document T602 Dokument T602 documento T602 - Documento T602 + Documento T602 Document T602 Документ T602 Dokument T602 @@ -39480,75 +40966,54 @@ T602 belgesi документ T602 Tài liệu T602 - T602 文档 - T602 文件 + T602 文档 + T602 文件 - - - + + + - Cisco VPN Settings - إعدادات Cisco VPN - Nałady Cisco VPN + Cisco VPN settings Настройки — ВЧМ на Cisco ajusts VPN de Cisco - nastavení Cisco VPN - Cisco VPN-opsætning + Cisco VPN-indstillinger Cisco-VPN-Einstellungen - Ρυθμίσεις Cisco VPN - Cisco VPN Settings - configuración de VPN de Cisco + Cisco VPN settings + configuración de Cisco VPN Cisco VPN ezarpenak - Cisco VPN -asetukset - Cisco VPN stillingar + Ciscon VPN-asetukset paramètres VPN Cisco - socruithe VPN Cisco - configuracións de VPN de Cisco - הגדרות של Cisco VPN Cisco VPN postavke Cisco VPN beállítások - Configuration VPN Cisco - Penataan Cisco VPN + Pengaturan VPN Cisco Impostazioni VPN Cisco - Cisco VPN 設定 - Cisco VPN-ის პარამეტრები Cisco VPN баптаулары - Cisco VPN 설정 - Cisco VPN parametrai - Cisco VPN iestatījumi - Cisco VPN-innstillinger - Cisco VPN-instellingen - Cisco VPN-innstillingar - paramètres VPN Cisco + 시스코 VPN 설정 Ustawienia VPN Cisco - definições de Cisco VPN - Configurações de VPN da Cisco - Configurări VPN Cisco + Configurações de VPN da Cisco Файл настроек Cisco VPN Nastavenia Cisco VPN - Datoteka nastavitev Cisco VPN - Rregullime VPN Cisco - подешавања Циско ВПН-а + Nastavitve Cisco VPN Cisco VPN-inställningar - Cisco VPN Ayarları + Cisco VPN ayarları параметри VPN Cisco - Thiết lập VPN Cisco - Cisco VPN 设置 - Cisco VPN 設定值 + Cisco VPN 设置 + Cisco VPN 設定 - - + + ICC profile + ICC-profiel تشكيلة OCL Perfil ICC Цветови профил — OCL @@ -39557,13 +41022,14 @@ ICC-profil ICC-Profil Προφίλ ICC - ICC profile + ICC profile ICC-profilo perfil ICC ICC profila ICC-profiili ICC umhvarv profil ICC + profîl ICC próifíl ICC perfíl ICC פרופיל ICC @@ -39581,7 +41047,7 @@ perfil ICC Profil ICC perfil ICC - Perfil ICC + Perfil ICC Profil ICC Профиль ICC Profil farieb ICC @@ -39590,10 +41056,10 @@ ICC-profil ICC profili профіль ICC - ICC 配置文件 - ICC 設定檔 + ICC 配置文件 + ICC 設定組合 - + @@ -39601,18 +41067,19 @@ IT 8.7 color calibration file ملف ضبط ألوان IT 8.7 - Файл за цветово калибриране — IT 8.7 + Цветово калибриране — IT 8.7 fitxer de calibratge de color IT 8.7 soubor kalibrace barev IT 8.7 IT 8.7 farvekalibreringsfil IT 8.7-Farbkalibrierungsdatei Αρχείο βαθμονόμησης χρώματος ΙΤ 8.7 - IT 8.7 color calibration file + IT 8.7 color calibration file archivo de calibración de color IT 8.7 IT 8.7 kolore-kalibrazioaren fitxategia IT 8.7 -värikalibrointitiedosto IT 8.7 litstillingarfíla fichier de calibration couleur IT 8.7 + file calibradure colôr IT 8.7 comhad calabraithe dathanna IT 8.7 ficheiro de calibración de cor IT 8.7 קובץ כיול צבע IT 8.7 @@ -39630,7 +41097,7 @@ fichièr de calibracion color IT 8.7 Plik kalibracji kolorów IT 8.7 ficheiro de calibração de cor IT 8.7 - Arquivo de calibração de cor IT 8.7 + Arquivo de calibração de cor IT 8.7 Fișier de calibrare a culorii IT 8.7 Файл калибровки цвета IT 8.7 Súbor kalibrácie farieb IT 8.7 @@ -39639,10 +41106,10 @@ IT 8.7-färgkalibreringsfil IT 8.7 renk kalibrasyon dosyası файл калібрування кольорів IT 8.7 - IT 8.7 色彩校准文件 - IT 8.7 色彩校正檔 + IT 8.7 色彩校准文件 + IT 8.7 色彩校正檔 - + @@ -39650,16 +41117,18 @@ CCMX color correction file + Цветови поправки — CCMX fitxer de correcció de color CCMX soubor korekce barev CCMX CCMX-farvekorrektionsfil CCMX-Farbkorrekturdatei Αρχείο διόρθωσης χρωμάτων CCMX - CCMX colour correction file + CCMX colour correction file archivo de corrección de color CCMX CCMX kolore-kalibrazioaren fitxategia CCMX-värikorjaustiedosto fichier de correction colorimétrique CCMX + file corezion colôr CCMX comhad ceartúchán dathanna CCMX Ficheiro de corrección de cor CCMX קובץ תיקון צבע מסוג CCMX @@ -39675,7 +41144,7 @@ fichièr de correccion colorimetrica CCMX Plik korekcji kolorów CCMX ficheiro de correção de cor CCMX - Arquivo de correção de cor CCMX + Arquivo de correção de cor CCMX Файл цветовой коррекции CCMX Súbor korekcie farieb CCMX Datoteka barvne poprave CCMX @@ -39683,10 +41152,10 @@ CCMX-färgkorrigeringsfil CCMX renk düzeltme dosyası файл даних виправлення кольорів CCMX - CCMX 色彩校准文件 - CCMX 色彩校正檔 + CCMX 色彩校准文件 + CCMX 色彩校正檔 - + @@ -39694,16 +41163,19 @@ WinHelp help file + WinHelp-hulplêer + Помощен файл — WinHelp fitxer d'ajuda WinHelp soubor nápovědy WinHelp WinHelp-hjælpefil WinHelp-Hilfedatei Αρχείο βοήθειας WinHelp - WinHelp help file + WinHelp help file archivo de ayuda de WinHelp WinHelp laguntza fitxategia WinHelp-ohjetiedosto fichier d'aide WinHelp + file di jutori WinHelp comhad cabhrach WinHelp Ficheiro de axuda WinHelp קובץ עזרה מסוג WinHelp @@ -39719,7 +41191,7 @@ fichièr d'ajuda WinHelp Plik pomocy WinHelp ficheiro de ajuda WinHelp - Arquivo de ajuda WinHelp + Arquivo de ajuda WinHelp Файл справки WinHelp Súbor Pomocníka WinHelp Datoteka pomoči WinHelp @@ -39727,24 +41199,27 @@ WinHelp-hjälpfil WinHelp yardım dosyası файл довідки WinHelp - WinHelp 帮助文件 - WinHelp 說明檔 + WinHelp 帮助文件 + WinHelp 說明檔 - + binary differences between files + двоична разлика между файлове diferencies binàries entre fitxers binární rozdíl mezi soubory binære forskelle mellem filer binäre Unterschiede zwischen Dateien - binary differences between files + binary differences between files diferencias entre archivos binarios fitxategi binarioen arteko ezberdinstasunak + binaariset erot tiedostojen välillä différences binaires entre fichiers + diferencis binariis tra file difríochtaí dénártha idir comhaid הבדלים בינריים בין קבצים Binarne razlike između datoteka @@ -39754,40 +41229,42 @@ файлдар арасындағы бинарлық айырмашылықтар 바이너리 차이 비교 파일 Binarna różnica pomiędzy plikami - Diferenças binárias entre arquivos + Diferenças binárias entre arquivos Двоичные различия между файлами Binárne rozdiely medzi súbormi бинарне разлике датотека binära skillnader mellan filer dosyalar arasındaki ikilik farklar двійкова різниця між файлами - 文件的二进制区别 - 檔案間的二進位差異 + 文件的二进制区别 + 檔案間的二進位差異 - - + + - + - + digital photos + digitale foto’s الصور الرقمية - ličbavyja zdymki + ličbavyja zdymki Цифрови фотографии fotos digitals digitální fotografie digitale billeder Digitale Fotos Ψηφιακές φωτογραφίες - digital photos + digital photos fotos digitales argazki digitalak digivalokuvia talgildar myndir photos numériques + fotos digjitâls grianghraif dhigiteacha fotos dixitais תמונות דיגיטליות @@ -39806,7 +41283,7 @@ fòtos numericas Zdjęcia cyfrowe fotografias digitais - Fotos digitais + Fotos digitais fotografii digitale Цифровые фотографии Digitálne fotografie @@ -39817,32 +41294,36 @@ sayısal fotoğraflar цифрові фотографії ảnh chụp số - 数字化图像 - 數位相片 + 数字化图像 + 數位相片 - + - + Video CD + Video-CD Video CD CD de videu - Videa CD + Videa CD CD — видео Video CD Video CD Video-cd Video-CD Video CD - Video CD + Video CD Video-KD Video CD Bideo CDa Video CD Video CD CD vidéo + Video CD dlúthdhiosca físe Video CD תקליטור וידאו @@ -39861,7 +41342,7 @@ CD vidèo Video CD Video CD - CD de vídeo + CD de vídeo CD video Видео CD Video CD @@ -39872,32 +41353,36 @@ Video CD Video CD Đĩa CD ảnh động - VCD - Video CD + VCD + Video CD - + - + Super Video CD + Super Video-CD Super Video CD CD de Super Video - Super Video CD + Super Video CD CD — супер видео Super Video CD Super Video CD Super Video-cd Super-Video-CD Super Video CD - Super Video CD + Super Video CD Super-Video-KD Super Video CD Super Bideo CDa Super Video CD Super Video CD Super VCD + Super Video CD dlúthdhiosca Super Video Super vídeo CD Super Video CD @@ -39916,7 +41401,7 @@ Super VCD Super Video CD Super Video CD - CD de Super Vídeo (SVCD) + CD de Super Vídeo (SVCD) Super Video CD Super Video CD Super Video CD @@ -39927,32 +41412,34 @@ Super Video CD Super Video CD Đĩa CD siêu ảnh động - SVCD - Super Video CD + SVCD + Super Video CD - + - + video DVD + video-DVD DVD مرئي DVD de videu - videa DVD + videa DVD DVD — видео - DVD-Video + DVD de video videodisk DVD video-dvd Video-DVD Βίντεο DVD - video DVD + video DVD video-DVD DVD de vídeo bideo DVDa video-DVD video DVD DVD vidéo + DVD video DVD físe DVD de vídeo DVD וידאו @@ -39972,7 +41459,7 @@ DVD vidèo DVD-Video DVD vídeo - DVD de vídeo + DVD de vídeo DVD video Видео DVD DVD-Video @@ -39983,34 +41470,36 @@ video DVD відео-DVD đĩa DVD ảnh động - 视频 DVD - 視訊 DVD + 视频 DVD + 視訊 DVD - - - - + + + + - + audio CD + oudio-CD CD سمعي - aŭdyjo CD + aŭdyjo CD CD — аудио CD d'àudio zvukové CD lyd-cd Audio-CD CD ήχου - audio CD + audio CD Son-KD - CD de sonido + CD de audio Audio CDa ääni-CD audio CD CD audio + CD audio dlúthdhiosca fuaime CD de son תקליטור שמע @@ -40029,7 +41518,7 @@ CD àudio CD-Audio CD áudio - CD de áudio + CD de áudio CD audio Аудио CD Zvukové CD @@ -40037,30 +41526,32 @@ CD audio звучни ЦД ljud-cd - Müzik CD'si + ses CD'si звуковий CD đĩa CD âm thanh - 音频 CD - 音訊 CD + 音频 CD + 音訊 CD - + blank CD disc + skoon CD-skyf قرص CD فارغ - čysty dysk CD + čysty dysk CD CD — празно disc CD en blanc prázdný disk CD tom cd-disk Leere CD Κενό CD - blank CD disc + blank CD disc disco CD en blanco CD disko hutsa tyhjä CD-levy blonk fløga CD vierge + disc CD vueit dlúthdhiosca folamh disco de CD en brancho תקליטור ריק @@ -40079,7 +41570,7 @@ CD verge Pusta płyta CD CD vazio - Disco CD vazio + Disco CD vazio disc gol CD Чистый диск CD Prázdny disk CD @@ -40090,27 +41581,29 @@ boş CD diski порожній компакт-диск đĩa CD trống - 空 CD 光盘 - 空白 CD 光碟 + 空 CD 光盘 + 空白 CD 光碟 - + blank DVD disc + skoon DVD-skyf قرص DVD فارغ - čysty dysk DVD + čysty dysk DVD DVD — празно disc DVD en blanc prázdný disk DVD tom dvd-disk Leere DVD Κενό DVD - blank DVD disc + blank DVD disc disco DVD en blanco DVD disko hutsa tyhjä DVD-levy blonk margfløga DVD vierge + disc DVD vueit DVD folamh disco de DVD en branco תקליטור DVD ריק @@ -40129,7 +41622,7 @@ DVD verge Pusta płyta DVD DVD vazio - Disco DVD vazio + Disco DVD vazio disc gol DVD Чистый диск DVD Prázdny disk DVD @@ -40140,27 +41633,29 @@ boş DVD diski порожній диск DVD đĩa DVD trống - 空 DVD 光盘 - 空白 DVD 光碟 + 空 DVD 光盘 + 空白 DVD 光碟 - + blank Blu-ray disc + skoon Blu-ray-skyf قرص بلو-راي فارغ - čysty dysk Blu-ray + čysty dysk Blu-ray Blu-ray — празно disc Blu-Ray en blanc prázdný disk Blu-ray tom Blu-ray-disk Leere Blu-ray-Scheibe Κενό Blu-ray - blank Blu-ray disc + blank Blu-ray disc disco Blu-ray en blanco Blu-ray disko hutsa tyhjä Blu-ray-levy blankur Blu-ray diskur disque Blu-Ray vierge + disc Blu-ray vueit diosca folamh Blu-Ray disco Blu-ray en branco תקליטור בלו־ריי ריק @@ -40179,7 +41674,7 @@ disc Blu-Ray verge Pusta płyta Blu-ray Blu-Ray vazio - Disco Blu-ray vazio + Disco Blu-ray vazio disc gol Blu-ray Чистый диск Blu-ray Prázdny disk Blu-ray @@ -40187,30 +41682,32 @@ Disk bosh Blu-ray празан Блу-реј диск tom Blu-ray-skiva - boş Blue-ray diski + boş Blu-ray diski порожній диск Blu-ray đĩa Blu-ray trống - 空蓝光 DVD - 空白 Blu-ray 光碟 + 空蓝光 DVD + 空白 Blu-ray 光碟 - + blank HD DVD disc + skoon HD-DVD-skyf قرص HD DVD فارغ - čysty dysk HD DVD + čysty dysk HD DVD HD DVD — празно disc HD-DVD en blanc prázdný disk HD DVD tom HD dvd-disk Leere HD-DVD Κενό HD DVD - blank HD DVD disc + blank HD DVD disc disco HD DVD en blanco HD DVD disko hutsa tyhjä HD DVD -levy blankur HD DVD diskur disque HD-DVD vierge + disc HD DVD vueit HD DVD folamh disco de HD DVD en branco דיסק HD DVD ריק @@ -40229,7 +41726,7 @@ disc HD-DVD verge Pusta płyta HD DVD HD DVD vazio - Disco HD DVD vazio + Disco HD DVD vazio disc gol HD DVD Чистый диск HD DVD Prázdny disk HD DVD @@ -40240,28 +41737,30 @@ boş HD DVD diski порожній диск HD DVD đĩa DVD HD trống - 空 HD DVD 光盘 - 空白 HD DVD 光碟 + 空 HD DVD 光盘 + 空白 HD DVD 光碟 - + audio DVD + oudio-DVD DVD سمعي - aŭdyjo DVD + aŭdyjo DVD DVD — аудио DVD d'àudio zvukové DVD lyd-dvd Audio-DVD DVD ήχου - audio DVD + audio DVD Son-DVD - DVD de sonido + DVD de audio audio DVDa ääni-DVD Ljóð DVD DVD audio + DVD audio DVD fuaime DVD de son DVD שמע @@ -40280,7 +41779,7 @@ DVD àudio DVD-Audio DVD áudio - DVD de áudio + DVD de áudio DVD audio Аудио DVD Zvukové DVD @@ -40288,35 +41787,38 @@ DVD audio звучни ДВД ljud-dvd - Müzik DVD'si + ses DVD'si звуковий DVD đĩa DVD âm thanh - 音频 DVD - 音訊 DVD + 音频 DVD + 音訊 DVD - - + + - + Blu-ray video disc + Blu-ray-videoskyf قرص بلو-راي مرئي Discu Blu-ray de videu - Videadysk Blu-ray + Videadysk Blu-ray Blu-ray — видео disc de vídeo Blu-Ray videodisk Blu-ray - Blu-ray video-disk + Blu-ray-videodisk Blu-ray-Videoscheibe Δίσκος βίντεο Blu-ray - Blu-ray video disc + Blu-ray video disc disco de vídeo Blu-ray Blu-ray bideo-diskoa Blu-ray-videolevy Blu-ray diskur disque vidéo Blu-Ray + disc video Blu-ray diosca físe Blu-Ray disco de vídeo Blu-ray תקליטור וידאו מסוג בלו־ריי @@ -40336,7 +41838,7 @@ disc vidèo Blu-Ray Płyta wideo Blu-ray Blu-ray de vídeo - Disco de vídeo Blu-ray + Disco de vídeo Blu-ray Disc video Blu-ray Видеодиск Blu-ray Videodisk Blu-ray @@ -40347,32 +41849,35 @@ Blu-ray video diski відеодиск Blu-ray Đĩa ảnh động Blu-ray - 蓝光视频光盘 - Blu-ray 視訊光碟 + 蓝光视频光盘 + Blu-ray 視訊光碟 - - + + - + HD DVD video disc + HD-DVD-videoskyf قرص HD DVD مرئي Discu HD DVD de videu - Videadysk HD DVD + Videadysk HD DVD HD DVD — видео disc de vídeo HD-DVD Videodisk HD DVD HD DVD-videodisk HD-DVD-Videoscheibe Δίσκος βίντεο HD DVD - HD DVD video disc + HD DVD video disc disco de vídeo HD DVD HD DVD bideo-diskoa HD DVD -videolevy HD DVD video diskur disque vidéo HD DVD + disc video HD DVD diosca físe HD DVD disco de vídeo HD DVD תקליטור וידאו HD DVD @@ -40391,7 +41896,7 @@ disc vidèo HD DVD Płyta wideo HD DVD HD DVD de vídeo - Disco de vídeo HD DVD + Disco de vídeo HD DVD Disc video HD DVD Видеодиск HD DVD Videodisk HD DVD @@ -40402,36 +41907,38 @@ HD DVD vidyo diski відеодиск HD DVD Đĩa ảnh động DVD HD - HD DVD 视频光盘 - HD DVD 視訊光碟 + HD DVD 视频光盘 + HD DVD 視訊光碟 - - - + + + - + e-book reader + e-boekleser Четец на е-книги lector de llibres electrònics čtečka elektronických knih e-bogslæser E-Book-Leser Αναγνώστης ηλεκτρονικών βιβλίων - e-book reader + e-book reader lector de libros electrónicos e-book irakurlea e-kirjan lukulaite lecteur de livre numérique + letôr e-book léitheoir r-leabhair lector de libros electrónicos קורא ספרים אלקטרוניים Čitač e-knjiga e-könyvolvasó Lector de libro electronic - Pembaca e-book + pembaca e-book Lettore e-book 電子書籍リーダー электронды кітаптарды оқу құрылғысы @@ -40441,7 +41948,7 @@ lector de libre numeric Czytnik e-booków leitor de ebooks - Leitor de e-book + Leitor de e-book Устройство для чтения электронных книг Čítačka e-kníh Bralnik elektronskih knjig @@ -40449,31 +41956,35 @@ e-bokläsare e-kitap okuyucu пристрій для читання електронних книг - 电子书阅读器 - e-book 閱讀器 + 电子书阅读器 + e-book 閱讀器 - + - + Picture CD + Picture CD Picture CD - Picture CD - CD — изображения - Picture CD + Picture CD + Picture CD — изображения + CD d'imatges Picture CD Billedcd Picture CD CD εικόνων - Picture CD + Picture CD Picture CD Picture CD Picture CD Picture CD CD Picture + Picture CD dlúthdhiosca grianghraf Picture CD תקליטור תמונות @@ -40492,7 +42003,7 @@ CD Picture Picture CD Picture CD - CD de Fotos + CD de Fotos CD cu fotografii Picture CD Picture CD @@ -40503,30 +42014,32 @@ Resim CD'si CD з зображеннями Đĩa CD ảnh - 柯达 Picture CD - 圖片 CD + 柯达 Picture CD + 圖片 CD - + - + portable audio player + draagbare oudiospeler مشغل الملفات المسموعة المحمولة - pieranosny aŭdyjoplayer + pieranosny aŭdyjoplayer Преносим аудио плеър reproductor d'àudio portàtil přenosný zvukový přehrávač bærbar lydafspiller Portables Audio-Wiedergabegerät Φορητός αναπαραγωγέας μουσικής - portable audio player - dispositivo de sonido portátil + portable audio player + reproductor de audio portátil audio erreproduzigailu eramangarria siirrettävä äänisoitin leysur ljóðavspælari lecteur audio portable + riprodutôr audio portatil seinnteoir iniompartha fuaime dispositivo de son portábel נגן מוזיקה נייד @@ -40545,7 +42058,7 @@ lector àudio portable Przenośny odtwarzacz dźwięku reprodutor áudio portátil - Reprodutor de áudio portátil + Reprodutor de áudio portátil player audio portabil Портативный аудиопроигрыватель Prenosný hudobný prehrávač @@ -40556,27 +42069,62 @@ taşınabilir ses oynatıcısı портативний аудіопрогравач bộ phát nhạc di động - 便携式音频播放器 - 可攜式音訊播放程式 + 便携式音频播放器 + 可攜式音訊播放程式 + + + + + OSTree software updates + Обновление — OSTree + actualitzacions de programari OSTree + OSTree-softwareopdateringer + OSTree-Softwareaktualisierungen + OSTree software updates + actualizaciones de programas de OSTree + OSTree software eguneraketak + OSTree-ohjelmistopäivitykset + mises à jour logicielles OSTree + OSTree nadopune softvera + OSTree szoftverfrissítések + Pemutakhiran perangkat lunak OSTree + Aggiornamenti software OSTree + OSTree бағдарламалық қамтама жаңартулары + OSTree 소프트웨어 업데이트 + Aktualizacje oprogramowania OSTree + Atualizações de software OSTree + OSTree programvaruuppdateringar + OSTree yazılım güncellemeleri + оновлення програмного забезпечення OSTree + OSTree 软件更新 + OSTree 軟體更新 + + + + + - + software + sagteware برنامج - prahrama + prahrama Софтуер programari software software Software Λογισμικό - software + software software softwarea ohjelmisto ritbúnaður logiciel + software bogearraí software תכנה @@ -40596,7 +42144,7 @@ logicial Oprogramowanie programa - Aplicativo + Aplicativo software Программное обеспечение Softvér @@ -40607,26 +42155,29 @@ yazılım програмне забезпечення phần mềm - 软件 - 軟體 + 软件 + 軟體 - + UNIX software + UNIX-sagteware برنامج يونكس - Софтуер за UNIX + Софтуер — UNIX programari d'UNIX software systému UNIX UNIX-programmer UNIX-Software Λογισμικό UNIX - UNIX software + UNIX software software de UNIX UNIXeko softwarea UNIX-ohjelmisto UNIX ritbúnaður logiciel UNIX + software UNIX bogearraí UNIX Software de UNIX תכנה ל־UNIX @@ -40644,7 +42195,7 @@ logicial UNIX Oprogramowanie systemu UNIX programa UNIX - Aplicativo UNIX + Aplicativo UNIX Software UNIX Программа UNIX Softvér UNIX @@ -40653,19 +42204,21 @@ UNIX-programvara UNIX yazılımı програмне забезпечення UNIX - UNIX 软件 - UNIX 軟體 + UNIX 软件 + UNIX 軟體 - - - + + + - + Windows software + Windows-sagteware برنامج ويندوز Софтуер — Windows programari de Windows @@ -40673,12 +42226,13 @@ Windowsprogram Windows-Software Λογισμικό Windows - Windows software + Windows software software de Windows Windows-eko softwarea Windows-ohjelmisto Windows ritbúnaður logiciel Windows + software Windows bogearraí Windows Software de Windows תכנה ל־Windows @@ -40696,7 +42250,7 @@ logicial Windows Oprogramowanie systemu Windows programa Windows - Programa do Windows + Programa do Windows Software Windows Программа Windows Softvér Windows @@ -40705,28 +42259,31 @@ Windows-program Windows yazılımı програмне забезпечення Windows - Windows 软件 - Windows 軟體 + Windows 软件 + Windows 軟體 - - + + TriG RDF document + TriG RDF-dokument Documentu RDF TriG + Документ — TriG RDF document TriG RDF dokument Trig RDF TriG RDF-dokument TriG-RDF-Dokument Έγγραφο TriG RDF - TriG RDF document + TriG RDF document documento RDF de TriG TriG RDF dokumentua TriG RDF -asiakirja document RDF TriG + document TriG RDF cáipéis RDF TriG Documento RDF TriG מסמך RDF של TriG @@ -40740,7 +42297,7 @@ document RDF TriG Dokument RDF TriG documento TriG RDF - Documento RDF do TriG + Documento RDF do TriG Документ TriG RDF RDF dokument TriG Dokument TriG RDF @@ -40748,8 +42305,8 @@ TriG RDF-dokument TriG RDF belgesi документ RDF TriG - TriG RDF 文档 - TriG RDF 文件 + TriG RDF 文档 + TriG RDF 文件 TriG TriG RDF Graph Triple Language @@ -40757,18 +42314,21 @@ - + Apple Keynote 5 presentation - presentació Keynote 5 d'Apple + Apple Keynote 5-voorlegging + Презентация — Apple Keynote 5 + presentació d'Apple Keynote 5 prezentace Apple Keynote 5 Apple Keynote 5-præsentation Apple-Keynote-5-Präsentation Παρουσίαση Apple Keynote 5 - Apple Keynote 5 presentation + Apple Keynote 5 presentation presentación de Apple Keynote 5 Apple Keynote 5 aurkezpena Apple Keynote 5 -esitys présentation Apple Keynote 5 + presentazion Apple Keynote 5 láithreoireacht Apple Keynote 5 Presentación de Apple Keynote 5 מצגת Apple Keynote 5 @@ -40782,7 +42342,7 @@ presentacion Apple Keynote 5 Prezentacja Apple Keynote 5 apresentação Apple Keynote 5 - Apresentação do Apple Keynote 5 + Apresentação do Apple Keynote 5 Презентация Apple Keynote 5 Prezentácia Apple Keynote 5 Predstavitev Apple Keynote 5 @@ -40790,54 +42350,45 @@ Apple Keynote 5-presentation Apple Keynote 5 sunumu презентація Apple Keynote 5 - Apple Keynote 5 演示文稿 - Apple Keynote 5 簡報 + Apple Keynote 5 演示文稿 + Apple Keynote 5 簡報 - - + + - - + + - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe 페이지메이커 - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Dokument Adobe PageMaker - Адобе Пејџ Мејкер - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker - Adobe PageMaker + Adobe PageMaker document + Документ — Adobe PageMaker + document d'Adobe PageMaker + Adobe PageMaker-dokument + Adobe-PageMaker-Dokument + Adobe PageMaker document + documento de Adobe PageMaker + Adobe PageMaker dokumentua + Adobe PageMaker -asiakirja + document Adobe PageMaker + Adobe PageMaker dokument + Adobe PageMaker dokumentum + Dokume Adobe PageMaker + Documento Adobe PageMaker + Adobe PageMaker құжаты + 어도비 페이지메이커 문서 + Dokument Adobe PageMaker + Documento do Adobe PageMaker + Документ Adobe PageMaker + Dokument Adobe PageMaker + Adobe PageMaker-dokument + Adobe PageMaker belgesi + документ Adobe PageMaker + Adobe PageMaker 文档 + Adobe PageMaker 文件 @@ -40847,56 +42398,55 @@ - Doom WAD - WAD de Doom - datový balík WAD hry Doom - Doom WAD - Doom WAD - Doom WAD - WAD de Doom - Doom WAD - WAD Doom - WAD Doom - Doom WAD - Doom WAD - WAD pro Doom - WAD Doom - WAD Doom - Doom WAD - 둠 WAD + Doom WAD file + Ниво — Doom + fitxer WAD de Doom + Doom WAD-fil + Doom-WAD-Datei + Doom WAD file + archivo WAD de Doom + Doom WAD fitxategia + Doom WAD -tiedosto + fichier Doom WAD + Doom WAD datoteka + Doom WAD fájl + Berkas WAD Doom + File WAD Doom + Doom WAD файлы + 둠 WAD 파일 Plik WAD gry Doom - Doom WAD - Doom WAD - WAD Doom - Doom WAD - Дум ВАД - Doom-WAD - Doom WAD - WAD Doom - Doom WAD - Doom WAD + Arquivo Doom WAD + Файл Doom WAD + Doom WAD-fil + Doom WAD dosyası + файл WAD Doom + Doom WAD 文件 + Doom WAD 檔 WAD Where's All the Data - - + + - + Amiga disk image + Amiga-skyfbeeldlêer + Диск — Amiga imatge de disc d'Amiga obraz disku pro Amigu Amiga-diskaftryk Amiga-Datenträgerabbild Εικόνα δίσκου Amiga - Amiga disk image + Amiga disk image imagen de disco de Amiga Amiga disko irudia Amiga-levytiedosto image disque Amiga + imagjin disc Amiga íomhá diosca Amiga דמות כונן Amiga Amiga slika diska @@ -40909,54 +42459,57 @@ imatge disc Amiga Obraz dysku Amiga imagem de disco Amiga - Imagem de disco Amiga + Imagem de disco Amiga Образ диска Amiga Obraz disku Amiga слика диска Амиге Amiga-diskavbild - Amiga disk kalıbı + Amiga disk görüntüsü образ диска Amiga - Amiga 磁盘映像 - Amiga 磁碟映像檔 + Amiga 磁盘映像 + Amiga 磁碟映像檔 - + Flatpak application bundle + Flatpak-toepassingsbundel + Програмен пакет — Flatpak paquet d'aplicació Flatpak balíček Flatpak s aplikací Flatpak-programsamling Flatpak-Anwendungspaket - Flatpak application bundle + Flatpak application bundle paquete de aplicación Flatpak Flatpak aplikazio bilduma Flatpak-sovelluspaketti lot applicatif Flatpak + côl di aplicazions Flatpak burla feidhmchláir Flatpak חבילת יישומי Flatpak Flatpak paket aplikacije Flatpak alkalmazáscsomag - bundel aplikasi Flatpak + Bundel aplikasi Flatpak Bundle applicazione Flatpak Flatpak қолданбалар дестесі Flatpak 프로그램 번들 Pakiet programu Flatpak - Pacote de aplicativo Flatpak + Pacote de aplicativo Flatpak Пакет приложения Flatpak Balík aplikácií Flatpak скуп програма Флатпака Flatpak-programbunt Flatpak uygulama paketi пакунок із програмами Flatpak - Flatpak 应用组合包 - Flatpak 應用程式套組 + Flatpak 应用组合包 + Flatpak 應用程式套組 - - + + @@ -40965,142 +42518,148 @@ Flatpak repository description + Описание на хранилище — Flatpak descripció de dipòsit de Flatpak popis repozitáře Flatpak Flatpak-arkivbeskrivelse Flatpak-Repositoriumsbeschreibung - Flatpak repository description + Flatpak repository description descripción de repositorio de Flatpak Flatpak biltegi deskribapena Flatpak-ohjelmistolähdekuvaus description de dépôt Flatpak + descrizion dipuesit Flatpak cur síos ar stórlann Flatpak תיאור מאגר Flatpak Flatpak opis repozitorija Flatpak tárolóleírás - deskripsi repositori Flatpak + Deskripsi repositori Flatpak Descrizione repository Flatpack Flatpak репозиторийі сипаттамасы Flatpak 저장소 디스크립션 Opis repozytorium Flatpak - Descrição de repositório Flatpak + Descrição de repositório Flatpak Описание репозитория Flatpak Popis repozitára Flatpak опис ризнице Флатпака Flatpak-förrådsbeskrivning Flatpak depo açıklaması опис сховища Flatpak - Flatpak 软件库描述 - Flatpak 軟體庫描述 + Flatpak 软件库描述 + Flatpak 軟體庫描述 - + Flatpak repository reference + Указател към хранилище — Flatpak referència de dipòsit Flatpak odkaz na repozitář Flatpak + Flatpak-arkivreference Flatpak-Repositoriumsreferenz - Flatpak repository reference + Flatpak repository reference referencia a repositorio de Flatpak Flatpak biltegi erreferentzia Flatpak-ohjelmistolähdeviite référence de dépôt Flatpak + riferiment dipuesit Flatpak tagairt do stórlann Flatpak Flatpak preporučeni repozitorij Flatpak tárolóhivatkozás - acuan repositori Flatpak + Acuan repositori Flatpak Riferimento repository Flatpack Flatpak репозиторийіне сілтеме Flatpak 저장소 참조 Odwołanie do repozytorium Flatpak - Referência de repositório Flatpak + Referência de repositório Flatpak Ссылка на репозиторий Flatpak Referencia repozitára Flatpak упута ризнице Флатпака Flatpak-förrådsreferens - Flatpak depo başvurusu + Flatpak depo atfı посилання на сховище Flatpak - Flatpak 软件库引用 - Flatpak 軟體庫參照 + Flatpak 软件库引用 + Flatpak 軟體庫參照 - + - Squashfs filesystem - Sistema de fitxers Squashfs - souborový systém Squashfs - Squashfs-filsystem - Squashfs-Dateisystem - Squashfs filesystem - sistema de archivos Squashfs - Squashfs fitxategi sistema - Squashfs-tiedostojärjestelmä - système de fichiers Squashfs - córas comhad Squashfs - מערכת קבצים Squashfs - Squashfs datotečni sustav - Squashfs fájlrendszer - sistem berkas Squashfs - File system squashfs - Squashfs файлдық жүйесі - Squashfs 파일 시스템 - System plików SquashFS - Sistema de arquivos Squashfs - Файловая система Squashfs - Systém súborov Squashfs - систем датотека Сквошфс - Squashfs-filsystem - Squashfs dosya sistemi - файлова система squashfs - Squashfs 文件系统 - Squashfs 檔案系統 + Squashfs filesystem image + Диск — Squashfs + imatge de sistema de fitxers Squashfs + Squashfs-filsystemaftryk + Squashfs-Dateisystemabbild + Squashfs filesystem image + imagen de sistema de archivos de Squashfs + Squashfs fitxategi sistema irudia + Squashfs-tiedostojärjestelmän levykuva + image de système de fichiers Squashfs + Squashfs slika datotečnog sustava + Squashfs fájlrenszerkép + Image sistem berkas Squashfs + Immagine file system squashfs + Squashfs файлдық жүйе бейнесі + Squashfs 파일 시스템 이미지 + Obraz systemu plików SquashFS + Imagem de sistema de arquivos Squashfs + Образ файловой системы Squashfs + Obraz systému súborov Squashfs + Squashfs filsystemsavbildning + Squashfs dosya sistemi görüntüsü + образ файлової системи squashfs + Squashfs 文件系统映像 + Squashfs 檔案系統映像 - - + + - + AppImage application bundle + AppImage-toepassingsbundel + Програмен пакет — AppImage paquet d'aplicació AppImage balíček AppImage s aplikací - Applmage-programsamling + AppImage-programsamling AppImage-Anwendungspaket - AppImage application bundle + AppImage application bundle paquete de aplicación AppImage AppImage aplikazio bilduma AppImage-sovelluspaketti lot applicatif AppImage + côl di aplicazions AppImage burla feidhmchláir AppImage חבילת יישומי AppImage AppImage paket aplikacije AppImage alkalmazáscsomag - bundel aplikasi AppImage + Bundel aplikasi AppImage Bundle applicazione AppImage AppImage қолданбалар дестесі AppImage 프로그램 번들 Pakiet programu AppImage - Pacote de aplicativo AppImage + pacote de aplicação AppImage + Pacote de aplicativo AppImage Пакет приложения AppImage Balík aplikácií AppImage скуп програма Ап-слике AppImage-programbunt AppImage uygulama paketi пакунок із програмами AppImage - AppImage 应用组合包 - AppImage 應用程式套組 + AppImage 应用组合包 + AppImage 應用程式套組 @@ -41118,45 +42677,78 @@ Snap package - Paquet Snap + Snap-pakket + Пакет — Snap + paquet snap balíček Snap Snap-pakke Snap-Paket - Snap package + Snap package paquete Snap Snap paketea Snap-paketti paquet Snap + pachet Snap pacáiste Snap חבילת Snap Snap paket Snap-csomag - paket Snap + Paket Snap Pacchetto snap Snap дестесі Snap 패키지 Pakiet Snap - Pacote Snap + Pacote Snap Пакет Snap Balík Snap + Paket Snap Снап пакет Snap-paket Snap paketi пакунок snap - Snap 软件包 - Snap 軟體包 + Snap 软件包 + Snap 軟體包 - + STL 3D model + STL 3D-model + Модел — STL 3D + model 3D STL + 3D model STL + STL 3D-model + STL 3D-Modell + STL 3D model + modelo 3D de STL + STL 3D modeloa + STL 3D malli + modèle 3D STL + model STL 3D + samhail 3T STL + STL 3D model + STL 3D modell + Model 3D STL + Modello 3D STL + STL 3D моделі + STL 3D 모델 + Model 3D STL + Modelo 3D STL + 3D-модель STL + STL 3D model + Model STL 3D + STL-3D-modell + STL 3D modeli + просторова модель STL + STL 3D 模型 + STL 3D 模型 STL StereoLithography - - + + @@ -41165,31 +42757,35 @@ G-code file + Модел — G-code fitxer G-code soubor G-code + G-code-fil G-Code-Datei - G-code file + G-code file archivo G-code G-code fitxategia G-code-tiedosto fichier G-code + file G-code comhad G-code G-kôd datoteka G-code fájl - berkas G-code + Berkas G-code File G-code G-code файлы - 지-코드 파일 + G-code 파일 Plik G-code - Arquivo G-code + Arquivo G-code Файл G-code Súbor G-code + Datoteka G-code датотека Г-ко̂да G-code-fil G-code dosyası файл G-code - G-code 文件 - G-code 檔案 + G-code 文件 + G-code 檔案 @@ -41197,37 +42793,260 @@ Nintendo FDS disk image - Imatge de disc Nintendo FDS + Nintendo FDS-skyfbeeldlêer + Диск — Nintendo FDS + imatge de disc Nintendo FDS obraz disku pro Nintendo FDS + Nintendo FDS-diskaftryk Nintendo-FDS-Datenträgerabbild - Nintendo FDS disk image + Nintendo FDS disk image imagen de disco FDS de Nintendo Nintendo FDS disko irudia Nintendo FDS -levykuva image disque Nintendo FDS + imagjin disc Nintendo FDS íomhá diosca Nintendo FDS Nintendo FDS slika diska Nintendo FDS lemezkép - image disk Nintendo FDS + Image disk Nintendo FDS Immagine disco Nintendo FDS Nintendo FDS диск бейнесі 닌텐도 FDS 디스크 이미지 Obraz dysku Nintendo FDS - Imagem de disco Nintendo FDS + Imagem de disco Nintendo FDS Образ диска Nintendo FDS Obraz disku Nintendo FDS Нинтендо ФДС слика диска Nintendo FDS-diskavbild - Nintendo FDS disk kalıbı + Nintendo FDS disk görüntüsü образ диска FDS Nintendo - 任天堂 FDS 磁盘映像 - Nintendo FDS 磁碟映像檔 + 任天堂 FDS 磁盘映像 + Nintendo FDS 磁碟映像檔 FDS Famicom Disk System - + + + + + + QEMU QCOW disk image + imatge de disc QEMU QCOW + QEMU QCOW-diskaftryk + QEMU QCOW-Datenträgerabbild + QEMU QCOW disk image + imagen de disco QCOW de QEMU + QEMU QCOW -levykuva + image disque QEMU QCOW + QEMU QCOW slika diska + QEMU QCOW lemezkép + Image disk QCOW QEMU + Immagine disco QEMU QCOW + QEMU QCOW диск бейнесі + QEMU QCOW 디스크 이미지 + Obraz dysku QCOW QEMU + Imagem de disco QEMU QCOW + Образ диска QEMU QCOW + QEMU QCOW-diskavbildning + QEMU QCOW disk görüntüsü + образ диска QCOW QEMU + QEMU QCOW 磁盘映像 + QEMU QCOW 磁碟映像檔 + QCOW + QEMU Copy On Write + + + + + + + + + + + AppleWorks document + document AppleWorks + AppleWorks-dokument + AppleWorks-Dokument + AppleWorks document + documento de AppleWorks + AppleWorks-asiakirja + document AppleWorks + AppleWorks dokument + AppleWorks-dokumentum + Dokumen AppleWorks + Documento AppleWorks + AppleWorks құжаты + AppleWorks 문서 + Dokument AppleWorks + Documento AppleWorks + Документ AppleWorks + Dokument AppleWorks + AppleWorks-dokument + AppleWorks belgesi + документ AppleWorks + AppleWorks 文档 + AppleWorks 文件 + + + + + + BPS patch + pedaç de BPS + BPS-rettelse + BPS-Patch + BPS patch + parche BPS + BPS-korjaus + correctif BPS + BPS zakrpa + BPS javítócsomag + Patch BPS + Patch BPS + BPS өзгерісі + BPS 패치 + Łata BPS + Patch BPS + Патч BPS + BPS patch + BPS yaması + латка BPS + BPS 补丁 + BPS 修補檔 + BPS + Binary Patching System + + + + + IPS patch + pedaç d'IPS + IPS-rettelse + IPS-Patch + IPS patch + parche IPS + IPS-korjaus + correctif IPS + IPS zakrpa + IPS javítócsomag + Patch IPS + Patch IPS + IPS өзгерісі + IPS 패치 + Łata IPS + Patch IPS + Патч IPS + IPS patch + IPS yaması + латка IPS + IPS 补丁 + IPS 修補檔 + IPS + International Patching System + + + + + + + + Pyspread spreadsheet + full de càlcul de Pyspread + Pyspread-regneark + Pyspread-Tabelle + Pyspread spreadsheet + hoja de cálculo de Pyspread + Pyspread-taulukko + feuille de calcul Pyspread + Pyspread proračunska tablica + Foglio di calcolo Pyspread + Arkusz pyspread + Planilha do Pyspread + Pyspread-kalkylblad + ел. таблиця Pyspread + Pyspread 电子表格 + Pyspread 試算表 + + + + + + + + Pyspread spreadsheet (bzip-compressed) + full de càlcul de Pyspread (amb compressió bzip) + Pyspread-regneark (bzip-komprimeret) + Pyspread-Tabelle (bzip-komprimiert) + Pyspread spreadsheet (bzip-compressed) + hoja de cálculo de Pyspread (comprimida con bzip) + Pyspread-taulukko (bzip-pakattu) + feuille de calcul Pyspread (compressée bzip) + Pyspread proračunska tablica (bzip sažeta) + Foglio di calcolo Pyspread (compresso con bzip) + Arkusz pyspread (kompresja bzip) + Planilha do Pyspread (compactada com bzip) + Pyspread-kalkylblad (bzip-komprimerat) + ел. таблиця Pyspread (стиснена bzip) + Pyspread 电子表格(bzip 压缩) + Pyspread 試算表 (bzip 壓縮) + + + + + + + Kotlin source code + codi font en Kotlin + Kotlin-kildekode + Kotlin-Quelltext + Kotlin source code + código fuente en Kotlin + Kotlin-lähdekoodi + code source Kotlin + Kotlin izvorni kôd + Codice sorgente Kotlin + Kod źródłowy Kotlin + Código-fonte Kotlin + Kotlin-källkod + вихідний код мовою Kotlin + Kotlin 源代码 + Kotlin 源碼 + + + + + + AV1 Image File Format (AVIF) + format de fitxer d'imatge AV1 (AVIF) + AV1-billedfilformat (AVIF) + AV1-Bilddateiformat (AVIF) + AV1 Image File Format (AVIF) + formato de archivo de imagen AV1 (AVIF) + AV1-kuvatiedostomuoto (AVIF) + AV1 format datoteke slike (AVIF) + AV1 Image File Format (AVIF) + Format pliku obrazu AV1 (AVIF) + Formato de arquivo de imagem AV1 (AVIF) + AV1-bildfilformat (AVIF) + формат файлів зображень AV1 (AVIF) + AV1 图像文件格式(AVIF) + AV1 影像檔案格式 (AVIF) + + + + + + + + + + + + + diff -Naur a/qtbase/src/corelib/mimetypes/qmimedatabase.cpp b/qtbase/src/corelib/mimetypes/qmimedatabase.cpp --- a/qtbase/src/corelib/mimetypes/qmimedatabase.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/mimetypes/qmimedatabase.cpp 2022-01-25 17:23:44.169496201 +0000 @@ -389,20 +389,23 @@ // Disambiguate conflicting extensions (if magic matching found something) if (candidateByData.isValid() && magicAccuracy > 0) { const QString sniffedMime = candidateByData.name(); - // If the sniffedMime matches a glob match, use it + // If the sniffedMime matches a highest-weight glob match, use it if (candidatesByName.m_matchingMimeTypes.contains(sniffedMime)) { *accuracyPtr = 100; return candidateByData; } - for (const QString &m : qAsConst(candidatesByName.m_matchingMimeTypes)) { + for (const QString &m : qAsConst(candidatesByName.m_allMatchingMimeTypes)) { if (inherits(m, sniffedMime)) { // We have magic + pattern pointing to this, so it's a pretty good match *accuracyPtr = 100; return mimeTypeForName(m); } } - *accuracyPtr = magicAccuracy; - return candidateByData; + if (candidatesByName.m_allMatchingMimeTypes.isEmpty()) { + // No glob, use magic + *accuracyPtr = magicAccuracy; + return candidateByData; + } } } diff -Naur a/qtbase/src/corelib/mimetypes/qmimeglobpattern.cpp b/qtbase/src/corelib/mimetypes/qmimeglobpattern.cpp --- a/qtbase/src/corelib/mimetypes/qmimeglobpattern.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/mimetypes/qmimeglobpattern.cpp 2022-01-25 17:23:44.199496093 +0000 @@ -83,11 +83,48 @@ } if (!m_matchingMimeTypes.contains(mimeType)) { m_matchingMimeTypes.append(mimeType); - m_allMatchingMimeTypes.append(mimeType); + if (replace) + m_allMatchingMimeTypes.prepend(mimeType); // highest-weight first + else + m_allMatchingMimeTypes.append(mimeType); m_knownSuffixLength = knownSuffixLength; } } +QMimeGlobPattern::PatternType QMimeGlobPattern::detectPatternType(const QString &pattern) const +{ + const int patternLength = pattern.length(); + if (!patternLength) + return OtherPattern; + + const int starCount = pattern.count(QLatin1Char('*')); + const bool hasSquareBracket = pattern.indexOf(QLatin1Char('[')) != -1; + const bool hasQuestionMark = pattern.indexOf(QLatin1Char('?')) != -1; + + if (!hasSquareBracket && !hasQuestionMark) { + if (starCount == 1) { + // Patterns like "*~", "*.extension" + if (pattern.at(0) == QLatin1Char('*')) + return SuffixPattern; + // Patterns like "README*" (well this is currently the only one like that...) + if (pattern.at(patternLength - 1) == QLatin1Char('*')) + return PrefixPattern; + } else if (starCount == 0) { + // Names without any wildcards like "README" + return LiteralPattern; + } + } + + if (pattern == QLatin1String("[0-9][0-9][0-9].vdr")) + return VdrPattern; + + if (pattern == QLatin1String("*.anim[1-9j]")) + return AnimPattern; + + return OtherPattern; +} + + /*! \internal \class QMimeGlobPattern @@ -97,58 +134,66 @@ \sa QMimeType, QMimeDatabase, QMimeMagicRuleMatcher, QMimeMagicRule */ -bool QMimeGlobPattern::matchFileName(const QString &inputFilename) const +bool QMimeGlobPattern::matchFileName(const QString &inputFileName) const { // "Applications MUST match globs case-insensitively, except when the case-sensitive // attribute is set to true." // The constructor takes care of putting case-insensitive patterns in lowercase. - const QString filename = m_caseSensitivity == Qt::CaseInsensitive ? inputFilename.toLower() : inputFilename; + const QString fileName = m_caseSensitivity == Qt::CaseInsensitive + ? inputFileName.toLower() : inputFileName; - const int pattern_len = m_pattern.length(); - if (!pattern_len) + const int patternLength = m_pattern.length(); + if (!patternLength) return false; - const int len = filename.length(); - - const int starCount = m_pattern.count(QLatin1Char('*')); + const int fileNameLength = fileName.length(); - // Patterns like "*~", "*.extension" - if (m_pattern[0] == QLatin1Char('*') && m_pattern.indexOf(QLatin1Char('[')) == -1 && starCount == 1) - { - if (len + 1 < pattern_len) return false; + switch (m_patternType) { + case SuffixPattern: { + if (fileNameLength + 1 < patternLength) + return false; - const QChar *c1 = m_pattern.unicode() + pattern_len - 1; - const QChar *c2 = filename.unicode() + len - 1; + const QChar *c1 = m_pattern.unicode() + patternLength - 1; + const QChar *c2 = fileName.unicode() + fileNameLength - 1; int cnt = 1; - while (cnt < pattern_len && *c1-- == *c2--) + while (cnt < patternLength && *c1-- == *c2--) ++cnt; - return cnt == pattern_len; + return cnt == patternLength; } - - // Patterns like "README*" (well this is currently the only one like that...) - if (starCount == 1 && m_pattern.at(pattern_len - 1) == QLatin1Char('*')) { - if (len + 1 < pattern_len) return false; - if (m_pattern.at(0) == QLatin1Char('*')) - return filename.indexOf(m_pattern.midRef(1, pattern_len - 2)) != -1; + case PrefixPattern: { + if (fileNameLength + 1 < patternLength) + return false; const QChar *c1 = m_pattern.unicode(); - const QChar *c2 = filename.unicode(); + const QChar *c2 = fileName.unicode(); int cnt = 1; - while (cnt < pattern_len && *c1++ == *c2++) + while (cnt < patternLength && *c1++ == *c2++) ++cnt; - return cnt == pattern_len; + return cnt == patternLength; } - - // Names without any wildcards like "README" - if (m_pattern.indexOf(QLatin1Char('[')) == -1 && starCount == 0 && m_pattern.indexOf(QLatin1Char('?'))) - return (m_pattern == filename); - - // Other (quite rare) patterns, like "*.anim[1-9j]": use slow but correct method + case LiteralPattern: + return (m_pattern == fileName); + case VdrPattern: // "[0-9][0-9][0-9].vdr" case + return fileNameLength == 7 + && fileName.at(0).isDigit() && fileName.at(1).isDigit() && fileName.at(2).isDigit() + && QStringView{fileName}.mid(3, 4) == QLatin1String(".vdr"); + case AnimPattern: { // "*.anim[1-9j]" case + if (fileNameLength < 6) + return false; + const QChar lastChar = fileName.at(fileNameLength - 1); + const bool lastCharOK = (lastChar.isDigit() && lastChar != QLatin1Char('0')) + || lastChar == QLatin1Char('j'); + return lastCharOK && QStringView{fileName}.mid(fileNameLength - 6, 5) == QLatin1String(".anim"); + } + case OtherPattern: + // Other fallback patterns: slow but correct method #if QT_CONFIG(regularexpression) - QRegularExpression rx(QRegularExpression::wildcardToRegularExpression(m_pattern)); - return rx.match(filename).hasMatch(); + QRegularExpression rx(QRegularExpression::wildcardToRegularExpression(m_pattern)); + return rx.match(fileName).hasMatch(); #else - return false; + return false; #endif + } + return false; } static bool isSimplePattern(const QString &pattern) diff -Naur a/qtbase/src/corelib/mimetypes/qmimeglobpattern_p.h b/qtbase/src/corelib/mimetypes/qmimeglobpattern_p.h --- a/qtbase/src/corelib/mimetypes/qmimeglobpattern_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/mimetypes/qmimeglobpattern_p.h 2022-01-25 17:23:44.188496133 +0000 @@ -80,7 +80,10 @@ explicit QMimeGlobPattern(const QString &thePattern, const QString &theMimeType, unsigned theWeight = DefaultWeight, Qt::CaseSensitivity s = Qt::CaseInsensitive) : m_pattern(s == Qt::CaseInsensitive ? thePattern.toLower() : thePattern), - m_mimeType(theMimeType), m_weight(theWeight), m_caseSensitivity(s) + m_mimeType(theMimeType), + m_weight(theWeight), + m_caseSensitivity(s), + m_patternType(detectPatternType(m_pattern)) { } @@ -90,9 +93,10 @@ qSwap(m_mimeType, other.m_mimeType); qSwap(m_weight, other.m_weight); qSwap(m_caseSensitivity, other.m_caseSensitivity); + qSwap(m_patternType, other.m_patternType); } - bool matchFileName(const QString &filename) const; + bool matchFileName(const QString &inputFileName) const; inline const QString &pattern() const { return m_pattern; } inline unsigned weight() const { return m_weight; } @@ -100,10 +104,21 @@ inline bool isCaseSensitive() const { return m_caseSensitivity == Qt::CaseSensitive; } private: + enum PatternType { + SuffixPattern, + PrefixPattern, + LiteralPattern, + VdrPattern, // special handling for "[0-9][0-9][0-9].vdr" pattern + AnimPattern, // special handling for "*.anim[1-9j]" pattern + OtherPattern + }; + PatternType detectPatternType(const QString &pattern) const; + QString m_pattern; QString m_mimeType; int m_weight; Qt::CaseSensitivity m_caseSensitivity; + PatternType m_patternType; }; Q_DECLARE_SHARED(QMimeGlobPattern) diff -Naur a/qtbase/src/corelib/mimetypes/qmimeprovider.cpp b/qtbase/src/corelib/mimetypes/qmimeprovider.cpp --- a/qtbase/src/corelib/mimetypes/qmimeprovider.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/mimetypes/qmimeprovider.cpp 2022-01-25 17:23:44.188496133 +0000 @@ -244,15 +244,18 @@ const QString lowerFileName = fileName.toLower(); // Check literals (e.g. "Makefile") matchGlobList(result, m_cacheFile, m_cacheFile->getUint32(PosLiteralListOffset), fileName); - // Check complex globs (e.g. "callgrind.out[0-9]*") - matchGlobList(result, m_cacheFile, m_cacheFile->getUint32(PosGlobListOffset), fileName); // Check the very common *.txt cases with the suffix tree - const int reverseSuffixTreeOffset = m_cacheFile->getUint32(PosReverseSuffixTreeOffset); - const int numRoots = m_cacheFile->getUint32(reverseSuffixTreeOffset); - const int firstRootOffset = m_cacheFile->getUint32(reverseSuffixTreeOffset + 4); - matchSuffixTree(result, m_cacheFile, numRoots, firstRootOffset, lowerFileName, lowerFileName.length() - 1, false); + if (result.m_matchingMimeTypes.isEmpty()) { + const int reverseSuffixTreeOffset = m_cacheFile->getUint32(PosReverseSuffixTreeOffset); + const int numRoots = m_cacheFile->getUint32(reverseSuffixTreeOffset); + const int firstRootOffset = m_cacheFile->getUint32(reverseSuffixTreeOffset + 4); + matchSuffixTree(result, m_cacheFile, numRoots, firstRootOffset, lowerFileName, lowerFileName.length() - 1, false); + if (result.m_matchingMimeTypes.isEmpty()) + matchSuffixTree(result, m_cacheFile, numRoots, firstRootOffset, fileName, fileName.length() - 1, true); + } + // Check complex globs (e.g. "callgrind.out[0-9]*" or "README*") if (result.m_matchingMimeTypes.isEmpty()) - matchSuffixTree(result, m_cacheFile, numRoots, firstRootOffset, fileName, fileName.length() - 1, true); + matchGlobList(result, m_cacheFile, m_cacheFile->getUint32(PosGlobListOffset), fileName); } void QMimeBinaryProvider::matchGlobList(QMimeGlobMatchResult &result, CacheFile *cacheFile, int off, const QString &fileName) @@ -272,7 +275,6 @@ //qDebug() << pattern << mimeType << weight << caseSensitive; QMimeGlobPattern glob(pattern, QString() /*unused*/, weight, qtCaseSensitive); - // TODO: this could be done faster for literals where a simple == would do. if (glob.matchFileName(fileName)) result.addMatch(QLatin1String(mimeType), weight, pattern); } diff -Naur a/qtbase/src/corelib/plugin/qlibrary_unix.cpp b/qtbase/src/corelib/plugin/qlibrary_unix.cpp --- a/qtbase/src/corelib/plugin/qlibrary_unix.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/plugin/qlibrary_unix.cpp 2022-01-25 17:23:44.074496542 +0000 @@ -243,10 +243,10 @@ } if (hnd) { using JniOnLoadPtr = jint (*)(JavaVM *vm, void *reserved); - JniOnLoadPtr jniOnLoad = reinterpret_cast(dlsym(pHnd, "JNI_OnLoad")); + JniOnLoadPtr jniOnLoad = reinterpret_cast(dlsym(hnd, "JNI_OnLoad")); if (jniOnLoad && jniOnLoad(QtAndroidPrivate::javaVM(), nullptr) == JNI_ERR) { dlclose(hnd); - pHnd = nullptr; + hnd = nullptr; } } #endif diff -Naur a/qtbase/src/corelib/Qt5AndroidSupport.cmake b/qtbase/src/corelib/Qt5AndroidSupport.cmake --- a/qtbase/src/corelib/Qt5AndroidSupport.cmake 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/Qt5AndroidSupport.cmake 2022-01-25 17:23:44.107496424 +0000 @@ -19,7 +19,7 @@ endif() endforeach() option(ANDROID_MIN_SDK_VERSION "Android minimum SDK version" "21") - option(ANDROID_TARGET_SDK_VERSION "Android target SDK version" "28") + option(ANDROID_TARGET_SDK_VERSION "Android target SDK version" "29") # Make sure to delete the "android-build" directory, which contains all the # build artefacts, and also the androiddeployqt/gradle artefacts diff -Naur a/qtbase/src/corelib/serialization/qcborarray.h b/qtbase/src/corelib/serialization/qcborarray.h --- a/qtbase/src/corelib/serialization/qcborarray.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/serialization/qcborarray.h 2022-01-25 17:23:44.101496445 +0000 @@ -276,6 +276,7 @@ friend QCborValue; friend QCborValueRef; friend class QJsonPrivate::Variant; + friend class QCborContainerPrivate; explicit QCborArray(QCborContainerPrivate &dd) noexcept; QExplicitlySharedDataPointer d; }; diff -Naur a/qtbase/src/corelib/serialization/qcbormap.h b/qtbase/src/corelib/serialization/qcbormap.h --- a/qtbase/src/corelib/serialization/qcbormap.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/serialization/qcbormap.h 2022-01-25 17:23:44.101496445 +0000 @@ -330,6 +330,7 @@ friend class QCborValue; friend class QCborValueRef; friend class QJsonPrivate::Variant; + friend class QCborContainerPrivate; void detach(qsizetype reserve = 0); explicit QCborMap(QCborContainerPrivate &dd) noexcept; diff -Naur a/qtbase/src/corelib/serialization/qcborstreamreader.cpp b/qtbase/src/corelib/serialization/qcborstreamreader.cpp --- a/qtbase/src/corelib/serialization/qcborstreamreader.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/serialization/qcborstreamreader.cpp 2022-01-25 17:23:44.125496359 +0000 @@ -667,6 +667,7 @@ } bool ensureStringIteration(); + QCborStreamReader::StringResult readStringChunk(char *ptr, qsizetype maxlen); }; void qt_cbor_stream_set_error(QCborStreamReaderPrivate *d, QCborError error) @@ -1460,28 +1461,37 @@ QCborStreamReader::StringResult QCborStreamReader::readStringChunk(char *ptr, qsizetype maxlen) { + auto r = d->readStringChunk(ptr, maxlen); + if (r.status == EndOfString && lastError() == QCborError::NoError) + preparse(); + return r; +} + +QCborStreamReader::StringResult +QCborStreamReaderPrivate::readStringChunk(char *ptr, qsizetype maxlen) +{ CborError err; size_t len; const void *content = nullptr; QCborStreamReader::StringResult result; result.data = 0; - result.status = Error; + result.status = QCborStreamReader::Error; - d->lastError = {}; - if (!d->ensureStringIteration()) + lastError = {}; + if (!ensureStringIteration()) return result; #if 1 // Using internal TinyCBOR API! - err = _cbor_value_get_string_chunk(&d->currentElement, &content, &len, &d->currentElement); + err = _cbor_value_get_string_chunk(¤tElement, &content, &len, ¤tElement); #else // the above is effectively the same as: if (cbor_value_is_byte_string(¤tElement)) - err = cbor_value_get_byte_string_chunk(&d->currentElement, reinterpret_cast(&content), - &len, &d->currentElement); + err = cbor_value_get_byte_string_chunk(¤tElement, reinterpret_cast(&content), + &len, ¤tElement); else - err = cbor_value_get_text_string_chunk(&d->currentElement, reinterpret_cast(&content), - &len, &d->currentElement); + err = cbor_value_get_text_string_chunk(¤tElement, reinterpret_cast(&content), + &len, ¤tElement); #endif // Range check: using implementation-defined behavior in converting an @@ -1493,14 +1503,13 @@ if (err) { if (err == CborErrorNoMoreStringChunks) { - d->preread(); - err = cbor_value_finish_string_iteration(&d->currentElement); - result.status = EndOfString; + preread(); + err = cbor_value_finish_string_iteration(¤tElement); + result.status = QCborStreamReader::EndOfString; } if (err) - d->handleError(err); - else - preparse(); + handleError(err); + // caller musts call preparse() return result; } @@ -1514,34 +1523,34 @@ else toRead = maxlen; // buffer smaller than string - if (d->device) { + if (device) { // This first skip can't fail because we've already read this many bytes. - d->device->skip(d->bufferStart + qptrdiff(content)); - actuallyRead = d->device->read(ptr, toRead); + device->skip(bufferStart + qptrdiff(content)); + actuallyRead = device->read(ptr, toRead); if (actuallyRead != toRead) { actuallyRead = -1; } else if (left) { - qint64 skipped = d->device->skip(left); + qint64 skipped = device->skip(left); if (skipped != left) actuallyRead = -1; } if (actuallyRead < 0) { - d->handleError(CborErrorIO); + handleError(CborErrorIO); return result; } - d->updateBufferAfterString(offset, len); + updateBufferAfterString(offset, len); } else { actuallyRead = toRead; - memcpy(ptr, d->buffer.constData() + d->bufferStart + offset, toRead); - d->bufferStart += QByteArray::size_type(offset + len); + memcpy(ptr, buffer.constData() + bufferStart + offset, toRead); + bufferStart += QByteArray::size_type(offset + len); } - d->preread(); + preread(); result.data = actuallyRead; - result.status = Ok; + result.status = QCborStreamReader::Ok; return result; } diff -Naur a/qtbase/src/corelib/serialization/qcborvalue_p.h b/qtbase/src/corelib/serialization/qcborvalue_p.h --- a/qtbase/src/corelib/serialization/qcborvalue_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/serialization/qcborvalue_p.h 2022-01-25 17:23:44.102496441 +0000 @@ -128,6 +128,7 @@ public: enum ContainerDisposition { CopyContainer, MoveContainer }; + enum class ConversionMode { FromRaw, FromVariantToJson }; QByteArray::size_type usedData = 0; QByteArray data; @@ -139,6 +140,12 @@ static QCborContainerPrivate *detach(QCborContainerPrivate *d, qsizetype reserved); static QCborContainerPrivate *grow(QCborContainerPrivate *d, qsizetype index); + static QCborMap fromVariantMap(const QVariantMap &map, + ConversionMode mode = ConversionMode::FromRaw); + + static QCborArray fromVariantList(const QVariantList &list, + ConversionMode mode = ConversionMode::FromRaw); + qptrdiff addByteData(const char *block, qsizetype len) { // This function does not do overflow checking, since the len parameter diff -Naur a/qtbase/src/corelib/serialization/qjsoncbor.cpp b/qtbase/src/corelib/serialization/qjsoncbor.cpp --- a/qtbase/src/corelib/serialization/qjsoncbor.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/serialization/qjsoncbor.cpp 2022-01-25 17:23:44.102496441 +0000 @@ -54,8 +54,7 @@ QT_BEGIN_NAMESPACE using namespace QtCbor; - -enum class ConversionMode { FromRaw, FromVariantToJson }; +using ConversionMode = QCborContainerPrivate::ConversionMode; static QJsonValue fpToJson(double v) { @@ -450,7 +449,8 @@ QJsonArray QJsonPrivate::Variant::toJsonArray(const QVariantList &list) { - const auto cborArray = QCborArray::fromVariantList(list); + const auto cborArray = + QCborContainerPrivate::fromVariantList(list, ConversionMode::FromVariantToJson); return convertToJsonArray(cborArray.d.data(), ConversionMode::FromVariantToJson); } @@ -498,7 +498,8 @@ QJsonObject QJsonPrivate::Variant::toJsonObject(const QVariantMap &map) { - const auto cborMap = QCborMap::fromVariantMap(map); + const auto cborMap = + QCborContainerPrivate::fromVariantMap(map, ConversionMode::FromVariantToJson); return convertToJsonObject(cborMap.d.data(), ConversionMode::FromVariantToJson); } @@ -661,77 +662,8 @@ return QCborValue(); } -static void appendVariant(QCborContainerPrivate *d, const QVariant &variant) -{ - // Handle strings and byte arrays directly, to avoid creating a temporary - // dummy container to hold their data. - int type = variant.userType(); - if (type == QMetaType::QString) { - d->append(variant.toString()); - } else if (type == QMetaType::QByteArray) { - QByteArray ba = variant.toByteArray(); - d->appendByteData(ba.constData(), ba.size(), QCborValue::ByteArray); - } else { - // For everything else, use the function below. - d->append(QCborValue::fromVariant(variant)); - } -} - -/*! - Converts the QVariant \a variant into QCborValue and returns it. - - QVariants may contain a large list of different meta types, many of which - have no corresponding representation in CBOR. That includes all - user-defined meta types. When preparing transmission using CBOR, it is - suggested to encode carefully each value to prevent loss of representation. - - The following table lists the conversion this function will apply: - - \table - \header \li Qt (C++) type \li CBOR type - \row \li invalid (QVariant()) \li Undefined - \row \li \c bool \li Bool - \row \li \c std::nullptr_t \li Null - \row \li \c short, \c ushort, \c int, \c uint, \l qint64 \li Integer - \row \li \l quint64 \li Integer, but they are cast to \c qint64 first so - values higher than 2\sup{63}-1 (\c INT64_MAX) will - be wrapped to negative - \row \li \c float, \c double \li Double - \row \li \l QByteArray \li ByteArray - \row \li \l QDateTime \li DateTime - \row \li \l QCborSimpleType \li Simple type - \row \li \l QJsonArray \li Array, converted using QCborArray::formJsonArray() - \row \li \l QJsonDocument \li Array or Map - \row \li \l QJsonObject \li Map, converted using QCborMap::fromJsonObject() - \row \li \l QJsonValue \li converted using fromJsonValue() - \row \li \l QRegularExpression \li RegularExpression - \row \li \l QString \li String - \row \li \l QStringList \li Array - \row \li \l QVariantHash \li Map - \row \li \l QVariantList \li Array - \row \li \l QVariantMap \li Map - \row \li \l QUrl \li Url - \row \li \l QUuid \li Uuid - \endtable - - If QVariant::isNull() returns true, a null QCborValue is returned or - inserted into the list or object, regardless of the type carried by - QVariant. Note the behavior change in Qt 6.0 affecting QVariant::isNull() - also affects this function. - - For other types not listed above, a conversion to string will be attempted, - usually but not always by calling QVariant::toString(). If the conversion - fails the value is replaced by an Undefined CBOR value. Note that - QVariant::toString() is also lossy for the majority of types. - - Please note that the conversions via QVariant::toString() are subject to - change at any time. Both QVariant and QCborValue may be extended in the - future to support more types, which will result in a change in how this - function performs conversions. - - \sa toVariant(), fromJsonValue(), QCborArray::toVariantList(), QCborMap::toVariantMap(), QJsonValue::fromVariant() - */ -QCborValue QCborValue::fromVariant(const QVariant &variant) +static QCborValue fromVariantImpl(const QVariant &variant, + ConversionMode mode = ConversionMode::FromRaw) { switch (variant.userType()) { case QMetaType::UnknownType: @@ -744,9 +676,12 @@ case QMetaType::UShort: case QMetaType::Int: case QMetaType::LongLong: - case QMetaType::ULongLong: case QMetaType::UInt: return variant.toLongLong(); + case QMetaType::ULongLong: + if (mode != ConversionMode::FromVariantToJson ) + return variant.toLongLong(); + Q_FALLTHROUGH(); case QMetaType::Float: case QMetaType::Double: return variant.toDouble(); @@ -765,9 +700,9 @@ case QMetaType::QUuid: return QCborValue(variant.toUuid()); case QMetaType::QVariantList: - return QCborArray::fromVariantList(variant.toList()); + return QCborContainerPrivate::fromVariantList(variant.toList(), mode); case QMetaType::QVariantMap: - return QCborMap::fromVariantMap(variant.toMap()); + return QCborContainerPrivate::fromVariantMap(variant.toMap(), mode); case QMetaType::QVariantHash: return QCborMap::fromVariantHash(variant.toHash()); #ifndef QT_BOOTSTRAPPED @@ -776,7 +711,7 @@ return QCborValue(variant.toRegularExpression()); #endif case QMetaType::QJsonValue: - return fromJsonValue(variant.toJsonValue()); + return QCborValue::fromJsonValue(variant.toJsonValue()); case QMetaType::QJsonObject: return QCborMap::fromJsonObject(variant.toJsonObject()); case QMetaType::QJsonArray: @@ -809,6 +744,106 @@ return string; } +static void appendVariant(QCborContainerPrivate *d, const QVariant &variant, + ConversionMode mode = ConversionMode::FromRaw) +{ + // Handle strings and byte arrays directly, to avoid creating a temporary + // dummy container to hold their data. + int type = variant.userType(); + if (type == QMetaType::QString) { + d->append(variant.toString()); + } else if (type == QMetaType::QByteArray) { + QByteArray ba = variant.toByteArray(); + d->appendByteData(ba.constData(), ba.size(), QCborValue::ByteArray); + } else { + // For everything else, use the function below. + d->append(fromVariantImpl(variant, mode)); + } +} + +QCborMap QCborContainerPrivate::fromVariantMap(const QVariantMap &map, ConversionMode mode) +{ + QCborMap m; + m.detach(map.size()); + QCborContainerPrivate *d = m.d.data(); + + auto it = map.begin(); + auto end = map.end(); + for ( ; it != end; ++it) { + d->append(it.key()); + appendVariant(d, it.value(), mode); + } + return m; +} + +QCborArray QCborContainerPrivate::fromVariantList(const QVariantList &list, ConversionMode mode) +{ + QCborArray a; + a.detach(list.size()); + for (const QVariant &v : list) + appendVariant(a.d.data(), v, mode); + return a; +} + +/*! + Converts the QVariant \a variant into QCborValue and returns it. + + QVariants may contain a large list of different meta types, many of which + have no corresponding representation in CBOR. That includes all + user-defined meta types. When preparing transmission using CBOR, it is + suggested to encode carefully each value to prevent loss of representation. + + The following table lists the conversion this function will apply: + + \table + \header \li Qt (C++) type \li CBOR type + \row \li invalid (QVariant()) \li Undefined + \row \li \c bool \li Bool + \row \li \c std::nullptr_t \li Null + \row \li \c short, \c ushort, \c int, \c uint, \l qint64 \li Integer + \row \li \l quint64 \li Integer, but they are cast to \c qint64 first so + values higher than 2\sup{63}-1 (\c INT64_MAX) will + be wrapped to negative + \row \li \c float, \c double \li Double + \row \li \l QByteArray \li ByteArray + \row \li \l QDateTime \li DateTime + \row \li \l QCborSimpleType \li Simple type + \row \li \l QJsonArray \li Array, converted using QCborArray::formJsonArray() + \row \li \l QJsonDocument \li Array or Map + \row \li \l QJsonObject \li Map, converted using QCborMap::fromJsonObject() + \row \li \l QJsonValue \li converted using fromJsonValue() + \row \li \l QRegularExpression \li RegularExpression + \row \li \l QString \li String + \row \li \l QStringList \li Array + \row \li \l QVariantHash \li Map + \row \li \l QVariantList \li Array + \row \li \l QVariantMap \li Map + \row \li \l QUrl \li Url + \row \li \l QUuid \li Uuid + \endtable + + If QVariant::isNull() returns true, a null QCborValue is returned or + inserted into the list or object, regardless of the type carried by + QVariant. Note the behavior change in Qt 6.0 affecting QVariant::isNull() + also affects this function. + + For other types not listed above, a conversion to string will be attempted, + usually but not always by calling QVariant::toString(). If the conversion + fails the value is replaced by an Undefined CBOR value. Note that + QVariant::toString() is also lossy for the majority of types. + + Please note that the conversions via QVariant::toString() are subject to + change at any time. Both QVariant and QCborValue may be extended in the + future to support more types, which will result in a change in how this + function performs conversions. + + \sa toVariant(), fromJsonValue(), QCborArray::toVariantList(), QCborMap::toVariantMap(), QJsonValue::fromVariant() + */ +QCborValue QCborValue::fromVariant(const QVariant &variant) +{ + return fromVariantImpl(variant); +} + /*! Recursively converts each \l QCborValue in this array using QCborValue::toVariant() and returns the QVariantList composed of the @@ -854,11 +889,7 @@ */ QCborArray QCborArray::fromVariantList(const QVariantList &list) { - QCborArray a; - a.detach(list.size()); - for (const QVariant &v : list) - appendVariant(a.d.data(), v); - return a; + return QCborContainerPrivate::fromVariantList(list); } /*! @@ -939,17 +970,7 @@ */ QCborMap QCborMap::fromVariantMap(const QVariantMap &map) { - QCborMap m; - m.detach(map.size()); - QCborContainerPrivate *d = m.d.data(); - - auto it = map.begin(); - auto end = map.end(); - for ( ; it != end; ++it) { - d->append(it.key()); - appendVariant(d, it.value()); - } - return m; + return QCborContainerPrivate::fromVariantMap(map); } /*! diff -Naur a/qtbase/src/corelib/serialization/qjsonvalue.cpp b/qtbase/src/corelib/serialization/qjsonvalue.cpp --- a/qtbase/src/corelib/serialization/qjsonvalue.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/serialization/qjsonvalue.cpp 2022-01-25 17:23:44.102496441 +0000 @@ -449,11 +449,8 @@ also affects this function. A floating point value that is either an infinity or NaN will be converted - to a null JSON value. Since Qt 6.0, QJsonValue can store the full precision - of any 64-bit signed integer without loss, but in previous versions values - outside the range of ±2^53 may lose precision. Unsigned 64-bit values - greater than or equal to 2^63 will either lose precision or alias to - negative values, so QMetaType::ULongLong should be avoided. + to a null JSON value. The values outside the range of ±2^53 may lose precision, + because they are converted to a double QJsonValue. For other types not listed above, a conversion to string will be attempted, usually but not always by calling QVariant::toString(). If the conversion diff -Naur a/qtbase/src/corelib/text/qbytearraymatcher.h b/qtbase/src/corelib/text/qbytearraymatcher.h --- a/qtbase/src/corelib/text/qbytearraymatcher.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/text/qbytearraymatcher.h 2022-01-25 17:23:44.144496291 +0000 @@ -42,6 +42,8 @@ #include +#include + QT_BEGIN_NAMESPACE diff -Naur a/qtbase/src/corelib/text/qlocale.cpp b/qtbase/src/corelib/text/qlocale.cpp --- a/qtbase/src/corelib/text/qlocale.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/text/qlocale.cpp 2022-01-25 17:23:44.111496409 +0000 @@ -2042,27 +2042,62 @@ #endif /*! - \since 5.10 + \since 5.14 Returns a localized string representation of the given \a date in the - specified \a format. + specified \a format, optionally for a specified calendar \a cal. If \a format is an empty string, an empty string is returned. \sa QDate::toString() */ +QString QLocale::toString(const QDate &date, QStringView format, QCalendar cal) const +{ + return cal.dateTimeToString(format, QDateTime(), date, QTime(), *this); +} + +/*! + \since 5.10 + \overload +*/ QString QLocale::toString(const QDate &date, QStringView format) const { return QCalendar().dateTimeToString(format, QDateTime(), date, QTime(), *this); } /*! + \since 5.14 + Returns a localized string representation of the given \a date according - to the specified \a format (see dateFormat()). + to the specified \a format (see dateFormat()), optionally for a specified + calendar \a cal. \note Some locales may use formats that limit the range of years they can represent. */ +QString QLocale::toString(const QDate &date, FormatType format, QCalendar cal) const +{ + if (!date.isValid()) + return QString(); +#ifndef QT_NO_SYSTEMLOCALE + if (cal.isGregorian() && d->m_data == systemData()) { + QVariant res = systemLocale()->query(format == LongFormat + ? QSystemLocale::DateToStringLong + : QSystemLocale::DateToStringShort, + date); + if (!res.isNull()) + return res.toString(); + } +#endif + + QString format_str = dateFormat(format); + return toString(date, format_str, cal); +} + +/*! + \since 4.5 + \overload +*/ QString QLocale::toString(const QDate &date, FormatType format) const { if (!date.isValid()) @@ -2115,7 +2150,7 @@ #endif /*! - \since 5.10 + \since 4.5 Returns a localized string representation of the given \a time according to the specified \a format. @@ -2146,46 +2181,39 @@ #endif /*! - \since 5.10 + \since 5.14 Returns a localized string representation of the given \a dateTime according - to the specified \a format. + to the specified \a format, optionally for a specified calendar \a cal. If \a format is an empty string, an empty string is returned. \sa QDateTime::toString(), QDate::toString(), QTime::toString() */ -QString QLocale::toString(const QDateTime &dateTime, QStringView format) const +QString QLocale::toString(const QDateTime &dateTime, QStringView format, QCalendar cal) const { - return QCalendar().dateTimeToString(format, dateTime, QDate(), QTime(), *this); + return cal.dateTimeToString(format, dateTime, QDate(), QTime(), *this); } -QString QLocale::toString(const QDate &date, QStringView format, QCalendar cal) const +/*! + \since 5.10 + \overload +*/ +QString QLocale::toString(const QDateTime &dateTime, QStringView format) const { - return cal.dateTimeToString(format, QDateTime(), date, QTime(), *this); + return QCalendar().dateTimeToString(format, dateTime, QDate(), QTime(), *this); } -QString QLocale::toString(const QDate &date, QLocale::FormatType format, QCalendar cal) const -{ - if (!date.isValid()) - return QString(); - -#ifndef QT_NO_SYSTEMLOCALE - if (cal.isGregorian() && d->m_data == systemData()) { - QVariant res = systemLocale()->query(format == LongFormat - ? QSystemLocale::DateToStringLong - : QSystemLocale::DateToStringShort, - date); - if (!res.isNull()) - return res.toString(); - } -#endif +/*! + \since 5.14 - QString format_str = dateFormat(format); - return toString(date, format_str, cal); -} + Returns a localized string representation of the given \a dateTime according + to the specified \a format (see dateTimeFormat()), optionally for a + specified calendar \a cal. -QString QLocale::toString(const QDateTime &dateTime, QLocale::FormatType format, - QCalendar cal) const + \note Some locales may use formats that limit the range of years they can + represent. +*/ +QString QLocale::toString(const QDateTime &dateTime, FormatType format, QCalendar cal) const { if (!dateTime.isValid()) return QString(); @@ -2205,21 +2233,10 @@ return toString(dateTime, format_str, cal); } -QString QLocale::toString(const QDateTime &dateTime, QStringView format, QCalendar cal) const -{ - return cal.dateTimeToString(format, dateTime, QDate(), QTime(), *this); -} - /*! \since 4.4 - - Returns a localized string representation of the given \a dateTime according - to the specified \a format (see dateTimeFormat()). - - \note Some locales may use formats that limit the range of years they can - represent. + \overload */ - QString QLocale::toString(const QDateTime &dateTime, FormatType format) const { if (!dateTime.isValid()) @@ -2551,7 +2568,12 @@ \note The month and day names used must be given in the user's local language. - If the string could not be parsed, returns an invalid QDateTime. + If the string could not be parsed, returns an invalid QDateTime. If the + string can be parsed and represents an invalid date-time (e.g. in a gap + skipped by a time-zone transition), an invalid QDateTime is returned, whose + toMSecsSinceEpoch() represents a near-by date-time that is valid. Passing + that to fromMSecsSinceEpoch() will produce a valid date-time that isn't + faithfully represented by the string parsed. \sa dateTimeFormat(), toTime(), toDate(), QDateTime::fromString() */ @@ -2571,7 +2593,7 @@ QDateTimeParser dt(QMetaType::QDateTime, QDateTimeParser::FromString, cal); dt.setDefaultLocale(*this); - if (dt.parseFormat(format) && dt.fromString(string, &datetime)) + if (dt.parseFormat(format) && (dt.fromString(string, &datetime) || !datetime.isValid())) return datetime; #else Q_UNUSED(string); diff -Naur a/qtbase/src/corelib/text/qlocale_data_p.h b/qtbase/src/corelib/text/qlocale_data_p.h --- a/qtbase/src/corelib/text/qlocale_data_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/text/qlocale_data_p.h 2022-01-25 17:23:44.086496499 +0000 @@ -77,8 +77,8 @@ // GENERATED PART STARTS HERE /* - This part of the file was generated on 2020-10-27 from the - Common Locale Data Repository v37 + This part of the file was generated on 2020-11-09 from the + Common Locale Data Repository v38 http://www.unicode.org/cldr/ @@ -162,7 +162,7 @@ { 176, 0, 0 }, { 176, 7, 111 }, // dav -> dav_Latn_KE { 42, 0, 0 }, { 42, 7, 82 }, // de -> de_Latn_DE { 239, 0, 0 }, { 239, 7, 156 }, // dje -> dje_Latn_NE - { 275, 0, 0 }, { 275, 1, 100 }, // doi -> doi_Arab_IN + { 275, 0, 0 }, { 275, 13, 100 }, // doi -> doi_Deva_IN { 317, 0, 0 }, { 317, 7, 82 }, // dsb -> dsb_Latn_DE { 240, 0, 0 }, { 240, 7, 37 }, // dua -> dua_Latn_CM { 143, 0, 0 }, { 143, 29, 131 }, // dv -> dv_Thaa_MV @@ -210,7 +210,6 @@ { 163, 0, 0 }, { 163, 7, 225 }, // haw -> haw_Latn_US { 48, 0, 0 }, { 48, 18, 105 }, // he -> he_Hebr_IL { 49, 0, 0 }, { 49, 13, 100 }, // hi -> hi_Deva_IN - { 49, 7, 0 }, { 49, 7, 100 }, // hi_Latn -> hi_Latn_IN { 344, 0, 0 }, { 344, 129, 217 }, // hlu -> hlu_Hluw_TR { 282, 0, 0 }, { 282, 86, 44 }, // hmd -> hmd_Plrd_CN { 333, 0, 0 }, { 333, 110, 117 }, // hnj -> hnj_Hmng_LA @@ -268,7 +267,6 @@ { 169, 0, 0 }, { 169, 7, 121 }, // kpe -> kpe_Latn_LR { 225, 0, 0 }, { 225, 7, 0 }, // kr -> kr_Latn { 62, 0, 0 }, { 62, 1, 100 }, // ks -> ks_Arab_IN - { 62, 13, 0 }, { 62, 13, 100 }, // ks_Deva -> ks_Deva_IN { 214, 0, 0 }, { 214, 7, 210 }, // ksb -> ksb_Latn_TZ { 243, 0, 0 }, { 243, 7, 37 }, // ksf -> ksf_Latn_CM { 201, 0, 0 }, { 201, 7, 82 }, // ksh -> ksh_Latn_DE @@ -328,7 +326,6 @@ { 347, 0, 0 }, { 347, 117, 18 }, // mro -> mro_Mroo_BD { 76, 0, 0 }, { 76, 7, 130 }, // ms -> ms_Latn_MY { 76, 0, 46 }, { 76, 1, 46 }, // ms_CC -> ms_Arab_CC - { 76, 0, 101 }, { 76, 7, 101 }, // ms_ID -> ms_Latn_ID { 78, 0, 0 }, { 78, 7, 133 }, // mt -> mt_Latn_MT { 245, 0, 0 }, { 245, 7, 37 }, // mua -> mua_Latn_CM { 368, 0, 0 }, { 368, 7, 225 }, // mus -> mus_Latn_US @@ -510,7 +507,6 @@ { 25, 0, 97 }, { 25, 6, 97 }, // zh_HK -> zh_Hant_HK { 25, 0, 101 }, { 25, 6, 101 }, // zh_ID -> zh_Hant_ID { 25, 0, 126 }, { 25, 6, 126 }, // zh_MO -> zh_Hant_MO - { 25, 0, 130 }, { 25, 6, 130 }, // zh_MY -> zh_Hant_MY { 25, 0, 166 }, { 25, 6, 166 }, // zh_PA -> zh_Hant_PA { 25, 0, 77 }, { 25, 6, 77 }, // zh_PF -> zh_Hant_PF { 25, 0, 170 }, { 25, 6, 170 }, // zh_PH -> zh_Hant_PH @@ -583,7 +579,7 @@ { 0, 0, 67 }, { 122, 14, 67 }, // und_ER -> ti_Ethi_ER { 0, 0, 197 }, { 111, 7, 197 }, // und_ES -> es_Latn_ES { 0, 0, 69 }, { 7, 14, 69 }, // und_ET -> am_Ethi_ET - { 0, 0, 258 }, { 31, 7, 224 }, // und_EU -> en_Latn_GB + { 0, 0, 258 }, { 31, 7, 104 }, // und_EU -> en_Latn_IE { 0, 0, 73 }, { 36, 7, 73 }, // und_FI -> fi_Latn_FI { 0, 0, 71 }, { 34, 7, 71 }, // und_FO -> fo_Latn_FO { 0, 0, 74 }, { 37, 7, 74 }, // und_FR -> fr_Latn_FR @@ -760,7 +756,7 @@ { 0, 2, 0 }, { 96, 2, 178 }, // und_Cyrl -> ru_Cyrl_RU { 0, 2, 2 }, { 74, 2, 2 }, // und_Cyrl_AL -> mk_Cyrl_AL { 0, 2, 27 }, { 100, 2, 27 }, // und_Cyrl_BA -> sr_Cyrl_BA - { 0, 2, 81 }, { 2, 2, 81 }, // und_Cyrl_GE -> ab_Cyrl_GE + { 0, 2, 81 }, { 101, 2, 81 }, // und_Cyrl_GE -> os_Cyrl_GE { 0, 2, 85 }, { 74, 2, 85 }, // und_Cyrl_GR -> mk_Cyrl_GR { 0, 2, 141 }, { 129, 2, 141 }, // und_Cyrl_MD -> uk_Cyrl_MD { 0, 2, 177 }, { 20, 2, 177 }, // und_Cyrl_RO -> bg_Cyrl_RO @@ -976,157 +972,157 @@ 279, // Kurdish 280, // Rundi 281, // Lao - 0, // Latin - 282, // Latvian - 283, // Lingala - 287, // Lithuanian - 288, // Macedonian - 289, // Malagasy - 290, // Malay - 295, // Malayalam - 296, // Maltese - 297, // Maori - 298, // Marathi + 282, // Latin + 283, // Latvian + 284, // Lingala + 288, // Lithuanian + 289, // Macedonian + 290, // Malagasy + 291, // Malay + 296, // Malayalam + 297, // Maltese + 298, // Maori + 299, // Marathi 0, // Marshallese - 299, // Mongolian + 300, // Mongolian 0, // Nauru - 301, // Nepali - 303, // Norwegian Bokmal - 305, // Occitan - 306, // Oriya - 307, // Pashto - 309, // Persian - 311, // Polish - 312, // Portuguese - 324, // Punjabi - 326, // Quechua - 329, // Romansh - 330, // Romanian - 332, // Russian + 302, // Nepali + 304, // Norwegian Bokmal + 306, // Occitan + 307, // Oriya + 308, // Pashto + 310, // Persian + 312, // Polish + 313, // Portuguese + 325, // Punjabi + 327, // Quechua + 330, // Romansh + 331, // Romanian + 333, // Russian 0, // Samoan - 338, // Sango - 339, // Sanskrit - 340, // Serbian - 348, // Ossetic - 350, // Southern Sotho - 351, // Tswana - 352, // Shona - 353, // Sindhi - 355, // Sinhala - 356, // Swati - 357, // Slovak - 358, // Slovenian - 359, // Somali - 363, // Spanish - 391, // Sundanese - 392, // Swahili - 396, // Swedish - 399, // Sardinian - 400, // Tajik - 401, // Tamil - 405, // Tatar - 406, // Telugu - 407, // Thai - 408, // Tibetan - 410, // Tigrinya - 412, // Tongan - 413, // Tsonga - 414, // Turkish - 416, // Turkmen + 339, // Sango + 340, // Sanskrit + 341, // Serbian + 349, // Ossetic + 351, // Southern Sotho + 352, // Tswana + 353, // Shona + 354, // Sindhi + 356, // Sinhala + 357, // Swati + 358, // Slovak + 359, // Slovenian + 360, // Somali + 364, // Spanish + 392, // Sundanese + 393, // Swahili + 397, // Swedish + 400, // Sardinian + 401, // Tajik + 402, // Tamil + 406, // Tatar + 407, // Telugu + 408, // Thai + 409, // Tibetan + 411, // Tigrinya + 413, // Tongan + 414, // Tsonga + 415, // Turkish + 417, // Turkmen 0, // Tahitian - 417, // Uighur - 418, // Ukrainian - 419, // Urdu - 421, // Uzbek - 424, // Vietnamese - 425, // Volapuk - 426, // Welsh - 427, // Wolof - 428, // Xhosa - 429, // Yiddish - 430, // Yoruba + 418, // Uighur + 419, // Ukrainian + 420, // Urdu + 422, // Uzbek + 425, // Vietnamese + 426, // Volapuk + 427, // Welsh + 428, // Wolof + 429, // Xhosa + 430, // Yiddish + 431, // Yoruba 0, // Zhuang - 432, // Zulu - 433, // Norwegian Nynorsk - 434, // Bosnian - 436, // Divehi - 437, // Manx - 438, // Cornish - 439, // Akan - 440, // Konkani - 441, // Ga - 442, // Igbo - 443, // Kamba - 444, // Syriac - 445, // Blin - 446, // Geez + 433, // Zulu + 434, // Norwegian Nynorsk + 435, // Bosnian + 437, // Divehi + 438, // Manx + 439, // Cornish + 440, // Akan + 441, // Konkani + 442, // Ga + 443, // Igbo + 444, // Kamba + 445, // Syriac + 446, // Blin + 447, // Geez 0, // Koro - 447, // Sidamo - 448, // Atsam - 449, // Tigre - 450, // Jju - 451, // Friulian - 452, // Venda - 453, // Ewe - 455, // Walamo - 456, // Hawaiian - 457, // Tyap - 458, // Nyanja - 459, // Filipino - 460, // Swiss German - 463, // Sichuan Yi - 464, // Kpelle - 465, // Low German - 467, // South Ndebele - 468, // Northern Sotho - 469, // Northern Sami - 472, // Taroko - 473, // Gusii - 474, // Taita - 475, // Fulah - 487, // Kikuyu - 488, // Samburu - 489, // Sena - 490, // North Ndebele - 491, // Rombo - 492, // Tachelhit - 494, // Kabyle - 495, // Nyankole - 496, // Bena - 497, // Vunjo - 498, // Bambara - 500, // Embu - 501, // Cherokee - 502, // Morisyen - 503, // Makonde - 504, // Langi - 505, // Ganda - 506, // Bemba - 507, // Kabuverdianu - 508, // Meru - 509, // Kalenjin - 510, // Nama - 511, // Machame - 512, // Colognian - 513, // Masai - 515, // Soga - 516, // Luyia - 517, // Asu - 518, // Teso - 520, // Saho - 521, // Koyra Chiini - 522, // Rwa - 523, // Luo - 524, // Chiga - 525, // Central Morocco Tamazight - 526, // Koyraboro Senni - 527, // Shambala - 528, // Bodo + 448, // Sidamo + 449, // Atsam + 450, // Tigre + 451, // Jju + 452, // Friulian + 453, // Venda + 454, // Ewe + 456, // Walamo + 457, // Hawaiian + 458, // Tyap + 459, // Nyanja + 460, // Filipino + 461, // Swiss German + 464, // Sichuan Yi + 465, // Kpelle + 466, // Low German + 468, // South Ndebele + 469, // Northern Sotho + 470, // Northern Sami + 473, // Taroko + 474, // Gusii + 475, // Taita + 476, // Fulah + 488, // Kikuyu + 489, // Samburu + 490, // Sena + 491, // North Ndebele + 492, // Rombo + 493, // Tachelhit + 495, // Kabyle + 496, // Nyankole + 497, // Bena + 498, // Vunjo + 499, // Bambara + 501, // Embu + 502, // Cherokee + 503, // Morisyen + 504, // Makonde + 505, // Langi + 506, // Ganda + 507, // Bemba + 508, // Kabuverdianu + 509, // Meru + 510, // Kalenjin + 511, // Nama + 512, // Machame + 513, // Colognian + 514, // Masai + 516, // Soga + 517, // Luyia + 518, // Asu + 519, // Teso + 521, // Saho + 522, // Koyra Chiini + 523, // Rwa + 524, // Luo + 525, // Chiga + 526, // Central Morocco Tamazight + 527, // Koyraboro Senni + 528, // Shambala + 529, // Bodo 0, // Avaric 0, // Chamorro - 529, // Chechen - 530, // Church - 531, // Chuvash + 530, // Chechen + 531, // Church + 532, // Chuvash 0, // Cree 0, // Haitian 0, // Herero @@ -1136,38 +1132,38 @@ 0, // Kongo 0, // Kwanyama 0, // Limburgish - 532, // Luba Katanga - 533, // Luxembourgish - 0, // Navaho + 533, // Luba Katanga + 534, // Luxembourgish + 535, // Navaho 0, // Ndonga 0, // Ojibwa 0, // Pali - 534, // Walloon - 535, // Aghem - 536, // Basaa - 537, // Zarma - 538, // Duala - 539, // Jola Fonyi - 540, // Ewondo - 541, // Bafia - 542, // Makhuwa Meetto - 543, // Mundang - 544, // Kwasio - 545, // Nuer - 546, // Sakha - 547, // Sangu + 536, // Walloon + 537, // Aghem + 538, // Basaa + 539, // Zarma + 540, // Duala + 541, // Jola Fonyi + 542, // Ewondo + 543, // Bafia + 544, // Makhuwa Meetto + 545, // Mundang + 546, // Kwasio + 547, // Nuer + 548, // Sakha + 549, // Sangu 0, // Congo Swahili - 548, // Tasawaq - 549, // Vai - 551, // Walser - 552, // Yangben + 550, // Tasawaq + 551, // Vai + 553, // Walser + 554, // Yangben 0, // Avestan - 553, // Asturian - 554, // Ngomba - 555, // Kako - 556, // Meta - 557, // Ngiemboon - 558, // Aragonese + 555, // Asturian + 556, // Ngomba + 557, // Kako + 558, // Meta + 559, // Ngiemboon + 560, // Aragonese 0, // Akkadian 0, // Ancient Egyptian 0, // Ancient Greek @@ -1181,7 +1177,7 @@ 0, // Chakma 0, // Classical Mandaic 0, // Coptic - 0, // Dogri + 561, // Dogri 0, // Eastern Cham 0, // Eastern Kayah 0, // Etruscan @@ -1196,7 +1192,7 @@ 0, // Lycian 0, // Lydian 0, // Mandingo - 559, // Manipuri + 562, // Manipuri 0, // Meroitic 0, // Northern Thai 0, // Old Irish @@ -1210,31 +1206,31 @@ 0, // Rejang 0, // Sabaean 0, // Samaritan - 561, // Santali + 564, // Santali 0, // Saurashtra 0, // Sora 0, // Sylheti 0, // Tagbanwa - 563, // Tai Dam + 566, // Tai Dam 0, // Tai Nua 0, // Ugaritic - 564, // Akoose - 565, // Lakota - 566, // Standard Moroccan Tamazight - 567, // Mapuche - 568, // Central Kurdish - 570, // Lower Sorbian - 571, // Upper Sorbian - 572, // Kenyang - 573, // Mohawk - 574, // Nko - 575, // Prussian - 576, // Kiche - 577, // Southern Sami - 578, // Lule Sami - 579, // Inari Sami - 580, // Skolt Sami - 581, // Warlpiri + 567, // Akoose + 568, // Lakota + 569, // Standard Moroccan Tamazight + 570, // Mapuche + 571, // Central Kurdish + 573, // Lower Sorbian + 574, // Upper Sorbian + 575, // Kenyang + 576, // Mohawk + 577, // Nko + 578, // Prussian + 579, // Kiche + 580, // Southern Sami + 581, // Lule Sami + 582, // Inari Sami + 583, // Skolt Sami + 584, // Warlpiri 0, // Manichaean Middle Persian 0, // Mende 0, // Ancient North Arabian @@ -1245,17 +1241,17 @@ 0, // Bassa 0, // Mono 0, // Tedim Chin - 582, // Maithili + 585, // Maithili 0, // Ahom 0, // American Sign Language 0, // Ardhamagadhi Prakrit 0, // Bhojpuri 0, // Hieroglyphic Luwian 0, // Literary Chinese - 583, // Mazanderani + 586, // Mazanderani 0, // Mru 0, // Newari - 584, // Northern Luri + 587, // Northern Luri 0, // Palauan 0, // Papiamento 0, // Saraiki @@ -1263,20 +1259,20 @@ 0, // Tok Pisin 0, // Tuvalu 0, // Uncoded Languages - 586, // Cantonese - 588, // Osage + 589, // Cantonese + 591, // Osage 0, // Tangut - 589, // Ido - 590, // Lojban - 591, // Sicilian - 592, // Southern Kurdish - 593, // Western Balochi - 594, // Cebuano - 595, // Erzya - 596, // Chickasaw - 597, // Muscogee - 598, // Silesian - 599, // Nigerian Pidgin + 592, // Ido + 593, // Lojban + 594, // Sicilian + 595, // Southern Kurdish + 596, // Western Balochi + 597, // Cebuano + 598, // Erzya + 599, // Chickasaw + 600, // Muscogee + 601, // Silesian + 602, // Nigerian Pidgin 0 // trailing 0 }; @@ -1331,401 +1327,402 @@ { 15, 11, 100, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 85,9 , 85,9 , 269,6 , 192,18 , 18,7 , 25,12 , 1107,37 , 1144,58 , 1202,18 , 1107,37 , 1144,58 , 1202,18 , 0,2 , 0,2 , 158,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 2814,43 , 0,4 , 31,6 , 435,5 , 448,4 , 2, 1, 7, 7, 7 }, // Bengali/Bengali/India { 16, 31, 25, 46, 44, 59, 37, 3872, 45, 43, 101, 8220, 8221, 8216, 8217, 94,9 , 94,9 , 94,9 , 94,9 , 53,10 , 275,30 , 99,22 , 121,27 , 1220,34 , 1254,79 , 1333,27 , 1220,34 , 1254,79 , 1333,27 , 33,5 , 31,6 , 45,4 , 5,17 , 22,23 , {66,84,78}, 125,3 , 2857,15 , 4,4 , 4,0 , 452,6 , 458,5 , 2, 1, 7, 6, 7 }, // Dzongkha/Tibetan/Bhutan { 19, 7, 74, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 103,8 , 103,8 , 119,10 , 97,16 , 37,5 , 8,10 , 1360,33 , 1393,43 , 1436,18 , 1360,33 , 1393,43 , 1436,18 , 38,4 , 37,4 , 210,7 , 217,17 , 234,23 , {69,85,82}, 14,1 , 2872,36 , 19,5 , 4,0 , 463,9 , 472,5 , 2, 1, 1, 6, 7 }, // Breton/Latin/France - { 20, 2, 33, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 305,12 , 317,22 , 55,4 , 59,9 , 1454,21 , 1475,55 , 1530,14 , 1454,21 , 1475,55 , 1530,14 , 42,6 , 41,6 , 257,7 , 5,17 , 22,23 , {66,71,78}, 128,3 , 2908,47 , 19,5 , 24,7 , 477,9 , 486,8 , 2, 1, 1, 6, 7 }, // Bulgarian/Cyrillic/Bulgaria - { 21, 25, 147, 46, 44, 4170, 37, 4160, 45, 43, 101, 8220, 8221, 8216, 8217, 118,5 , 118,5 , 123,10 , 123,10 , 339,8 , 347,18 , 148,6 , 154,10 , 1544,54 , 1544,54 , 1598,14 , 1544,54 , 1544,54 , 1598,14 , 48,5 , 47,3 , 264,5 , 5,17 , 22,23 , {77,77,75}, 131,1 , 2955,29 , 8,5 , 4,0 , 494,6 , 494,6 , 0, 0, 7, 6, 7 }, // Burmese/Myanmar/Myanmar - { 22, 2, 20, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 133,7 , 133,7 , 365,7 , 317,22 , 37,5 , 164,11 , 1612,21 , 1633,56 , 1689,14 , 1612,21 , 1633,56 , 1689,14 , 0,2 , 0,2 , 269,5 , 274,17 , 22,23 , {66,89,78}, 0,2 , 2984,89 , 19,5 , 4,0 , 500,10 , 510,8 , 2, 0, 1, 6, 7 }, // Belarusian/Cyrillic/Belarus - { 23, 20, 36, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 140,9 , 149,9 , 269,6 , 97,16 , 18,7 , 25,12 , 1703,40 , 1743,46 , 1789,14 , 1703,40 , 1803,47 , 1789,14 , 0,2 , 0,2 , 291,2 , 5,17 , 22,23 , {75,72,82}, 132,1 , 3073,29 , 0,4 , 31,6 , 518,5 , 523,7 , 2, 1, 7, 6, 7 }, // Khmer/Khmer/Cambodia - { 24, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 158,7 , 158,7 , 269,6 , 372,22 , 55,4 , 59,9 , 1850,28 , 1878,60 , 1938,21 , 1850,28 , 1878,60 , 1938,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 530,6 , 536,7 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Spain - { 24, 7, 5, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 158,7 , 158,7 , 269,6 , 372,22 , 55,4 , 59,9 , 1850,28 , 1878,60 , 1938,21 , 1850,28 , 1878,60 , 1938,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 530,6 , 543,7 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Andorra - { 24, 7, 74, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 158,7 , 158,7 , 269,6 , 372,22 , 55,4 , 59,9 , 1850,28 , 1878,60 , 1938,21 , 1850,28 , 1878,60 , 1938,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 530,6 , 550,6 , 2, 1, 1, 6, 7 }, // Catalan/Latin/France - { 24, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 158,7 , 158,7 , 269,6 , 372,22 , 55,4 , 59,9 , 1850,28 , 1878,60 , 1938,21 , 1850,28 , 1878,60 , 1938,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 530,6 , 556,6 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Italy - { 25, 5, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 165,5 , 165,5 , 170,5 , 170,5 , 394,8 , 402,13 , 175,6 , 181,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 293,2 , 295,21 , 22,23 , {67,78,89}, 133,1 , 3122,13 , 4,4 , 13,6 , 562,4 , 566,2 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/China - { 25, 5, 97, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 165,5 , 165,5 , 170,5 , 170,5 , 269,6 , 402,13 , 175,6 , 181,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 293,2 , 295,21 , 22,23 , {72,75,68}, 134,3 , 3135,11 , 4,4 , 13,6 , 562,4 , 568,9 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Hong Kong - { 25, 5, 126, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 165,5 , 165,5 , 170,5 , 170,5 , 269,6 , 402,13 , 175,6 , 181,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 293,2 , 295,21 , 22,23 , {77,79,80}, 137,4 , 3146,13 , 4,4 , 13,6 , 562,4 , 577,9 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Macau - { 25, 5, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 165,5 , 165,5 , 170,5 , 170,5 , 27,8 , 402,13 , 175,6 , 181,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 293,2 , 295,21 , 22,23 , {83,71,68}, 6,1 , 3159,15 , 4,4 , 13,6 , 562,4 , 586,3 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Singapore - { 25, 6, 97, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 165,5 , 165,5 , 175,5 , 175,5 , 415,8 , 402,13 , 175,6 , 192,13 , 2022,21 , 1980,28 , 2008,14 , 2022,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 316,3 , 5,17 , 22,23 , {72,75,68}, 134,3 , 3135,11 , 4,4 , 13,6 , 589,4 , 593,9 , 2, 1, 7, 6, 7 }, // Chinese/Traditional Han/Hong Kong - { 25, 6, 126, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 165,5 , 165,5 , 175,5 , 175,5 , 415,8 , 402,13 , 175,6 , 192,13 , 2022,21 , 1980,28 , 2008,14 , 2022,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 316,3 , 5,17 , 22,23 , {77,79,80}, 137,4 , 3174,13 , 4,4 , 13,6 , 589,4 , 602,9 , 2, 1, 7, 6, 7 }, // Chinese/Traditional Han/Macau - { 25, 6, 208, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 165,5 , 165,5 , 170,5 , 170,5 , 394,8 , 423,14 , 175,6 , 192,13 , 2022,21 , 1980,28 , 2008,14 , 2022,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 45,4 , 5,17 , 22,23 , {84,87,68}, 6,1 , 3187,13 , 4,4 , 13,6 , 589,4 , 611,2 , 2, 0, 7, 6, 7 }, // Chinese/Traditional Han/Taiwan + { 20, 2, 33, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 305,12 , 317,22 , 148,9 , 157,14 , 1454,21 , 1475,55 , 1530,14 , 1454,21 , 1475,55 , 1530,14 , 42,6 , 41,6 , 257,7 , 5,17 , 22,23 , {66,71,78}, 128,3 , 2908,47 , 19,5 , 24,7 , 477,9 , 486,8 , 2, 1, 1, 6, 7 }, // Bulgarian/Cyrillic/Bulgaria + { 21, 25, 147, 46, 44, 4170, 37, 4160, 45, 43, 101, 8220, 8221, 8216, 8217, 118,6 , 118,6 , 124,10 , 124,10 , 339,8 , 347,18 , 171,6 , 177,10 , 1544,54 , 1544,54 , 1598,14 , 1544,54 , 1544,54 , 1598,14 , 48,5 , 47,3 , 264,5 , 5,17 , 22,23 , {77,77,75}, 131,1 , 2955,29 , 8,5 , 4,0 , 494,6 , 494,6 , 0, 0, 7, 6, 7 }, // Burmese/Myanmar/Myanmar + { 22, 2, 20, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 134,7 , 134,7 , 365,7 , 317,22 , 37,5 , 187,11 , 1612,21 , 1633,56 , 1689,14 , 1612,21 , 1633,56 , 1689,14 , 0,2 , 0,2 , 269,5 , 274,17 , 22,23 , {66,89,78}, 0,2 , 2984,89 , 19,5 , 4,0 , 500,10 , 510,8 , 2, 0, 1, 6, 7 }, // Belarusian/Cyrillic/Belarus + { 23, 20, 36, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 141,9 , 150,9 , 269,6 , 97,16 , 18,7 , 25,12 , 1703,40 , 1743,46 , 1789,14 , 1703,40 , 1803,47 , 1789,14 , 0,2 , 0,2 , 291,2 , 5,17 , 22,23 , {75,72,82}, 132,1 , 3073,29 , 0,4 , 31,6 , 518,5 , 523,7 , 2, 1, 7, 6, 7 }, // Khmer/Khmer/Cambodia + { 24, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 159,7 , 159,7 , 269,6 , 372,22 , 55,4 , 198,11 , 1850,28 , 1878,60 , 1938,21 , 1850,28 , 1878,60 , 1938,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 530,6 , 536,7 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Spain + { 24, 7, 5, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 159,7 , 159,7 , 269,6 , 372,22 , 55,4 , 198,11 , 1850,28 , 1878,60 , 1938,21 , 1850,28 , 1878,60 , 1938,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 530,6 , 543,7 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Andorra + { 24, 7, 74, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 159,7 , 159,7 , 269,6 , 372,22 , 55,4 , 198,11 , 1850,28 , 1878,60 , 1938,21 , 1850,28 , 1878,60 , 1938,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 530,6 , 550,6 , 2, 1, 1, 6, 7 }, // Catalan/Latin/France + { 24, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 159,7 , 159,7 , 269,6 , 372,22 , 55,4 , 198,11 , 1850,28 , 1878,60 , 1938,21 , 1850,28 , 1878,60 , 1938,21 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 530,6 , 556,6 , 2, 1, 1, 6, 7 }, // Catalan/Latin/Italy + { 25, 5, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 166,5 , 166,5 , 171,5 , 171,5 , 394,8 , 402,13 , 209,6 , 215,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 293,2 , 5,17 , 22,23 , {67,78,89}, 133,1 , 3122,13 , 4,4 , 13,6 , 562,4 , 566,2 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/China + { 25, 5, 97, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 166,5 , 166,5 , 171,5 , 171,5 , 269,6 , 402,13 , 209,6 , 215,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 293,2 , 5,17 , 22,23 , {72,75,68}, 134,3 , 3135,11 , 4,4 , 13,6 , 562,4 , 568,9 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Hong Kong + { 25, 5, 126, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 166,5 , 166,5 , 171,5 , 171,5 , 269,6 , 402,13 , 209,6 , 215,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 293,2 , 5,17 , 22,23 , {77,79,80}, 137,4 , 3146,13 , 4,4 , 13,6 , 562,4 , 577,9 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Macau + { 25, 5, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 166,5 , 166,5 , 171,5 , 171,5 , 27,8 , 402,13 , 209,6 , 215,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 293,2 , 5,17 , 22,23 , {83,71,68}, 6,1 , 3159,15 , 4,4 , 13,6 , 562,4 , 586,3 , 2, 1, 7, 6, 7 }, // Chinese/Simplified Han/Singapore + { 25, 6, 97, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 166,5 , 166,5 , 176,5 , 176,5 , 415,8 , 402,13 , 209,6 , 226,13 , 2022,21 , 1980,28 , 2008,14 , 2022,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 295,3 , 5,17 , 22,23 , {72,75,68}, 134,3 , 3135,11 , 4,4 , 13,6 , 589,4 , 593,9 , 2, 1, 7, 6, 7 }, // Chinese/Traditional Han/Hong Kong + { 25, 6, 126, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 166,5 , 166,5 , 176,5 , 176,5 , 415,8 , 402,13 , 209,6 , 226,13 , 2022,21 , 1980,28 , 2008,14 , 2022,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 295,3 , 5,17 , 22,23 , {77,79,80}, 137,4 , 3174,13 , 4,4 , 13,6 , 589,4 , 602,9 , 2, 1, 7, 6, 7 }, // Chinese/Traditional Han/Macau + { 25, 6, 208, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 166,5 , 166,5 , 171,5 , 171,5 , 394,8 , 423,14 , 209,6 , 226,13 , 2022,21 , 1980,28 , 2008,14 , 2022,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 45,4 , 5,17 , 22,23 , {84,87,68}, 6,1 , 3187,13 , 4,4 , 13,6 , 589,4 , 611,2 , 2, 0, 7, 6, 7 }, // Chinese/Traditional Han/Taiwan { 26, 7, 74, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Corsican/Latin/France - { 27, 7, 54, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 158,7 , 158,7 , 437,13 , 450,19 , 37,5 , 87,12 , 2043,28 , 2071,58 , 2129,14 , 2043,28 , 2071,58 , 2143,14 , 0,2 , 0,2 , 319,7 , 5,17 , 22,23 , {72,82,75}, 141,3 , 3200,60 , 19,5 , 4,0 , 613,8 , 621,8 , 2, 1, 1, 6, 7 }, // Croatian/Latin/Croatia - { 27, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 158,7 , 158,7 , 469,9 , 450,19 , 37,5 , 87,12 , 2043,28 , 2071,58 , 2143,14 , 2043,28 , 2071,58 , 2143,14 , 0,2 , 0,2 , 319,7 , 5,17 , 22,23 , {66,65,77}, 144,2 , 3260,85 , 19,5 , 4,0 , 613,8 , 629,19 , 2, 1, 1, 6, 7 }, // Croatian/Latin/Bosnia And Herzegowina - { 28, 7, 57, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 180,7 , 180,7 , 156,8 , 478,17 , 55,4 , 59,9 , 2157,21 , 2178,49 , 2227,14 , 2157,21 , 2178,49 , 2227,14 , 60,4 , 57,4 , 326,5 , 5,17 , 22,23 , {67,90,75}, 146,2 , 3345,68 , 19,5 , 4,0 , 648,7 , 655,5 , 2, 0, 1, 6, 7 }, // Czech/Latin/Czech Republic - { 29, 7, 58, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 187,8 , 187,8 , 495,10 , 505,23 , 205,5 , 210,10 , 2241,28 , 2269,51 , 2320,14 , 2334,35 , 2269,51 , 2320,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {68,75,75}, 148,3 , 3413,42 , 19,5 , 4,0 , 660,5 , 665,7 , 2, 0, 1, 6, 7 }, // Danish/Latin/Denmark - { 29, 7, 86, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 187,8 , 187,8 , 495,10 , 505,23 , 205,5 , 210,10 , 2241,28 , 2269,51 , 2320,14 , 2334,35 , 2269,51 , 2320,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {68,75,75}, 148,3 , 3413,42 , 19,5 , 4,0 , 660,5 , 672,8 , 2, 0, 1, 6, 7 }, // Danish/Latin/Greenland - { 30, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3455,19 , 8,5 , 37,7 , 680,10 , 690,9 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Netherlands - { 30, 7, 12, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {65,87,71}, 151,4 , 3474,55 , 8,5 , 37,7 , 680,10 , 699,5 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Aruba - { 30, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 538,9 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3455,19 , 8,5 , 37,7 , 680,10 , 704,6 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Belgium - { 30, 7, 152, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {65,78,71}, 155,4 , 3529,97 , 8,5 , 37,7 , 680,10 , 710,7 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Cura Sao - { 30, 7, 202, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {83,82,68}, 6,1 , 3626,58 , 8,5 , 37,7 , 680,10 , 717,8 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Suriname - { 30, 7, 255, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3684,61 , 8,5 , 37,7 , 680,10 , 725,19 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Bonaire - { 30, 7, 256, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {65,78,71}, 155,4 , 3529,97 , 8,5 , 37,7 , 680,10 , 744,12 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Sint Maarten - { 31, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 13,6 , 756,16 , 772,13 , 2, 1, 7, 6, 7 }, // English/Latin/United States + { 27, 7, 54, 44, 46, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 437,13 , 450,19 , 37,5 , 87,12 , 2043,28 , 2071,58 , 2129,14 , 2043,28 , 2071,58 , 2143,14 , 0,2 , 0,2 , 298,7 , 5,17 , 22,23 , {72,82,75}, 141,3 , 3200,60 , 19,5 , 4,0 , 613,8 , 621,8 , 2, 1, 1, 6, 7 }, // Croatian/Latin/Croatia + { 27, 7, 27, 44, 46, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 469,9 , 450,19 , 37,5 , 87,12 , 2043,28 , 2071,58 , 2143,14 , 2043,28 , 2071,58 , 2143,14 , 0,2 , 0,2 , 298,7 , 5,17 , 22,23 , {66,65,77}, 144,2 , 3260,85 , 19,5 , 4,0 , 613,8 , 629,19 , 2, 1, 1, 6, 7 }, // Croatian/Latin/Bosnia And Herzegowina + { 28, 7, 57, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 181,7 , 181,7 , 156,8 , 478,17 , 55,4 , 59,9 , 2157,21 , 2178,49 , 2227,14 , 2157,21 , 2178,49 , 2227,14 , 60,4 , 57,4 , 305,5 , 5,17 , 22,23 , {67,90,75}, 146,2 , 3345,68 , 19,5 , 4,0 , 648,7 , 655,5 , 2, 0, 1, 6, 7 }, // Czech/Latin/Czech Republic + { 29, 7, 58, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 188,8 , 188,8 , 495,10 , 505,23 , 239,5 , 244,10 , 2241,28 , 2269,51 , 2320,14 , 2334,35 , 2269,51 , 2320,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {68,75,75}, 148,3 , 3413,42 , 19,5 , 4,0 , 660,5 , 665,7 , 2, 0, 1, 6, 7 }, // Danish/Latin/Denmark + { 29, 7, 86, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 188,8 , 188,8 , 495,10 , 505,23 , 239,5 , 244,10 , 2241,28 , 2269,51 , 2320,14 , 2334,35 , 2269,51 , 2320,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {68,75,75}, 148,3 , 3413,42 , 19,5 , 4,0 , 660,5 , 672,8 , 2, 0, 1, 6, 7 }, // Danish/Latin/Greenland + { 30, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8216, 8217, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3455,19 , 8,5 , 37,7 , 680,10 , 690,9 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Netherlands + { 30, 7, 12, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8216, 8217, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {65,87,71}, 151,4 , 3474,55 , 8,5 , 37,7 , 680,10 , 699,5 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Aruba + { 30, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8216, 8217, 0,6 , 0,6 , 6,8 , 6,8 , 538,9 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3455,19 , 8,5 , 37,7 , 680,10 , 704,6 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Belgium + { 30, 7, 152, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8216, 8217, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {65,78,71}, 155,4 , 3529,97 , 8,5 , 37,7 , 680,10 , 710,7 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Cura Sao + { 30, 7, 202, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8216, 8217, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {83,82,68}, 6,1 , 3626,58 , 8,5 , 37,7 , 680,10 , 717,8 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Suriname + { 30, 7, 255, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8216, 8217, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3684,61 , 8,5 , 37,7 , 680,10 , 725,19 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Bonaire + { 30, 7, 256, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8216, 8217, 0,6 , 0,6 , 6,8 , 6,8 , 528,10 , 97,16 , 37,5 , 8,10 , 2369,21 , 2390,59 , 2449,14 , 2369,21 , 2390,59 , 2449,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {65,78,71}, 155,4 , 3529,97 , 8,5 , 37,7 , 680,10 , 744,12 , 2, 1, 1, 6, 7 }, // Dutch/Latin/Sint Maarten + { 31, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 196,10 , 206,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 13,6 , 756,16 , 772,13 , 2, 1, 7, 6, 7 }, // English/Latin/United States { 31, 3, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // English/Deseret/United States - { 31, 7, 4, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 13,6 , 785,7 , 792,14 , 2, 1, 7, 6, 7 }, // English/Latin/American Samoa - { 31, 7, 7, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 13,6 , 785,7 , 806,8 , 2, 1, 1, 6, 7 }, // English/Latin/Anguilla - { 31, 7, 9, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 13,6 , 785,7 , 814,17 , 2, 1, 7, 6, 7 }, // English/Latin/Antigua And Barbuda - { 31, 7, 13, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 269,6 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 2463,25 , 0,28 , 28,57 , 2463,25 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 13,6 , 831,18 , 849,9 , 2, 1, 7, 6, 7 }, // English/Latin/Australia - { 31, 7, 14, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 8,5 , 4,0 , 785,7 , 858,7 , 2, 1, 1, 6, 7 }, // English/Latin/Austria - { 31, 7, 16, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,83,68}, 6,1 , 3930,53 , 4,4 , 13,6 , 785,7 , 865,7 , 2, 1, 7, 6, 7 }, // English/Latin/Bahamas - { 31, 7, 19, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,66,68}, 6,1 , 3983,56 , 4,4 , 13,6 , 785,7 , 872,8 , 2, 1, 1, 6, 7 }, // English/Latin/Barbados - { 31, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 27,8 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 19,5 , 4,0 , 785,7 , 880,7 , 2, 1, 1, 6, 7 }, // English/Latin/Belgium - { 31, 7, 22, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 27,8 , 553,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,90,68}, 6,1 , 4039,47 , 4,4 , 13,6 , 785,7 , 887,6 , 2, 1, 7, 6, 7 }, // English/Latin/Belize - { 31, 7, 24, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,77,68}, 6,1 , 4086,53 , 4,4 , 13,6 , 785,7 , 893,7 , 2, 1, 1, 6, 7 }, // English/Latin/Bermuda - { 31, 7, 28, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 27,8 , 553,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,87,80}, 162,1 , 4139,50 , 4,4 , 13,6 , 785,7 , 900,8 , 2, 1, 7, 6, 7 }, // English/Latin/Botswana - { 31, 7, 31, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 13,6 , 785,7 , 908,30 , 2, 1, 1, 6, 7 }, // English/Latin/British Indian Ocean Territory - { 31, 7, 35, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {66,73,70}, 163,3 , 4189,53 , 4,4 , 13,6 , 785,7 , 938,7 , 0, 0, 1, 6, 7 }, // English/Latin/Burundi - { 31, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,65,70}, 32,4 , 4242,83 , 4,4 , 13,6 , 785,7 , 945,8 , 0, 0, 1, 6, 7 }, // English/Latin/Cameroon - { 31, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 53,10 , 35,18 , 18,7 , 25,12 , 2488,35 , 28,57 , 85,14 , 2488,35 , 28,57 , 85,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {67,65,68}, 6,1 , 4325,53 , 4,4 , 13,6 , 953,16 , 969,6 , 2, 0, 7, 6, 7 }, // English/Latin/Canada - { 31, 7, 40, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {75,89,68}, 6,1 , 4378,71 , 4,4 , 13,6 , 785,7 , 975,14 , 2, 1, 1, 6, 7 }, // English/Latin/Cayman Islands - { 31, 7, 45, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 13,6 , 785,7 , 989,16 , 2, 1, 1, 6, 7 }, // English/Latin/Christmas Island - { 31, 7, 46, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 13,6 , 785,7 , 1005,23 , 2, 1, 1, 6, 7 }, // English/Latin/Cocos Islands - { 31, 7, 51, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4449,62 , 4,4 , 13,6 , 785,7 , 1028,12 , 2, 1, 1, 6, 7 }, // English/Latin/Cook Islands - { 31, 7, 56, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 4,4 , 13,6 , 785,7 , 1040,6 , 2, 1, 1, 6, 7 }, // English/Latin/Cyprus - { 31, 7, 58, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 205,5 , 210,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {68,75,75}, 148,3 , 4511,44 , 19,5 , 4,0 , 785,7 , 1046,7 , 2, 0, 1, 6, 7 }, // English/Latin/Denmark - { 31, 7, 60, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 13,6 , 785,7 , 1053,8 , 2, 1, 7, 6, 7 }, // English/Latin/Dominica - { 31, 7, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,82,78}, 41,3 , 4555,50 , 4,4 , 13,6 , 785,7 , 1061,7 , 2, 1, 1, 6, 7 }, // English/Latin/Eritrea - { 31, 7, 70, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {70,75,80}, 119,1 , 4605,74 , 4,4 , 13,6 , 785,7 , 1068,16 , 2, 1, 1, 6, 7 }, // English/Latin/Falkland Islands - { 31, 7, 72, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {70,74,68}, 6,1 , 4679,47 , 4,4 , 13,6 , 785,7 , 1084,4 , 2, 1, 1, 6, 7 }, // English/Latin/Fiji - { 31, 7, 73, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 220,4 , 224,9 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 19,5 , 4,0 , 785,7 , 1088,7 , 2, 1, 1, 6, 7 }, // English/Latin/Finland - { 31, 7, 75, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,66,80}, 119,1 , 4726,32 , 4,4 , 13,6 , 785,7 , 1095,8 , 2, 1, 1, 6, 7 }, // English/Latin/Guernsey - { 31, 7, 80, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,77,68}, 166,1 , 4758,50 , 4,4 , 13,6 , 785,7 , 1103,6 , 2, 1, 1, 6, 7 }, // English/Latin/Gambia - { 31, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 19,5 , 4,0 , 785,7 , 1109,7 , 2, 1, 1, 6, 7 }, // English/Latin/Germany - { 31, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,72,83}, 167,3 , 4808,47 , 4,4 , 13,6 , 785,7 , 1116,5 , 2, 1, 1, 6, 7 }, // English/Latin/Ghana - { 31, 7, 84, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,73,80}, 119,1 , 4855,53 , 4,4 , 13,6 , 785,7 , 1121,9 , 2, 1, 1, 6, 7 }, // English/Latin/Gibraltar - { 31, 7, 87, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 13,6 , 785,7 , 1130,7 , 2, 1, 1, 6, 7 }, // English/Latin/Grenada - { 31, 7, 89, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 13,6 , 785,7 , 1137,4 , 2, 1, 7, 6, 7 }, // English/Latin/Guam - { 31, 7, 93, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,89,68}, 6,1 , 4908,56 , 4,4 , 13,6 , 785,7 , 1141,6 , 2, 0, 1, 6, 7 }, // English/Latin/Guyana - { 31, 7, 97, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 415,8 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {72,75,68}, 134,3 , 4964,56 , 4,4 , 13,6 , 785,7 , 1147,19 , 2, 1, 7, 6, 7 }, // English/Latin/Hong Kong - { 31, 7, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 27,8 , 192,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {73,78,82}, 121,1 , 5020,44 , 4,4 , 13,6 , 785,7 , 1166,5 , 2, 1, 7, 7, 7 }, // English/Latin/India - { 31, 7, 104, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 97,16 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 4,4 , 13,6 , 785,7 , 1171,7 , 2, 1, 1, 6, 7 }, // English/Latin/Ireland - { 31, 7, 105, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 55,4 , 59,9 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {73,76,83}, 49,1 , 5064,62 , 4,4 , 13,6 , 785,7 , 1178,6 , 2, 1, 7, 5, 6 }, // English/Latin/Israel - { 31, 7, 107, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 269,6 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {74,77,68}, 6,1 , 5126,53 , 4,4 , 13,6 , 785,7 , 1184,7 , 2, 1, 7, 6, 7 }, // English/Latin/Jamaica - { 31, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {75,69,83}, 2,3 , 5179,53 , 4,4 , 13,6 , 785,7 , 1191,5 , 2, 1, 7, 6, 7 }, // English/Latin/Kenya - { 31, 7, 112, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 13,6 , 785,7 , 1196,8 , 2, 1, 1, 6, 7 }, // English/Latin/Kiribati - { 31, 7, 120, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {90,65,82}, 5,1 , 5232,61 , 4,4 , 13,6 , 785,7 , 1204,7 , 2, 1, 1, 6, 7 }, // English/Latin/Lesotho - { 31, 7, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {76,82,68}, 6,1 , 5293,53 , 4,4 , 13,6 , 785,7 , 1211,7 , 2, 1, 1, 6, 7 }, // English/Latin/Liberia - { 31, 7, 126, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,79,80}, 137,4 , 5346,53 , 4,4 , 13,6 , 785,7 , 1218,15 , 2, 1, 7, 6, 7 }, // English/Latin/Macau - { 31, 7, 128, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,71,65}, 170,2 , 5399,54 , 4,4 , 13,6 , 785,7 , 1233,10 , 0, 0, 1, 6, 7 }, // English/Latin/Madagascar - { 31, 7, 129, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,87,75}, 172,2 , 5453,53 , 4,4 , 13,6 , 785,7 , 1243,6 , 2, 1, 1, 6, 7 }, // English/Latin/Malawi - { 31, 7, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,89,82}, 174,2 , 5506,59 , 4,4 , 13,6 , 785,7 , 1249,8 , 2, 1, 1, 6, 7 }, // English/Latin/Malaysia - { 31, 7, 133, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 4,4 , 13,6 , 785,7 , 1257,5 , 2, 1, 7, 6, 7 }, // English/Latin/Malta - { 31, 7, 134, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 13,6 , 785,7 , 1262,16 , 2, 1, 7, 6, 7 }, // English/Latin/Marshall Islands - { 31, 7, 137, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,85,82}, 176,2 , 5565,53 , 4,4 , 13,6 , 785,7 , 1278,9 , 2, 0, 1, 6, 7 }, // English/Latin/Mauritius - { 31, 7, 140, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 13,6 , 785,7 , 1287,10 , 2, 1, 1, 6, 7 }, // English/Latin/Micronesia - { 31, 7, 144, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 13,6 , 785,7 , 1297,10 , 2, 1, 1, 6, 7 }, // English/Latin/Montserrat - { 31, 7, 148, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,65,68}, 6,1 , 5618,53 , 4,4 , 13,6 , 785,7 , 1307,7 , 2, 1, 1, 6, 7 }, // English/Latin/Namibia - { 31, 7, 149, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 13,6 , 785,7 , 1314,5 , 2, 1, 1, 6, 7 }, // English/Latin/Nauru - { 31, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 8,5 , 37,7 , 785,7 , 1319,11 , 2, 1, 1, 6, 7 }, // English/Latin/Netherlands - { 31, 7, 154, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 571,7 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4449,62 , 4,4 , 13,6 , 785,7 , 1330,11 , 2, 1, 1, 6, 7 }, // English/Latin/New Zealand - { 31, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,71,78}, 178,1 , 5671,50 , 4,4 , 13,6 , 785,7 , 1341,7 , 2, 1, 1, 6, 7 }, // English/Latin/Nigeria - { 31, 7, 158, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4449,62 , 4,4 , 13,6 , 785,7 , 1348,4 , 2, 1, 1, 6, 7 }, // English/Latin/Niue - { 31, 7, 159, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 13,6 , 785,7 , 1352,14 , 2, 1, 1, 6, 7 }, // English/Latin/Norfolk Island - { 31, 7, 160, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 13,6 , 785,7 , 1366,24 , 2, 1, 1, 6, 7 }, // English/Latin/Northern Mariana Islands - { 31, 7, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {80,75,82}, 176,2 , 5721,53 , 4,4 , 13,6 , 785,7 , 1390,8 , 2, 0, 7, 6, 7 }, // English/Latin/Pakistan - { 31, 7, 164, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 13,6 , 785,7 , 1398,5 , 2, 1, 1, 6, 7 }, // English/Latin/Palau - { 31, 7, 167, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {80,71,75}, 131,1 , 5774,73 , 4,4 , 13,6 , 785,7 , 1403,16 , 2, 1, 1, 6, 7 }, // English/Latin/Papua New Guinea - { 31, 7, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {80,72,80}, 179,1 , 5847,53 , 4,4 , 13,6 , 785,7 , 1419,11 , 2, 1, 7, 6, 7 }, // English/Latin/Philippines - { 31, 7, 171, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4449,62 , 4,4 , 13,6 , 785,7 , 1430,16 , 2, 1, 1, 6, 7 }, // English/Latin/Pitcairn - { 31, 7, 174, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 13,6 , 785,7 , 1446,11 , 2, 1, 7, 6, 7 }, // English/Latin/Puerto Rico - { 31, 7, 179, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {82,87,70}, 180,2 , 5900,47 , 4,4 , 13,6 , 785,7 , 1457,6 , 0, 0, 1, 6, 7 }, // English/Latin/Rwanda - { 31, 7, 180, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 13,6 , 785,7 , 1463,16 , 2, 1, 1, 6, 7 }, // English/Latin/Saint Kitts And Nevis - { 31, 7, 181, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 13,6 , 785,7 , 1479,8 , 2, 1, 1, 6, 7 }, // English/Latin/Saint Lucia - { 31, 7, 182, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 13,6 , 785,7 , 1487,23 , 2, 1, 1, 6, 7 }, // English/Latin/Saint Vincent And The Grenadines - { 31, 7, 183, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {87,83,84}, 182,3 , 5947,40 , 4,4 , 13,6 , 785,7 , 1510,5 , 2, 1, 7, 6, 7 }, // English/Latin/Samoa - { 31, 7, 188, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,67,82}, 185,2 , 5987,59 , 4,4 , 13,6 , 785,7 , 1515,10 , 2, 1, 1, 6, 7 }, // English/Latin/Seychelles - { 31, 7, 189, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,76,76}, 187,2 , 6046,68 , 4,4 , 13,6 , 785,7 , 1525,12 , 0, 0, 1, 6, 7 }, // English/Latin/Sierra Leone - { 31, 7, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 269,6 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,71,68}, 6,1 , 6114,56 , 4,4 , 13,6 , 785,7 , 1537,9 , 2, 1, 7, 6, 7 }, // English/Latin/Singapore - { 31, 7, 192, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 19,5 , 24,7 , 785,7 , 1546,8 , 2, 1, 1, 6, 7 }, // English/Latin/Slovenia - { 31, 7, 193, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,66,68}, 6,1 , 6170,74 , 4,4 , 13,6 , 785,7 , 1554,15 , 2, 1, 1, 6, 7 }, // English/Latin/Solomon Islands - { 31, 7, 195, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 578,10 , 553,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {90,65,82}, 5,1 , 5232,61 , 4,4 , 13,6 , 785,7 , 1569,12 , 2, 1, 7, 6, 7 }, // English/Latin/South Africa - { 31, 7, 199, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,72,80}, 119,1 , 6244,53 , 4,4 , 13,6 , 785,7 , 1581,9 , 2, 1, 1, 6, 7 }, // English/Latin/Saint Helena - { 31, 7, 201, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,68,71}, 0,0 , 6297,50 , 4,4 , 13,6 , 785,7 , 1590,5 , 2, 1, 6, 5, 6 }, // English/Latin/Sudan - { 31, 7, 204, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,90,76}, 189,1 , 6347,53 , 4,4 , 13,6 , 785,7 , 1595,8 , 2, 1, 1, 6, 7 }, // English/Latin/Swaziland - { 31, 7, 205, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 53,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,69,75}, 190,2 , 6400,47 , 19,5 , 4,0 , 785,7 , 1603,6 , 2, 0, 1, 6, 7 }, // English/Latin/Sweden - { 31, 7, 206, 46, 8217, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {67,72,70}, 0,0 , 6447,41 , 8,5 , 44,5 , 785,7 , 1609,11 , 2, 0, 1, 6, 7 }, // English/Latin/Switzerland - { 31, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {84,90,83}, 192,3 , 6488,62 , 4,4 , 13,6 , 785,7 , 1620,8 , 2, 0, 1, 6, 7 }, // English/Latin/Tanzania - { 31, 7, 213, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4449,62 , 4,4 , 13,6 , 785,7 , 1628,7 , 2, 1, 1, 6, 7 }, // English/Latin/Tokelau - { 31, 7, 214, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {84,79,80}, 195,2 , 6550,49 , 4,4 , 13,6 , 785,7 , 1635,5 , 2, 1, 1, 6, 7 }, // English/Latin/Tonga - { 31, 7, 215, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {84,84,68}, 6,1 , 6599,80 , 4,4 , 13,6 , 785,7 , 1640,17 , 2, 1, 7, 6, 7 }, // English/Latin/Trinidad And Tobago - { 31, 7, 219, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 13,6 , 785,7 , 1657,22 , 2, 1, 1, 6, 7 }, // English/Latin/Turks And Caicos Islands - { 31, 7, 220, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 13,6 , 785,7 , 1679,6 , 2, 1, 1, 6, 7 }, // English/Latin/Tuvalu - { 31, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,71,88}, 197,3 , 6679,56 , 4,4 , 13,6 , 785,7 , 1685,6 , 0, 0, 1, 7, 7 }, // English/Latin/Uganda - { 31, 7, 223, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {65,69,68}, 200,3 , 6735,55 , 4,4 , 13,6 , 785,7 , 1691,20 , 2, 1, 6, 5, 6 }, // English/Latin/United Arab Emirates - { 31, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,66,80}, 119,1 , 6790,47 , 4,4 , 13,6 , 1711,15 , 1726,14 , 2, 1, 1, 6, 7 }, // English/Latin/United Kingdom - { 31, 7, 226, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 13,6 , 785,7 , 1740,21 , 2, 1, 7, 6, 7 }, // English/Latin/United States Minor Outlying Islands - { 31, 7, 229, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {86,85,86}, 203,2 , 6837,44 , 4,4 , 13,6 , 785,7 , 1761,7 , 0, 0, 1, 6, 7 }, // English/Latin/Vanuatu - { 31, 7, 233, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 13,6 , 785,7 , 1768,22 , 2, 1, 1, 6, 7 }, // English/Latin/British Virgin Islands - { 31, 7, 234, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 195,10 , 205,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 13,6 , 785,7 , 1790,19 , 2, 1, 7, 6, 7 }, // English/Latin/United States Virgin Islands - { 31, 7, 239, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {90,77,87}, 131,1 , 6881,50 , 4,4 , 13,6 , 785,7 , 1809,6 , 2, 1, 1, 6, 7 }, // English/Latin/Zambia - { 31, 7, 240, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 415,8 , 553,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 13,6 , 785,7 , 1815,8 , 2, 1, 7, 6, 7 }, // English/Latin/Zimbabwe - { 31, 7, 249, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 13,6 , 785,7 , 1823,12 , 2, 1, 1, 6, 7 }, // English/Latin/Diego Garcia - { 31, 7, 251, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,66,80}, 119,1 , 4726,32 , 4,4 , 13,6 , 785,7 , 1835,11 , 2, 1, 1, 6, 7 }, // English/Latin/Isle Of Man - { 31, 7, 252, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,66,80}, 119,1 , 4726,32 , 4,4 , 13,6 , 785,7 , 1846,6 , 2, 1, 1, 6, 7 }, // English/Latin/Jersey - { 31, 7, 254, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,83,80}, 119,1 , 6931,68 , 4,4 , 13,6 , 785,7 , 1852,11 , 2, 1, 1, 6, 7 }, // English/Latin/South Sudan - { 31, 7, 256, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,78,71}, 155,4 , 6999,95 , 4,4 , 13,6 , 785,7 , 1863,12 , 2, 1, 1, 6, 7 }, // English/Latin/Sint Maarten - { 31, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 4,4 , 13,6 , 785,7 , 1875,5 , 2, 1, 1, 6, 7 }, // English/Latin/World - { 31, 7, 261, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 205,9 , 205,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 19,5 , 4,0 , 785,7 , 1880,6 , 2, 1, 1, 6, 7 }, // English/Latin/Europe - { 32, 7, 260, 44, 160, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 214,9 , 214,9 , 588,8 , 596,26 , 37,5 , 233,25 , 2523,21 , 2544,51 , 2595,14 , 2523,21 , 2544,51 , 2595,14 , 70,3 , 67,3 , 331,6 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 1886,9 , 1895,5 , 2, 1, 1, 6, 7 }, // Esperanto/Latin/World - { 33, 7, 68, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 223,8 , 223,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2609,14 , 2623,63 , 2609,14 , 2609,14 , 2623,63 , 2609,14 , 0,2 , 0,2 , 337,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 7094,20 , 19,5 , 24,7 , 1900,5 , 1905,5 , 2, 1, 1, 6, 7 }, // Estonian/Latin/Estonia - { 34, 7, 71, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 187,8 , 187,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2686,28 , 2714,74 , 2788,14 , 2802,35 , 2714,74 , 2788,14 , 0,2 , 0,2 , 343,3 , 5,17 , 22,23 , {68,75,75}, 190,2 , 7114,43 , 19,5 , 24,7 , 1910,8 , 1918,7 , 2, 0, 1, 6, 7 }, // Faroese/Latin/Faroe Islands - { 34, 7, 58, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 187,8 , 187,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2686,28 , 2714,74 , 2788,14 , 2802,35 , 2714,74 , 2788,14 , 0,2 , 0,2 , 343,3 , 5,17 , 22,23 , {68,75,75}, 148,3 , 7114,43 , 19,5 , 24,7 , 1910,8 , 665,7 , 2, 0, 1, 6, 7 }, // Faroese/Latin/Denmark - { 36, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 223,8 , 223,8 , 640,8 , 478,17 , 220,4 , 224,9 , 2837,21 , 2858,67 , 2925,14 , 2837,21 , 2939,81 , 2925,14 , 73,3 , 70,3 , 346,5 , 351,17 , 368,23 , {69,85,82}, 14,1 , 7157,20 , 19,5 , 4,0 , 1925,5 , 1930,5 , 2, 1, 1, 6, 7 }, // Finnish/Latin/Finland - { 37, 7, 74, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1935,8 , 1943,6 , 2, 1, 1, 6, 7 }, // French/Latin/France - { 37, 7, 3, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {68,90,68}, 205,2 , 7177,51 , 19,5 , 24,7 , 1935,8 , 1949,7 , 2, 1, 6, 5, 6 }, // French/Latin/Algeria - { 37, 7, 21, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 571,7 , 97,16 , 37,5 , 258,23 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1935,8 , 1956,8 , 2, 1, 1, 6, 7 }, // French/Latin/Belgium - { 37, 7, 23, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1935,8 , 1964,5 , 0, 0, 1, 6, 7 }, // French/Latin/Benin - { 37, 7, 34, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1935,8 , 1969,12 , 0, 0, 1, 6, 7 }, // French/Latin/Burkina Faso - { 37, 7, 35, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {66,73,70}, 163,3 , 7287,53 , 19,5 , 24,7 , 1935,8 , 938,7 , 0, 0, 1, 6, 7 }, // French/Latin/Burundi - { 37, 7, 37, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 76,5 , 73,4 , 391,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1935,8 , 1981,8 , 0, 0, 1, 6, 7 }, // French/Latin/Cameroon - { 37, 7, 38, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8221, 8220, 0,6 , 0,6 , 231,8 , 231,8 , 53,10 , 97,16 , 281,9 , 290,24 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 64,4 , 61,4 , 391,6 , 217,17 , 234,23 , {67,65,68}, 6,1 , 7396,54 , 19,5 , 24,7 , 1989,17 , 969,6 , 2, 0, 7, 6, 7 }, // French/Latin/Canada - { 37, 7, 41, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1935,8 , 2006,25 , 0, 0, 1, 6, 7 }, // French/Latin/Central African Republic - { 37, 7, 42, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1935,8 , 2031,5 , 0, 0, 1, 6, 7 }, // French/Latin/Chad - { 37, 7, 48, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {75,77,70}, 36,2 , 7450,51 , 19,5 , 24,7 , 1935,8 , 2036,7 , 0, 0, 1, 6, 7 }, // French/Latin/Comoros - { 37, 7, 49, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {67,68,70}, 210,2 , 7501,53 , 19,5 , 24,7 , 1935,8 , 2043,14 , 2, 1, 1, 6, 7 }, // French/Latin/Congo Kinshasa - { 37, 7, 50, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1935,8 , 2057,17 , 0, 0, 1, 6, 7 }, // French/Latin/Congo Brazzaville - { 37, 7, 53, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1935,8 , 2074,13 , 0, 0, 1, 6, 7 }, // French/Latin/Ivory Coast - { 37, 7, 59, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {68,74,70}, 38,3 , 7554,57 , 19,5 , 24,7 , 1935,8 , 2087,8 , 0, 0, 6, 6, 7 }, // French/Latin/Djibouti - { 37, 7, 66, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1935,8 , 2095,18 , 0, 0, 1, 6, 7 }, // French/Latin/Equatorial Guinea - { 37, 7, 76, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1935,8 , 2113,16 , 2, 1, 1, 6, 7 }, // French/Latin/French Guiana - { 37, 7, 77, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,80,70}, 212,4 , 7611,35 , 19,5 , 24,7 , 1935,8 , 2129,19 , 0, 0, 1, 6, 7 }, // French/Latin/French Polynesia - { 37, 7, 79, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1935,8 , 2148,5 , 0, 0, 1, 6, 7 }, // French/Latin/Gabon - { 37, 7, 88, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1935,8 , 2153,10 , 2, 1, 1, 6, 7 }, // French/Latin/Guadeloupe - { 37, 7, 91, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {71,78,70}, 216,2 , 7646,48 , 19,5 , 24,7 , 1935,8 , 2163,6 , 0, 0, 1, 6, 7 }, // French/Latin/Guinea - { 37, 7, 94, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {72,84,71}, 218,1 , 7694,57 , 19,5 , 24,7 , 1935,8 , 2169,5 , 2, 1, 1, 6, 7 }, // French/Latin/Haiti - { 37, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1935,8 , 2174,10 , 2, 1, 1, 6, 7 }, // French/Latin/Luxembourg - { 37, 7, 128, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {77,71,65}, 170,2 , 7751,54 , 19,5 , 24,7 , 1935,8 , 1233,10 , 0, 0, 1, 6, 7 }, // French/Latin/Madagascar - { 37, 7, 132, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1935,8 , 2184,4 , 0, 0, 1, 6, 7 }, // French/Latin/Mali - { 37, 7, 135, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1935,8 , 2188,10 , 2, 1, 1, 6, 7 }, // French/Latin/Martinique - { 37, 7, 136, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {77,82,85}, 219,2 , 7805,66 , 19,5 , 24,7 , 1935,8 , 2198,10 , 2, 1, 1, 6, 7 }, // French/Latin/Mauritania - { 37, 7, 137, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {77,85,82}, 176,2 , 7871,63 , 19,5 , 24,7 , 1935,8 , 2208,7 , 2, 0, 1, 6, 7 }, // French/Latin/Mauritius - { 37, 7, 138, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1935,8 , 2215,7 , 2, 1, 1, 6, 7 }, // French/Latin/Mayotte - { 37, 7, 142, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1935,8 , 2222,6 , 2, 1, 1, 6, 7 }, // French/Latin/Monaco - { 37, 7, 145, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 64,4 , 61,4 , 391,6 , 217,17 , 234,23 , {77,65,68}, 221,3 , 7934,54 , 19,5 , 24,7 , 1935,8 , 2228,5 , 2, 1, 1, 6, 7 }, // French/Latin/Morocco - { 37, 7, 153, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,80,70}, 212,4 , 7611,35 , 19,5 , 24,7 , 1935,8 , 2233,18 , 0, 0, 1, 6, 7 }, // French/Latin/New Caledonia - { 37, 7, 156, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1935,8 , 2251,5 , 0, 0, 1, 6, 7 }, // French/Latin/Niger - { 37, 7, 176, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1935,8 , 2256,10 , 2, 1, 1, 6, 7 }, // French/Latin/Reunion - { 37, 7, 179, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {82,87,70}, 180,2 , 7988,50 , 19,5 , 24,7 , 1935,8 , 1457,6 , 0, 0, 1, 6, 7 }, // French/Latin/Rwanda - { 37, 7, 187, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1935,8 , 2266,7 , 0, 0, 1, 6, 7 }, // French/Latin/Senegal - { 37, 7, 188, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {83,67,82}, 185,2 , 8038,71 , 19,5 , 24,7 , 1935,8 , 1515,10 , 2, 1, 1, 6, 7 }, // French/Latin/Seychelles - { 37, 7, 200, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1935,8 , 2273,24 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Pierre And Miquelon - { 37, 7, 206, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 231,8 , 231,8 , 156,8 , 10,17 , 37,5 , 314,14 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {67,72,70}, 224,3 , 8109,45 , 19,5 , 24,7 , 2297,15 , 2312,6 , 2, 0, 1, 6, 7 }, // French/Latin/Switzerland - { 37, 7, 207, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {83,89,80}, 227,2 , 8154,51 , 19,5 , 24,7 , 1935,8 , 2318,5 , 0, 0, 6, 5, 6 }, // French/Latin/Syria - { 37, 7, 212, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1935,8 , 2323,4 , 0, 0, 1, 6, 7 }, // French/Latin/Togo - { 37, 7, 216, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {84,78,68}, 229,2 , 8205,51 , 19,5 , 24,7 , 1935,8 , 2327,7 , 3, 0, 1, 6, 7 }, // French/Latin/Tunisia - { 37, 7, 229, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {86,85,86}, 203,2 , 8256,51 , 19,5 , 24,7 , 1935,8 , 1761,7 , 0, 0, 1, 6, 7 }, // French/Latin/Vanuatu - { 37, 7, 235, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {88,80,70}, 212,4 , 7611,35 , 19,5 , 24,7 , 1935,8 , 2334,16 , 0, 0, 1, 6, 7 }, // French/Latin/Wallis And Futuna Islands - { 37, 7, 244, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1935,8 , 2350,16 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Barthelemy - { 37, 7, 245, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 231,8 , 231,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 391,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1935,8 , 2366,12 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Martin - { 38, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 6,8 , 6,8 , 339,8 , 97,16 , 37,5 , 8,10 , 3121,21 , 3142,54 , 85,14 , 3121,21 , 3142,54 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3455,19 , 8,5 , 37,7 , 2378,5 , 2383,8 , 2, 1, 1, 6, 7 }, // Western Frisian/Latin/Netherlands - { 39, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 239,10 , 239,10 , 119,10 , 648,21 , 37,5 , 8,10 , 3196,28 , 3224,69 , 3293,14 , 3196,28 , 3224,69 , 3293,14 , 81,1 , 77,1 , 397,6 , 5,17 , 22,23 , {71,66,80}, 119,1 , 8307,86 , 4,4 , 13,6 , 2391,8 , 2399,22 , 2, 1, 1, 6, 7 }, // Gaelic/Latin/United Kingdom - { 40, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 3307,35 , 3342,49 , 3391,14 , 3405,35 , 3440,49 , 3489,21 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 4,0 , 2421,6 , 2427,6 , 2, 1, 1, 6, 7 }, // Galician/Latin/Spain - { 41, 15, 81, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 171, 187, 0,6 , 0,6 , 256,8 , 256,8 , 156,8 , 696,19 , 37,5 , 8,10 , 3510,28 , 3538,62 , 3600,14 , 3510,28 , 3538,62 , 3600,14 , 0,2 , 0,2 , 403,5 , 408,37 , 22,23 , {71,69,76}, 231,1 , 8393,43 , 19,5 , 4,0 , 2433,7 , 2440,10 , 2, 1, 1, 6, 7 }, // Georgian/Georgian/Georgia - { 42, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 445,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2450,7 , 2457,11 , 2, 1, 1, 6, 7 }, // German/Latin/Germany - { 42, 7, 14, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 445,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2468,24 , 2492,10 , 2, 1, 1, 6, 7 }, // German/Latin/Austria - { 42, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 445,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2450,7 , 2502,7 , 2, 1, 1, 6, 7 }, // German/Latin/Belgium - { 42, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 445,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2450,7 , 2509,7 , 2, 1, 1, 6, 7 }, // German/Latin/Italy - { 42, 7, 123, 46, 8217, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 445,5 , 5,17 , 22,23 , {67,72,70}, 224,3 , 8455,58 , 19,5 , 4,0 , 2450,7 , 2516,13 , 2, 0, 1, 6, 7 }, // German/Latin/Liechtenstein - { 42, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 445,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2450,7 , 2529,9 , 2, 1, 1, 6, 7 }, // German/Latin/Luxembourg - { 42, 7, 206, 46, 8217, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 445,5 , 5,17 , 22,23 , {67,72,70}, 224,3 , 8455,58 , 19,5 , 4,0 , 2538,21 , 2559,7 , 2, 0, 1, 6, 7 }, // German/Latin/Switzerland - { 43, 16, 85, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 273,9 , 273,9 , 269,6 , 10,17 , 18,7 , 25,12 , 3737,28 , 3765,55 , 3820,14 , 3737,28 , 3765,55 , 3820,14 , 82,4 , 78,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8513,19 , 19,5 , 4,0 , 2566,8 , 2574,6 , 2, 1, 1, 6, 7 }, // Greek/Greek/Greece - { 43, 16, 56, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 273,9 , 273,9 , 269,6 , 10,17 , 18,7 , 25,12 , 3737,28 , 3765,55 , 3820,14 , 3737,28 , 3765,55 , 3820,14 , 82,4 , 78,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8513,19 , 19,5 , 4,0 , 2566,8 , 2580,6 , 2, 1, 1, 6, 7 }, // Greek/Greek/Cyprus - { 44, 7, 86, 44, 46, 59, 37, 48, 8722, 43, 101, 187, 171, 8250, 8249, 0,6 , 0,6 , 282,11 , 282,11 , 53,10 , 80,17 , 205,5 , 210,10 , 3834,28 , 3862,98 , 3960,14 , 3834,28 , 3862,98 , 3960,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {68,75,75}, 148,3 , 8532,62 , 4,4 , 49,5 , 2586,11 , 2597,16 , 2, 0, 1, 6, 7 }, // Greenlandic/Latin/Greenland - { 45, 7, 168, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,89,71}, 232,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 7, 6, 7 }, // Guarani/Latin/Paraguay - { 46, 17, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 293,9 , 293,9 , 269,6 , 192,18 , 328,8 , 336,13 , 3974,32 , 4006,53 , 4059,19 , 3974,32 , 4006,53 , 4059,19 , 0,2 , 0,2 , 450,4 , 454,19 , 22,23 , {73,78,82}, 121,1 , 8594,46 , 4,4 , 13,6 , 2613,7 , 2620,4 , 2, 1, 7, 7, 7 }, // Gujarati/Gujarati/India - { 47, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 302,8 , 302,8 , 269,6 , 715,17 , 37,5 , 8,10 , 4078,28 , 4106,52 , 4158,14 , 4078,28 , 4106,52 , 4158,14 , 86,6 , 82,5 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 8640,54 , 8,5 , 4,0 , 2624,5 , 2629,8 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Nigeria + { 31, 7, 4, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 196,10 , 206,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 13,6 , 785,7 , 792,14 , 2, 1, 7, 6, 7 }, // English/Latin/American Samoa + { 31, 7, 7, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 13,6 , 785,7 , 806,8 , 2, 1, 1, 6, 7 }, // English/Latin/Anguilla + { 31, 7, 9, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 13,6 , 785,7 , 814,17 , 2, 1, 7, 6, 7 }, // English/Latin/Antigua And Barbuda + { 31, 7, 13, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 269,6 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 2463,25 , 0,28 , 28,57 , 2463,25 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 13,6 , 831,18 , 849,9 , 2, 1, 7, 6, 7 }, // English/Latin/Australia + { 31, 7, 14, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 8,5 , 4,0 , 785,7 , 858,7 , 2, 1, 1, 6, 7 }, // English/Latin/Austria + { 31, 7, 16, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,83,68}, 6,1 , 3930,53 , 4,4 , 13,6 , 785,7 , 865,7 , 2, 1, 7, 6, 7 }, // English/Latin/Bahamas + { 31, 7, 19, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,66,68}, 6,1 , 3983,56 , 4,4 , 13,6 , 785,7 , 872,8 , 2, 1, 1, 6, 7 }, // English/Latin/Barbados + { 31, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 27,8 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 19,5 , 4,0 , 785,7 , 880,7 , 2, 1, 1, 6, 7 }, // English/Latin/Belgium + { 31, 7, 22, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 27,8 , 553,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,90,68}, 6,1 , 4039,47 , 4,4 , 13,6 , 785,7 , 887,6 , 2, 1, 7, 6, 7 }, // English/Latin/Belize + { 31, 7, 24, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,77,68}, 6,1 , 4086,56 , 4,4 , 13,6 , 785,7 , 893,7 , 2, 1, 1, 6, 7 }, // English/Latin/Bermuda + { 31, 7, 28, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 27,8 , 553,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {66,87,80}, 162,1 , 4142,50 , 4,4 , 13,6 , 785,7 , 900,8 , 2, 1, 7, 6, 7 }, // English/Latin/Botswana + { 31, 7, 31, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 13,6 , 785,7 , 908,30 , 2, 1, 1, 6, 7 }, // English/Latin/British Indian Ocean Territory + { 31, 7, 35, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 196,10 , 206,9 , 547,6 , 35,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {66,73,70}, 163,3 , 4192,53 , 4,4 , 13,6 , 785,7 , 938,7 , 0, 0, 1, 6, 7 }, // English/Latin/Burundi + { 31, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,65,70}, 32,4 , 4245,83 , 4,4 , 13,6 , 785,7 , 945,8 , 0, 0, 1, 6, 7 }, // English/Latin/Cameroon + { 31, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 53,10 , 35,18 , 18,7 , 25,12 , 2488,35 , 28,57 , 85,14 , 2488,35 , 28,57 , 85,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {67,65,68}, 6,1 , 4328,53 , 4,4 , 13,6 , 953,16 , 969,6 , 2, 0, 7, 6, 7 }, // English/Latin/Canada + { 31, 7, 40, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {75,89,68}, 6,1 , 4381,71 , 4,4 , 13,6 , 785,7 , 975,14 , 2, 1, 1, 6, 7 }, // English/Latin/Cayman Islands + { 31, 7, 45, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 13,6 , 785,7 , 989,16 , 2, 1, 1, 6, 7 }, // English/Latin/Christmas Island + { 31, 7, 46, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 13,6 , 785,7 , 1005,23 , 2, 1, 1, 6, 7 }, // English/Latin/Cocos Islands + { 31, 7, 51, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4452,62 , 4,4 , 13,6 , 785,7 , 1028,12 , 2, 1, 1, 6, 7 }, // English/Latin/Cook Islands + { 31, 7, 56, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 4,4 , 13,6 , 785,7 , 1040,6 , 2, 1, 1, 6, 7 }, // English/Latin/Cyprus + { 31, 7, 58, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 239,5 , 244,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {68,75,75}, 148,3 , 4514,44 , 19,5 , 4,0 , 785,7 , 1046,7 , 2, 0, 1, 6, 7 }, // English/Latin/Denmark + { 31, 7, 60, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 13,6 , 785,7 , 1053,8 , 2, 1, 7, 6, 7 }, // English/Latin/Dominica + { 31, 7, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,82,78}, 41,3 , 4558,50 , 4,4 , 13,6 , 785,7 , 1061,7 , 2, 1, 1, 6, 7 }, // English/Latin/Eritrea + { 31, 7, 70, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {70,75,80}, 119,1 , 4608,74 , 4,4 , 13,6 , 785,7 , 1068,16 , 2, 1, 1, 6, 7 }, // English/Latin/Falkland Islands + { 31, 7, 72, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {70,74,68}, 6,1 , 4682,47 , 4,4 , 13,6 , 785,7 , 1084,4 , 2, 1, 1, 6, 7 }, // English/Latin/Fiji + { 31, 7, 73, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 254,4 , 258,9 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 19,5 , 4,0 , 785,7 , 1088,7 , 2, 1, 1, 6, 7 }, // English/Latin/Finland + { 31, 7, 75, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,66,80}, 119,1 , 4729,32 , 4,4 , 13,6 , 785,7 , 1095,8 , 2, 1, 1, 6, 7 }, // English/Latin/Guernsey + { 31, 7, 80, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,77,68}, 166,1 , 4761,50 , 4,4 , 13,6 , 785,7 , 1103,6 , 2, 1, 1, 6, 7 }, // English/Latin/Gambia + { 31, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 19,5 , 4,0 , 785,7 , 1109,7 , 2, 1, 1, 6, 7 }, // English/Latin/Germany + { 31, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,72,83}, 167,3 , 4811,47 , 4,4 , 13,6 , 785,7 , 1116,5 , 2, 1, 1, 6, 7 }, // English/Latin/Ghana + { 31, 7, 84, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,73,80}, 119,1 , 4858,53 , 4,4 , 13,6 , 785,7 , 1121,9 , 2, 1, 1, 6, 7 }, // English/Latin/Gibraltar + { 31, 7, 87, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 13,6 , 785,7 , 1130,7 , 2, 1, 1, 6, 7 }, // English/Latin/Grenada + { 31, 7, 89, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 196,10 , 206,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 13,6 , 785,7 , 1137,4 , 2, 1, 7, 6, 7 }, // English/Latin/Guam + { 31, 7, 93, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,89,68}, 6,1 , 4911,56 , 4,4 , 13,6 , 785,7 , 1141,6 , 2, 0, 1, 6, 7 }, // English/Latin/Guyana + { 31, 7, 97, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 415,8 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {72,75,68}, 134,3 , 4967,56 , 4,4 , 13,6 , 785,7 , 1147,19 , 2, 1, 7, 6, 7 }, // English/Latin/Hong Kong + { 31, 7, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 27,8 , 192,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {73,78,82}, 121,1 , 5023,44 , 4,4 , 13,6 , 785,7 , 1166,5 , 2, 1, 7, 7, 7 }, // English/Latin/India + { 31, 7, 104, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 97,16 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 4,4 , 13,6 , 785,7 , 1171,7 , 2, 1, 1, 6, 7 }, // English/Latin/Ireland + { 31, 7, 105, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 55,4 , 59,9 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {73,76,83}, 49,1 , 5067,62 , 4,4 , 13,6 , 785,7 , 1178,6 , 2, 1, 7, 5, 6 }, // English/Latin/Israel + { 31, 7, 107, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 269,6 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {74,77,68}, 6,1 , 5129,53 , 4,4 , 13,6 , 785,7 , 1184,7 , 2, 1, 7, 6, 7 }, // English/Latin/Jamaica + { 31, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {75,69,83}, 2,3 , 5182,53 , 4,4 , 13,6 , 785,7 , 1191,5 , 2, 1, 7, 6, 7 }, // English/Latin/Kenya + { 31, 7, 112, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 13,6 , 785,7 , 1196,8 , 2, 1, 1, 6, 7 }, // English/Latin/Kiribati + { 31, 7, 120, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {90,65,82}, 5,1 , 5235,61 , 4,4 , 13,6 , 785,7 , 1204,7 , 2, 1, 1, 6, 7 }, // English/Latin/Lesotho + { 31, 7, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {76,82,68}, 6,1 , 5296,53 , 4,4 , 13,6 , 785,7 , 1211,7 , 2, 1, 1, 6, 7 }, // English/Latin/Liberia + { 31, 7, 126, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,79,80}, 137,4 , 5349,53 , 4,4 , 13,6 , 785,7 , 1218,15 , 2, 1, 7, 6, 7 }, // English/Latin/Macau + { 31, 7, 128, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,71,65}, 170,2 , 5402,52 , 4,4 , 13,6 , 785,7 , 1233,10 , 0, 0, 1, 6, 7 }, // English/Latin/Madagascar + { 31, 7, 129, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,87,75}, 172,2 , 5454,53 , 4,4 , 13,6 , 785,7 , 1243,6 , 2, 1, 1, 6, 7 }, // English/Latin/Malawi + { 31, 7, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,89,82}, 174,2 , 5507,59 , 4,4 , 13,6 , 785,7 , 1249,8 , 2, 1, 1, 6, 7 }, // English/Latin/Malaysia + { 31, 7, 133, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 4,4 , 13,6 , 785,7 , 1257,5 , 2, 1, 7, 6, 7 }, // English/Latin/Malta + { 31, 7, 134, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 196,10 , 206,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 13,6 , 785,7 , 1262,16 , 2, 1, 7, 6, 7 }, // English/Latin/Marshall Islands + { 31, 7, 137, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {77,85,82}, 176,2 , 5566,53 , 4,4 , 13,6 , 785,7 , 1278,9 , 2, 0, 1, 6, 7 }, // English/Latin/Mauritius + { 31, 7, 140, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 13,6 , 785,7 , 1287,10 , 2, 1, 1, 6, 7 }, // English/Latin/Micronesia + { 31, 7, 144, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 13,6 , 785,7 , 1297,10 , 2, 1, 1, 6, 7 }, // English/Latin/Montserrat + { 31, 7, 148, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,65,68}, 6,1 , 5619,53 , 4,4 , 13,6 , 785,7 , 1307,7 , 2, 1, 1, 6, 7 }, // English/Latin/Namibia + { 31, 7, 149, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 13,6 , 785,7 , 1314,5 , 2, 1, 1, 6, 7 }, // English/Latin/Nauru + { 31, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 8,5 , 37,7 , 785,7 , 1319,11 , 2, 1, 1, 6, 7 }, // English/Latin/Netherlands + { 31, 7, 154, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 571,7 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4452,62 , 4,4 , 13,6 , 785,7 , 1330,11 , 2, 1, 1, 6, 7 }, // English/Latin/New Zealand + { 31, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,71,78}, 178,1 , 5672,50 , 4,4 , 13,6 , 785,7 , 1341,7 , 2, 1, 1, 6, 7 }, // English/Latin/Nigeria + { 31, 7, 158, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4452,62 , 4,4 , 13,6 , 785,7 , 1348,4 , 2, 1, 1, 6, 7 }, // English/Latin/Niue + { 31, 7, 159, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 13,6 , 785,7 , 1352,14 , 2, 1, 1, 6, 7 }, // English/Latin/Norfolk Island + { 31, 7, 160, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 196,10 , 206,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 13,6 , 785,7 , 1366,24 , 2, 1, 1, 6, 7 }, // English/Latin/Northern Mariana Islands + { 31, 7, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {80,75,82}, 176,2 , 5722,53 , 4,4 , 13,6 , 785,7 , 1390,8 , 2, 0, 7, 6, 7 }, // English/Latin/Pakistan + { 31, 7, 164, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 13,6 , 785,7 , 1398,5 , 2, 1, 1, 6, 7 }, // English/Latin/Palau + { 31, 7, 167, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {80,71,75}, 131,1 , 5775,73 , 4,4 , 13,6 , 785,7 , 1403,16 , 2, 1, 1, 6, 7 }, // English/Latin/Papua New Guinea + { 31, 7, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {80,72,80}, 179,1 , 5848,53 , 4,4 , 13,6 , 785,7 , 1419,11 , 2, 1, 7, 6, 7 }, // English/Latin/Philippines + { 31, 7, 171, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4452,62 , 4,4 , 13,6 , 785,7 , 1430,16 , 2, 1, 1, 6, 7 }, // English/Latin/Pitcairn + { 31, 7, 174, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 196,10 , 206,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 13,6 , 785,7 , 1446,11 , 2, 1, 7, 6, 7 }, // English/Latin/Puerto Rico + { 31, 7, 179, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {82,87,70}, 180,2 , 5901,47 , 4,4 , 13,6 , 785,7 , 1457,6 , 0, 0, 1, 6, 7 }, // English/Latin/Rwanda + { 31, 7, 180, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 13,6 , 785,7 , 1463,17 , 2, 1, 1, 6, 7 }, // English/Latin/Saint Kitts And Nevis + { 31, 7, 181, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 13,6 , 785,7 , 1480,9 , 2, 1, 1, 6, 7 }, // English/Latin/Saint Lucia + { 31, 7, 182, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {88,67,68}, 6,1 , 3780,71 , 4,4 , 13,6 , 785,7 , 1489,24 , 2, 1, 1, 6, 7 }, // English/Latin/Saint Vincent And The Grenadines + { 31, 7, 183, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {87,83,84}, 182,3 , 5948,40 , 4,4 , 13,6 , 785,7 , 1513,5 , 2, 1, 7, 6, 7 }, // English/Latin/Samoa + { 31, 7, 188, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,67,82}, 185,2 , 5988,59 , 4,4 , 13,6 , 785,7 , 1518,10 , 2, 1, 1, 6, 7 }, // English/Latin/Seychelles + { 31, 7, 189, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,76,76}, 187,2 , 6047,68 , 4,4 , 13,6 , 785,7 , 1528,12 , 0, 0, 1, 6, 7 }, // English/Latin/Sierra Leone + { 31, 7, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 269,6 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,71,68}, 6,1 , 6115,56 , 4,4 , 13,6 , 785,7 , 1540,9 , 2, 1, 7, 6, 7 }, // English/Latin/Singapore + { 31, 7, 192, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3910,20 , 19,5 , 24,7 , 785,7 , 1549,8 , 2, 1, 1, 6, 7 }, // English/Latin/Slovenia + { 31, 7, 193, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,66,68}, 6,1 , 6171,74 , 4,4 , 13,6 , 785,7 , 1557,15 , 2, 1, 1, 6, 7 }, // English/Latin/Solomon Islands + { 31, 7, 195, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 578,10 , 553,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {90,65,82}, 5,1 , 5235,61 , 4,4 , 13,6 , 785,7 , 1572,12 , 2, 1, 7, 6, 7 }, // English/Latin/South Africa + { 31, 7, 199, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,72,80}, 119,1 , 6245,53 , 4,4 , 13,6 , 785,7 , 1584,10 , 2, 1, 1, 6, 7 }, // English/Latin/Saint Helena + { 31, 7, 201, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,68,71}, 0,0 , 6298,50 , 4,4 , 13,6 , 785,7 , 1594,5 , 2, 1, 6, 5, 6 }, // English/Latin/Sudan + { 31, 7, 204, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,90,76}, 189,1 , 6348,53 , 4,4 , 13,6 , 785,7 , 1599,8 , 2, 1, 1, 6, 7 }, // English/Latin/Swaziland + { 31, 7, 205, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 53,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,69,75}, 190,2 , 6401,47 , 19,5 , 4,0 , 785,7 , 1607,6 , 2, 0, 1, 6, 7 }, // English/Latin/Sweden + { 31, 7, 206, 46, 8217, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {67,72,70}, 0,0 , 6448,41 , 8,5 , 44,5 , 785,7 , 1613,11 , 2, 0, 1, 6, 7 }, // English/Latin/Switzerland + { 31, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {84,90,83}, 192,3 , 6489,62 , 4,4 , 13,6 , 785,7 , 1624,8 , 2, 0, 1, 6, 7 }, // English/Latin/Tanzania + { 31, 7, 213, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {78,90,68}, 6,1 , 4452,62 , 4,4 , 13,6 , 785,7 , 1632,7 , 2, 1, 1, 6, 7 }, // English/Latin/Tokelau + { 31, 7, 214, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {84,79,80}, 195,2 , 6551,49 , 4,4 , 13,6 , 785,7 , 1639,5 , 2, 1, 1, 6, 7 }, // English/Latin/Tonga + { 31, 7, 215, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {84,84,68}, 6,1 , 6600,80 , 4,4 , 13,6 , 785,7 , 1644,17 , 2, 1, 7, 6, 7 }, // English/Latin/Trinidad And Tobago + { 31, 7, 219, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 13,6 , 785,7 , 1661,22 , 2, 1, 1, 6, 7 }, // English/Latin/Turks And Caicos Islands + { 31, 7, 220, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,85,68}, 6,1 , 3851,59 , 4,4 , 13,6 , 785,7 , 1683,6 , 2, 1, 1, 6, 7 }, // English/Latin/Tuvalu + { 31, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,71,88}, 197,3 , 6680,56 , 4,4 , 13,6 , 785,7 , 1689,6 , 0, 0, 1, 7, 7 }, // English/Latin/Uganda + { 31, 7, 223, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 196,10 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {65,69,68}, 200,3 , 6736,55 , 4,4 , 13,6 , 785,7 , 1695,20 , 2, 1, 6, 5, 6 }, // English/Latin/United Arab Emirates + { 31, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,66,80}, 119,1 , 6791,47 , 4,4 , 13,6 , 1715,15 , 1730,14 , 2, 1, 1, 6, 7 }, // English/Latin/United Kingdom + { 31, 7, 226, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 196,10 , 206,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 13,6 , 785,7 , 1744,21 , 2, 1, 7, 6, 7 }, // English/Latin/United States Minor Outlying Islands + { 31, 7, 229, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {86,85,86}, 203,2 , 6838,43 , 4,4 , 13,6 , 785,7 , 1765,7 , 0, 0, 1, 6, 7 }, // English/Latin/Vanuatu + { 31, 7, 233, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 13,6 , 785,7 , 1772,22 , 2, 1, 1, 6, 7 }, // English/Latin/British Virgin Islands + { 31, 7, 234, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 196,10 , 206,9 , 547,6 , 35,18 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 3745,35 , 4,4 , 13,6 , 785,7 , 1794,19 , 2, 1, 7, 6, 7 }, // English/Latin/United States Virgin Islands + { 31, 7, 239, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {90,77,87}, 131,1 , 6881,50 , 4,4 , 13,6 , 785,7 , 1813,6 , 2, 1, 1, 6, 7 }, // English/Latin/Zambia + { 31, 7, 240, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 415,8 , 553,18 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 13,6 , 785,7 , 1819,8 , 2, 1, 7, 6, 7 }, // English/Latin/Zimbabwe + { 31, 7, 249, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 3745,35 , 4,4 , 13,6 , 785,7 , 1827,12 , 2, 1, 1, 6, 7 }, // English/Latin/Diego Garcia + { 31, 7, 251, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,66,80}, 119,1 , 4729,32 , 4,4 , 13,6 , 785,7 , 1839,11 , 2, 1, 1, 6, 7 }, // English/Latin/Isle Of Man + { 31, 7, 252, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {71,66,80}, 119,1 , 4729,32 , 4,4 , 13,6 , 785,7 , 1850,6 , 2, 1, 1, 6, 7 }, // English/Latin/Jersey + { 31, 7, 254, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {83,83,80}, 119,1 , 6931,68 , 4,4 , 13,6 , 785,7 , 1856,11 , 2, 1, 1, 6, 7 }, // English/Latin/South Sudan + { 31, 7, 256, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {65,78,71}, 155,4 , 6999,95 , 4,4 , 13,6 , 785,7 , 1867,12 , 2, 1, 1, 6, 7 }, // English/Latin/Sint Maarten + { 31, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 18,7 , 25,12 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 4,4 , 13,6 , 785,7 , 1879,5 , 2, 1, 1, 6, 7 }, // English/Latin/World + { 31, 7, 261, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 206,9 , 206,9 , 119,10 , 10,17 , 37,5 , 8,10 , 0,28 , 28,57 , 85,14 , 0,28 , 28,57 , 85,14 , 68,2 , 65,2 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 19,5 , 4,0 , 785,7 , 1884,6 , 2, 1, 1, 6, 7 }, // English/Latin/Europe + { 32, 7, 260, 44, 160, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 215,9 , 215,9 , 588,8 , 596,26 , 37,5 , 267,25 , 2523,21 , 2544,51 , 2595,14 , 2523,21 , 2544,51 , 2595,14 , 70,3 , 67,3 , 310,6 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 1890,9 , 1899,5 , 2, 1, 1, 6, 7 }, // Esperanto/Latin/World + { 33, 7, 68, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 224,8 , 224,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2609,14 , 2623,63 , 2609,14 , 2609,14 , 2623,63 , 2609,14 , 0,2 , 0,2 , 316,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 7094,20 , 19,5 , 24,7 , 1904,5 , 1909,5 , 2, 1, 1, 6, 7 }, // Estonian/Latin/Estonia + { 34, 7, 71, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 188,8 , 188,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2686,28 , 2714,74 , 2788,14 , 2802,35 , 2714,74 , 2788,14 , 0,2 , 0,2 , 322,3 , 5,17 , 22,23 , {68,75,75}, 190,2 , 7114,43 , 19,5 , 24,7 , 1914,8 , 1922,7 , 2, 0, 1, 6, 7 }, // Faroese/Latin/Faroe Islands + { 34, 7, 58, 44, 46, 59, 37, 48, 8722, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 188,8 , 188,8 , 156,8 , 622,18 , 37,5 , 8,10 , 2686,28 , 2714,74 , 2788,14 , 2802,35 , 2714,74 , 2788,14 , 0,2 , 0,2 , 322,3 , 5,17 , 22,23 , {68,75,75}, 148,3 , 7114,43 , 19,5 , 24,7 , 1914,8 , 665,7 , 2, 0, 1, 6, 7 }, // Faroese/Latin/Denmark + { 36, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 224,8 , 224,8 , 640,8 , 478,17 , 254,4 , 258,9 , 2837,21 , 2858,67 , 2925,14 , 2837,21 , 2939,81 , 2925,14 , 73,3 , 70,3 , 325,5 , 330,17 , 347,23 , {69,85,82}, 14,1 , 7157,20 , 19,5 , 4,0 , 1929,5 , 1934,5 , 2, 1, 1, 6, 7 }, // Finnish/Latin/Finland + { 37, 7, 74, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 1947,6 , 2, 1, 1, 6, 7 }, // French/Latin/France + { 37, 7, 3, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {68,90,68}, 205,2 , 7177,51 , 19,5 , 24,7 , 1939,8 , 1953,7 , 2, 1, 6, 5, 6 }, // French/Latin/Algeria + { 37, 7, 21, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 571,7 , 97,16 , 37,5 , 292,23 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 1960,8 , 2, 1, 1, 6, 7 }, // French/Latin/Belgium + { 37, 7, 23, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1939,8 , 1968,5 , 0, 0, 1, 6, 7 }, // French/Latin/Benin + { 37, 7, 34, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1939,8 , 1973,12 , 0, 0, 1, 6, 7 }, // French/Latin/Burkina Faso + { 37, 7, 35, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {66,73,70}, 163,3 , 7287,53 , 19,5 , 24,7 , 1939,8 , 938,7 , 0, 0, 1, 6, 7 }, // French/Latin/Burundi + { 37, 7, 37, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 76,5 , 73,4 , 370,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 1985,8 , 0, 0, 1, 6, 7 }, // French/Latin/Cameroon + { 37, 7, 38, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8221, 8220, 0,6 , 0,6 , 232,8 , 232,8 , 53,10 , 97,16 , 315,9 , 324,24 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 64,4 , 61,4 , 370,6 , 217,17 , 234,23 , {67,65,68}, 210,4 , 7396,54 , 19,5 , 24,7 , 1993,17 , 969,6 , 2, 0, 7, 6, 7 }, // French/Latin/Canada + { 37, 7, 41, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 2010,25 , 0, 0, 1, 6, 7 }, // French/Latin/Central African Republic + { 37, 7, 42, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 2035,5 , 0, 0, 1, 6, 7 }, // French/Latin/Chad + { 37, 7, 48, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {75,77,70}, 36,2 , 7450,51 , 19,5 , 24,7 , 1939,8 , 2040,7 , 0, 0, 1, 6, 7 }, // French/Latin/Comoros + { 37, 7, 49, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {67,68,70}, 214,2 , 7501,53 , 19,5 , 24,7 , 1939,8 , 2047,14 , 2, 1, 1, 6, 7 }, // French/Latin/Congo Kinshasa + { 37, 7, 50, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 2061,17 , 0, 0, 1, 6, 7 }, // French/Latin/Congo Brazzaville + { 37, 7, 53, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1939,8 , 2078,13 , 0, 0, 1, 6, 7 }, // French/Latin/Ivory Coast + { 37, 7, 59, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {68,74,70}, 38,3 , 7554,57 , 19,5 , 24,7 , 1939,8 , 2091,8 , 0, 0, 6, 6, 7 }, // French/Latin/Djibouti + { 37, 7, 66, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 2099,18 , 0, 0, 1, 6, 7 }, // French/Latin/Equatorial Guinea + { 37, 7, 76, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2117,16 , 2, 1, 1, 6, 7 }, // French/Latin/French Guiana + { 37, 7, 77, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,80,70}, 216,4 , 7611,35 , 19,5 , 24,7 , 1939,8 , 2133,19 , 0, 0, 1, 6, 7 }, // French/Latin/French Polynesia + { 37, 7, 79, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,65,70}, 32,4 , 7340,56 , 19,5 , 24,7 , 1939,8 , 2152,5 , 0, 0, 1, 6, 7 }, // French/Latin/Gabon + { 37, 7, 88, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2157,10 , 2, 1, 1, 6, 7 }, // French/Latin/Guadeloupe + { 37, 7, 91, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {71,78,70}, 220,2 , 7646,48 , 19,5 , 24,7 , 1939,8 , 2167,6 , 0, 0, 1, 6, 7 }, // French/Latin/Guinea + { 37, 7, 94, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {72,84,71}, 222,1 , 7694,57 , 19,5 , 24,7 , 1939,8 , 2173,5 , 2, 1, 1, 6, 7 }, // French/Latin/Haiti + { 37, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2178,10 , 2, 1, 1, 6, 7 }, // French/Latin/Luxembourg + { 37, 7, 128, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {77,71,65}, 170,2 , 7751,54 , 19,5 , 24,7 , 1939,8 , 1233,10 , 0, 0, 1, 6, 7 }, // French/Latin/Madagascar + { 37, 7, 132, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1939,8 , 2188,4 , 0, 0, 1, 6, 7 }, // French/Latin/Mali + { 37, 7, 135, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2192,10 , 2, 1, 1, 6, 7 }, // French/Latin/Martinique + { 37, 7, 136, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {77,82,85}, 223,2 , 7805,66 , 19,5 , 24,7 , 1939,8 , 2202,10 , 2, 1, 1, 6, 7 }, // French/Latin/Mauritania + { 37, 7, 137, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {77,85,82}, 176,2 , 7871,63 , 19,5 , 24,7 , 1939,8 , 2212,7 , 2, 0, 1, 6, 7 }, // French/Latin/Mauritius + { 37, 7, 138, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2219,7 , 2, 1, 1, 6, 7 }, // French/Latin/Mayotte + { 37, 7, 142, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2226,6 , 2, 1, 1, 6, 7 }, // French/Latin/Monaco + { 37, 7, 145, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 64,4 , 61,4 , 370,6 , 217,17 , 234,23 , {77,65,68}, 225,3 , 7934,54 , 19,5 , 24,7 , 1939,8 , 2232,5 , 2, 1, 1, 6, 7 }, // French/Latin/Morocco + { 37, 7, 153, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,80,70}, 216,4 , 7611,35 , 19,5 , 24,7 , 1939,8 , 2237,18 , 0, 0, 1, 6, 7 }, // French/Latin/New Caledonia + { 37, 7, 156, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1939,8 , 2255,5 , 0, 0, 1, 6, 7 }, // French/Latin/Niger + { 37, 7, 176, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2260,10 , 2, 1, 1, 6, 7 }, // French/Latin/Reunion + { 37, 7, 179, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {82,87,70}, 180,2 , 7988,50 , 19,5 , 24,7 , 1939,8 , 1457,6 , 0, 0, 1, 6, 7 }, // French/Latin/Rwanda + { 37, 7, 187, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1939,8 , 2270,7 , 0, 0, 1, 6, 7 }, // French/Latin/Senegal + { 37, 7, 188, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {83,67,82}, 185,2 , 8038,71 , 19,5 , 24,7 , 1939,8 , 1518,10 , 2, 1, 1, 6, 7 }, // French/Latin/Seychelles + { 37, 7, 200, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2277,24 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Pierre And Miquelon + { 37, 7, 206, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 232,8 , 232,8 , 156,8 , 10,17 , 37,5 , 348,14 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {67,72,70}, 228,3 , 8109,45 , 19,5 , 24,7 , 2301,15 , 2316,6 , 2, 0, 1, 6, 7 }, // French/Latin/Switzerland + { 37, 7, 207, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {83,89,80}, 231,2 , 8154,51 , 19,5 , 24,7 , 1939,8 , 2322,5 , 0, 0, 6, 5, 6 }, // French/Latin/Syria + { 37, 7, 212, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,79,70}, 207,3 , 7228,59 , 19,5 , 24,7 , 1939,8 , 2327,4 , 0, 0, 1, 6, 7 }, // French/Latin/Togo + { 37, 7, 216, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {84,78,68}, 233,2 , 8205,51 , 19,5 , 24,7 , 1939,8 , 2331,7 , 3, 0, 1, 6, 7 }, // French/Latin/Tunisia + { 37, 7, 229, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 18,7 , 25,12 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {86,85,86}, 203,2 , 8256,51 , 19,5 , 24,7 , 1939,8 , 1765,7 , 0, 0, 1, 6, 7 }, // French/Latin/Vanuatu + { 37, 7, 235, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {88,80,70}, 216,4 , 7611,35 , 19,5 , 24,7 , 1939,8 , 2338,16 , 0, 0, 1, 6, 7 }, // French/Latin/Wallis And Futuna Islands + { 37, 7, 244, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2354,16 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Barthelemy + { 37, 7, 245, 44, 8239, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 232,8 , 232,8 , 119,10 , 97,16 , 37,5 , 8,10 , 3020,35 , 3055,52 , 3107,14 , 3020,35 , 3055,52 , 3107,14 , 0,2 , 0,2 , 370,6 , 217,17 , 234,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 1939,8 , 2370,12 , 2, 1, 1, 6, 7 }, // French/Latin/Saint Martin + { 38, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 6,8 , 6,8 , 339,8 , 97,16 , 37,5 , 8,10 , 3121,21 , 3142,54 , 85,14 , 3121,21 , 3142,54 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3455,19 , 8,5 , 37,7 , 2382,5 , 2387,8 , 2, 1, 1, 6, 7 }, // Western Frisian/Latin/Netherlands + { 39, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 240,10 , 240,10 , 119,10 , 648,21 , 37,5 , 8,10 , 3196,28 , 3224,69 , 3293,14 , 3196,28 , 3224,69 , 3293,14 , 81,1 , 77,1 , 376,6 , 5,17 , 22,23 , {71,66,80}, 119,1 , 8307,86 , 4,4 , 13,6 , 2395,8 , 2403,22 , 2, 1, 1, 6, 7 }, // Gaelic/Latin/United Kingdom + { 40, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 3307,35 , 3342,49 , 3391,14 , 3405,35 , 3440,49 , 3489,21 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 4,0 , 2425,6 , 2431,6 , 2, 1, 1, 6, 7 }, // Galician/Latin/Spain + { 41, 15, 81, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 171, 187, 0,6 , 0,6 , 257,8 , 257,8 , 156,8 , 696,19 , 37,5 , 8,10 , 3510,28 , 3538,62 , 3600,14 , 3510,28 , 3538,62 , 3600,14 , 0,2 , 0,2 , 382,5 , 387,37 , 22,23 , {71,69,76}, 235,1 , 8393,43 , 19,5 , 4,0 , 2437,7 , 2444,10 , 2, 1, 1, 6, 7 }, // Georgian/Georgian/Georgia + { 42, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 424,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2454,7 , 2461,11 , 2, 1, 1, 6, 7 }, // German/Latin/Germany + { 42, 7, 14, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 424,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2472,24 , 2496,10 , 2, 1, 1, 6, 7 }, // German/Latin/Austria + { 42, 7, 21, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 424,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2454,7 , 2506,7 , 2, 1, 1, 6, 7 }, // German/Latin/Belgium + { 42, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 424,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2454,7 , 2513,7 , 2, 1, 1, 6, 7 }, // German/Latin/Italy + { 42, 7, 123, 46, 8217, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 424,5 , 5,17 , 22,23 , {67,72,70}, 228,3 , 8455,58 , 19,5 , 4,0 , 2454,7 , 2520,13 , 2, 0, 1, 6, 7 }, // German/Latin/Liechtenstein + { 42, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 424,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 2454,7 , 2533,9 , 2, 1, 1, 6, 7 }, // German/Latin/Luxembourg + { 42, 7, 206, 46, 8217, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 3614,21 , 3635,60 , 3695,14 , 3709,28 , 3635,60 , 3695,14 , 0,2 , 0,2 , 424,5 , 5,17 , 22,23 , {67,72,70}, 228,3 , 8455,58 , 19,5 , 4,0 , 2542,21 , 2563,7 , 2, 0, 1, 6, 7 }, // German/Latin/Switzerland + { 43, 16, 85, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 274,9 , 274,9 , 269,6 , 10,17 , 18,7 , 25,12 , 3737,28 , 3765,55 , 3820,14 , 3737,28 , 3765,55 , 3820,14 , 82,4 , 78,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8513,19 , 19,5 , 4,0 , 2570,8 , 2578,6 , 2, 1, 1, 6, 7 }, // Greek/Greek/Greece + { 43, 16, 56, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 274,9 , 274,9 , 269,6 , 10,17 , 18,7 , 25,12 , 3737,28 , 3765,55 , 3820,14 , 3737,28 , 3765,55 , 3820,14 , 82,4 , 78,4 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8513,19 , 19,5 , 4,0 , 2570,8 , 2584,6 , 2, 1, 1, 6, 7 }, // Greek/Greek/Cyprus + { 44, 7, 86, 44, 46, 59, 37, 48, 8722, 43, 101, 187, 171, 8250, 8249, 0,6 , 0,6 , 283,11 , 283,11 , 53,10 , 80,17 , 239,5 , 244,10 , 3834,28 , 3862,98 , 3960,14 , 3834,28 , 3862,98 , 3960,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {68,75,75}, 148,3 , 8532,62 , 4,4 , 49,5 , 2590,11 , 2601,16 , 2, 0, 1, 6, 7 }, // Greenlandic/Latin/Greenland + { 45, 7, 168, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,89,71}, 236,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 7, 6, 7 }, // Guarani/Latin/Paraguay + { 46, 17, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 294,9 , 294,9 , 269,6 , 192,18 , 362,8 , 370,13 , 3974,32 , 4006,53 , 4059,19 , 3974,32 , 4006,53 , 4059,19 , 0,2 , 0,2 , 429,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 8594,46 , 4,4 , 13,6 , 2617,7 , 2624,4 , 2, 1, 7, 7, 7 }, // Gujarati/Gujarati/India + { 47, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 303,9 , 312,8 , 269,6 , 715,17 , 37,5 , 8,10 , 4078,28 , 4106,52 , 4158,14 , 4078,28 , 4106,52 , 4158,14 , 86,6 , 82,5 , 0,5 , 433,41 , 474,47 , {78,71,78}, 178,1 , 8640,52 , 8,5 , 4,0 , 2628,5 , 2633,8 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Nigeria { 47, 1, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Hausa/Arabic/Nigeria - { 47, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 302,8 , 302,8 , 269,6 , 715,17 , 18,7 , 25,12 , 4078,28 , 4106,52 , 4158,14 , 4078,28 , 4106,52 , 4158,14 , 86,6 , 82,5 , 45,4 , 5,17 , 22,23 , {71,72,83}, 167,3 , 8694,45 , 8,5 , 4,0 , 2624,5 , 2637,4 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Ghana - { 47, 7, 156, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 302,8 , 302,8 , 269,6 , 715,17 , 37,5 , 8,10 , 4078,28 , 4106,52 , 4158,14 , 4078,28 , 4106,52 , 4158,14 , 86,6 , 82,5 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 8739,36 , 8,5 , 4,0 , 2624,5 , 2641,5 , 0, 0, 1, 6, 7 }, // Hausa/Latin/Niger - { 48, 18, 105, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 310,6 , 310,6 , 640,8 , 732,18 , 55,4 , 59,9 , 4172,46 , 4218,65 , 4283,21 , 4172,46 , 4218,65 , 4283,21 , 92,6 , 87,5 , 473,4 , 5,17 , 22,23 , {73,76,83}, 49,1 , 8775,54 , 19,5 , 4,0 , 2646,5 , 2651,5 , 2, 1, 7, 5, 6 }, // Hebrew/Hebrew/Israel - { 49, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 316,9 , 325,8 , 269,6 , 10,17 , 18,7 , 25,12 , 4304,32 , 4336,53 , 4389,19 , 4304,32 , 4336,53 , 4389,19 , 68,2 , 65,2 , 477,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 8829,42 , 4,4 , 4,0 , 2656,6 , 2662,4 , 2, 1, 7, 7, 7 }, // Hindi/Devanagari/India + { 47, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 303,9 , 312,8 , 269,6 , 715,17 , 18,7 , 25,12 , 4078,28 , 4106,52 , 4158,14 , 4078,28 , 4106,52 , 4158,14 , 86,6 , 82,5 , 0,5 , 433,41 , 474,47 , {71,72,83}, 167,3 , 8692,46 , 8,5 , 4,0 , 2628,5 , 2641,4 , 2, 1, 1, 6, 7 }, // Hausa/Latin/Ghana + { 47, 7, 156, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 303,9 , 312,8 , 269,6 , 715,17 , 37,5 , 8,10 , 4078,28 , 4106,52 , 4158,14 , 4078,28 , 4106,52 , 4158,14 , 86,6 , 82,5 , 0,5 , 433,41 , 474,47 , {88,79,70}, 207,3 , 8738,36 , 8,5 , 4,0 , 2628,5 , 2645,5 , 0, 0, 1, 6, 7 }, // Hausa/Latin/Niger + { 48, 18, 105, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 320,6 , 320,6 , 640,8 , 732,18 , 55,4 , 59,9 , 4172,46 , 4218,65 , 4283,21 , 4172,46 , 4218,65 , 4283,21 , 92,6 , 87,5 , 521,4 , 5,17 , 22,23 , {73,76,83}, 49,1 , 8774,54 , 19,5 , 4,0 , 2650,5 , 2655,5 , 2, 1, 7, 5, 6 }, // Hebrew/Hebrew/Israel + { 49, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 326,9 , 335,8 , 269,6 , 10,17 , 18,7 , 25,12 , 4304,32 , 4336,53 , 4389,19 , 4304,32 , 4336,53 , 4389,19 , 68,2 , 65,2 , 525,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 8828,42 , 4,4 , 4,0 , 2660,6 , 2666,4 , 2, 1, 7, 7, 7 }, // Hindi/Devanagari/India { 49, 7, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 7, 7 }, // Hindi/Latin/India - { 50, 7, 98, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 187, 171, 0,6 , 0,6 , 333,8 , 333,8 , 750,13 , 763,19 , 55,4 , 59,9 , 4408,19 , 4427,52 , 4479,17 , 4408,19 , 4427,52 , 4479,17 , 98,3 , 92,3 , 481,4 , 5,17 , 22,23 , {72,85,70}, 233,2 , 8871,46 , 19,5 , 4,0 , 2666,6 , 2672,12 , 2, 0, 1, 6, 7 }, // Hungarian/Latin/Hungary - { 51, 7, 99, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 187,8 , 187,8 , 640,8 , 622,18 , 37,5 , 8,10 , 4496,35 , 4531,81 , 4612,14 , 4496,35 , 4531,81 , 4612,14 , 101,4 , 95,4 , 485,4 , 5,17 , 22,23 , {73,83,75}, 235,3 , 8917,49 , 19,5 , 4,0 , 2684,8 , 2692,6 , 0, 0, 1, 6, 7 }, // Icelandic/Latin/Iceland - { 52, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 341,10 , 351,9 , 27,8 , 553,18 , 205,5 , 210,10 , 4626,28 , 4654,43 , 4697,14 , 4626,28 , 4654,43 , 4697,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,68,82}, 238,2 , 8966,39 , 4,4 , 4,0 , 2698,9 , 2698,9 , 2, 0, 7, 6, 7 }, // Indonesian/Latin/Indonesia - { 53, 7, 260, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 528,10 , 782,26 , 37,5 , 8,10 , 4711,28 , 4739,57 , 4796,14 , 4711,28 , 4739,57 , 4796,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 37,7 , 2707,11 , 2718,5 , 2, 1, 1, 6, 7 }, // Interlingua/Latin/World - { 55, 44, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 240,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Inuktitut/Canadian Aboriginal/Canada - { 55, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 240,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Inuktitut/Latin/Canada - { 57, 7, 104, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 360,11 , 239,10 , 119,10 , 97,16 , 37,5 , 8,10 , 4810,37 , 4847,75 , 4922,14 , 4810,37 , 4847,75 , 4922,14 , 105,4 , 99,4 , 489,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9005,31 , 4,4 , 13,6 , 2723,7 , 2730,4 , 2, 1, 1, 6, 7 }, // Irish/Latin/Ireland - { 57, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 360,11 , 239,10 , 119,10 , 97,16 , 37,5 , 8,10 , 4810,37 , 4847,75 , 4922,14 , 4810,37 , 4847,75 , 4922,14 , 105,4 , 99,4 , 489,6 , 5,17 , 22,23 , {71,66,80}, 119,1 , 9036,95 , 4,4 , 13,6 , 2723,7 , 2734,19 , 2, 1, 1, 6, 7 }, // Irish/Latin/United Kingdom - { 58, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 97,16 , 37,5 , 8,10 , 4936,28 , 4964,57 , 5021,14 , 4936,28 , 4964,57 , 5021,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9131,19 , 19,5 , 4,0 , 2753,8 , 2761,6 , 2, 1, 1, 6, 7 }, // Italian/Latin/Italy - { 58, 7, 184, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 97,16 , 37,5 , 8,10 , 4936,28 , 4964,57 , 5021,14 , 4936,28 , 4964,57 , 5021,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9131,19 , 19,5 , 4,0 , 2753,8 , 2767,10 , 2, 1, 1, 6, 7 }, // Italian/Latin/San Marino - { 58, 7, 206, 46, 8217, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 249,7 , 249,7 , 156,8 , 10,17 , 37,5 , 8,10 , 4936,28 , 4964,57 , 5021,14 , 4936,28 , 4964,57 , 5021,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,72,70}, 0,0 , 9150,53 , 19,5 , 4,0 , 2753,8 , 2777,8 , 2, 0, 1, 6, 7 }, // Italian/Latin/Switzerland - { 58, 7, 230, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 97,16 , 37,5 , 8,10 , 4936,28 , 4964,57 , 5021,14 , 4936,28 , 4964,57 , 5021,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9131,19 , 19,5 , 4,0 , 2753,8 , 2785,18 , 2, 1, 1, 6, 7 }, // Italian/Latin/Vatican City State - { 59, 19, 108, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 165,5 , 165,5 , 165,5 , 165,5 , 578,10 , 402,13 , 55,4 , 349,10 , 5035,14 , 5049,28 , 5035,14 , 5035,14 , 5049,28 , 5035,14 , 109,2 , 103,2 , 495,3 , 498,17 , 22,23 , {74,80,89}, 243,1 , 9203,11 , 4,4 , 13,6 , 2803,3 , 2806,2 , 0, 0, 7, 6, 7 }, // Japanese/Japanese/Japan - { 60, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 371,10 , 381,9 , 528,10 , 10,17 , 37,5 , 8,10 , 5077,29 , 5106,41 , 5147,14 , 5077,29 , 5106,41 , 5147,14 , 111,4 , 105,5 , 515,4 , 5,17 , 22,23 , {73,68,82}, 238,2 , 8966,39 , 8,5 , 4,0 , 2808,4 , 2812,9 , 2, 0, 7, 6, 7 }, // Javanese/Latin/Indonesia - { 61, 21, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 390,12 , 402,11 , 269,6 , 35,18 , 328,8 , 336,13 , 5161,33 , 5194,54 , 5248,20 , 5161,33 , 5194,54 , 5248,20 , 115,9 , 110,7 , 519,8 , 527,35 , 22,23 , {73,78,82}, 121,1 , 9214,49 , 4,4 , 13,6 , 2821,5 , 2826,4 , 2, 1, 7, 7, 7 }, // Kannada/Kannada/India - { 62, 1, 100, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 547,6 , 35,18 , 18,7 , 25,12 , 5268,50 , 5318,52 , 5370,14 , 5268,50 , 5318,52 , 5370,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 9263,23 , 8,5 , 4,0 , 2830,5 , 2835,9 , 2, 1, 7, 7, 7 }, // Kashmiri/Arabic/India + { 50, 7, 98, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 187, 171, 0,6 , 0,6 , 343,8 , 343,8 , 750,13 , 763,19 , 55,4 , 59,9 , 4408,19 , 4427,52 , 4479,17 , 4408,19 , 4427,52 , 4479,17 , 98,3 , 92,3 , 529,4 , 5,17 , 22,23 , {72,85,70}, 237,2 , 8870,46 , 19,5 , 4,0 , 2670,6 , 2676,12 , 2, 0, 1, 6, 7 }, // Hungarian/Latin/Hungary + { 51, 7, 99, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 188,8 , 188,8 , 640,8 , 622,18 , 37,5 , 8,10 , 4496,35 , 4531,81 , 4612,14 , 4496,35 , 4531,81 , 4612,14 , 101,4 , 95,4 , 533,4 , 5,17 , 22,23 , {73,83,75}, 239,3 , 8916,49 , 19,5 , 4,0 , 2688,8 , 2696,6 , 0, 0, 1, 6, 7 }, // Icelandic/Latin/Iceland + { 52, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 351,10 , 361,9 , 27,8 , 553,18 , 239,5 , 244,10 , 4626,28 , 4654,43 , 4697,14 , 4626,28 , 4654,43 , 4697,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,68,82}, 242,2 , 8965,39 , 4,4 , 4,0 , 2702,9 , 2702,9 , 2, 0, 7, 6, 7 }, // Indonesian/Latin/Indonesia + { 53, 7, 260, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 528,10 , 782,26 , 37,5 , 8,10 , 4711,28 , 4739,57 , 4796,14 , 4711,28 , 4739,57 , 4796,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 37,7 , 2711,11 , 2722,5 , 2, 1, 1, 6, 7 }, // Interlingua/Latin/World + { 55, 44, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 244,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Inuktitut/Canadian Aboriginal/Canada + { 55, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 244,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Inuktitut/Latin/Canada + { 57, 7, 104, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 240,10 , 240,10 , 119,10 , 97,16 , 37,5 , 8,10 , 4810,37 , 4847,75 , 4922,14 , 4810,37 , 4847,75 , 4922,14 , 105,4 , 99,4 , 537,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9004,31 , 4,4 , 13,6 , 2727,7 , 2734,4 , 2, 1, 1, 6, 7 }, // Irish/Latin/Ireland + { 57, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 240,10 , 240,10 , 119,10 , 97,16 , 37,5 , 8,10 , 4810,37 , 4847,75 , 4922,14 , 4810,37 , 4847,75 , 4922,14 , 105,4 , 99,4 , 537,6 , 5,17 , 22,23 , {71,66,80}, 119,1 , 9035,95 , 4,4 , 13,6 , 2727,7 , 2738,19 , 2, 1, 1, 6, 7 }, // Irish/Latin/United Kingdom + { 58, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 97,16 , 37,5 , 8,10 , 4936,28 , 4964,57 , 5021,14 , 4936,28 , 4964,57 , 5021,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9130,19 , 19,5 , 4,0 , 2757,8 , 2765,6 , 2, 1, 1, 6, 7 }, // Italian/Latin/Italy + { 58, 7, 184, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 97,16 , 37,5 , 8,10 , 4936,28 , 4964,57 , 5021,14 , 4936,28 , 4964,57 , 5021,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9130,19 , 19,5 , 4,0 , 2757,8 , 2771,10 , 2, 1, 1, 6, 7 }, // Italian/Latin/San Marino + { 58, 7, 206, 46, 8217, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 250,7 , 250,7 , 156,8 , 10,17 , 37,5 , 8,10 , 4936,28 , 4964,57 , 5021,14 , 4936,28 , 4964,57 , 5021,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,72,70}, 0,0 , 9149,53 , 19,5 , 4,0 , 2757,8 , 2781,8 , 2, 0, 1, 6, 7 }, // Italian/Latin/Switzerland + { 58, 7, 230, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 97,16 , 37,5 , 8,10 , 4936,28 , 4964,57 , 5021,14 , 4936,28 , 4964,57 , 5021,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9130,19 , 19,5 , 4,0 , 2757,8 , 2789,18 , 2, 1, 1, 6, 7 }, // Italian/Latin/Vatican City State + { 59, 19, 108, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 166,5 , 166,5 , 166,5 , 166,5 , 578,10 , 402,13 , 55,4 , 383,10 , 5035,14 , 5049,28 , 5035,14 , 5035,14 , 5049,28 , 5035,14 , 109,2 , 103,2 , 543,3 , 546,17 , 22,23 , {74,80,89}, 247,1 , 9202,11 , 4,4 , 13,6 , 2807,3 , 2810,2 , 0, 0, 7, 6, 7 }, // Japanese/Japanese/Japan + { 60, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 370,10 , 380,9 , 528,10 , 10,17 , 37,5 , 8,10 , 5077,29 , 5106,41 , 5147,14 , 5077,29 , 5106,41 , 5147,14 , 111,4 , 105,5 , 563,4 , 5,17 , 22,23 , {73,68,82}, 242,2 , 8965,39 , 8,5 , 4,0 , 2812,4 , 2816,9 , 2, 0, 7, 6, 7 }, // Javanese/Latin/Indonesia + { 61, 21, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 389,12 , 401,11 , 269,6 , 35,18 , 362,8 , 370,13 , 5161,33 , 5194,54 , 5248,20 , 5161,33 , 5194,54 , 5248,20 , 115,9 , 110,7 , 567,8 , 575,35 , 22,23 , {73,78,82}, 121,1 , 9213,49 , 4,4 , 13,6 , 2825,5 , 2830,4 , 2, 1, 7, 7, 7 }, // Kannada/Kannada/India + { 62, 1, 100, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 547,6 , 35,18 , 18,7 , 25,12 , 5268,50 , 5318,52 , 5370,14 , 5268,50 , 5318,52 , 5370,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 9262,23 , 8,5 , 4,0 , 2834,5 , 2839,9 , 2, 1, 7, 7, 7 }, // Kashmiri/Arabic/India { 62, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 7, 7 }, // Kashmiri/Devanagari/India - { 63, 2, 110, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 413,10 , 156,8 , 808,22 , 37,5 , 8,10 , 5384,21 , 5405,56 , 5461,14 , 5384,21 , 5405,56 , 5461,14 , 0,2 , 0,2 , 562,4 , 566,17 , 583,23 , {75,90,84}, 244,1 , 9286,58 , 19,5 , 4,0 , 2844,10 , 2854,9 , 2, 1, 1, 6, 7 }, // Kazakh/Cyrillic/Kazakhstan - { 64, 7, 179, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 5475,35 , 5510,84 , 85,14 , 5475,35 , 5510,84 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,87,70}, 180,2 , 0,7 , 8,5 , 4,0 , 2863,11 , 2874,8 , 0, 0, 1, 6, 7 }, // Kinyarwanda/Latin/Rwanda - { 65, 2, 116, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 423,10 , 423,10 , 269,6 , 830,23 , 37,5 , 8,10 , 5594,38 , 5632,57 , 5689,14 , 5594,38 , 5632,57 , 5689,14 , 124,5 , 117,14 , 562,4 , 606,18 , 22,23 , {75,71,83}, 245,3 , 9344,52 , 19,5 , 4,0 , 2882,8 , 2890,10 , 2, 1, 1, 6, 7 }, // Kirghiz/Cyrillic/Kyrgyzstan - { 66, 22, 114, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 433,7 , 433,7 , 853,9 , 862,16 , 359,7 , 366,13 , 5703,14 , 5717,28 , 5703,14 , 5703,14 , 5717,28 , 5703,14 , 129,2 , 131,2 , 624,3 , 5,17 , 22,23 , {75,82,87}, 248,1 , 9396,19 , 4,4 , 13,6 , 2900,3 , 2903,4 , 0, 0, 7, 6, 7 }, // Korean/Korean/South Korea - { 66, 22, 113, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 433,7 , 433,7 , 853,9 , 862,16 , 359,7 , 366,13 , 5703,14 , 5717,28 , 5703,14 , 5703,14 , 5717,28 , 5703,14 , 129,2 , 131,2 , 624,3 , 5,17 , 22,23 , {75,80,87}, 249,3 , 9415,39 , 4,4 , 13,6 , 2900,3 , 2907,11 , 0, 0, 1, 6, 7 }, // Korean/Korean/North Korea - { 67, 7, 217, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 440,7 , 440,7 , 53,10 , 63,17 , 37,5 , 8,10 , 5745,20 , 5765,42 , 5807,14 , 5745,20 , 5765,42 , 5807,14 , 131,2 , 133,2 , 45,4 , 5,17 , 22,23 , {84,82,89}, 252,1 , 0,7 , 19,5 , 24,7 , 2918,5 , 2923,7 , 2, 1, 1, 6, 7 }, // Kurdish/Latin/Turkey - { 68, 7, 35, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 5821,34 , 5855,89 , 85,14 , 5821,34 , 5855,89 , 85,14 , 133,5 , 135,5 , 45,4 , 5,17 , 22,23 , {66,73,70}, 163,3 , 9454,27 , 0,4 , 4,0 , 2930,8 , 2938,8 , 0, 0, 1, 6, 7 }, // Rundi/Latin/Burundi - { 69, 23, 117, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 447,9 , 415,8 , 878,19 , 55,4 , 379,24 , 5944,36 , 5980,57 , 6037,17 , 5944,36 , 5980,57 , 6037,17 , 138,8 , 140,8 , 45,4 , 5,17 , 22,23 , {76,65,75}, 253,1 , 9481,21 , 4,4 , 44,5 , 2946,3 , 2946,3 , 0, 0, 7, 6, 7 }, // Lao/Lao/Laos - { 71, 7, 118, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 456,8 , 456,8 , 156,8 , 897,26 , 37,5 , 8,10 , 6054,51 , 6105,72 , 6177,14 , 6191,51 , 6242,72 , 6177,14 , 146,14 , 148,11 , 627,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9502,23 , 19,5 , 4,0 , 2949,8 , 2957,7 , 2, 1, 1, 6, 7 }, // Latvian/Latin/Latvia - { 72, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 464,9 , 464,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {67,68,70}, 210,2 , 9525,23 , 19,5 , 4,0 , 2964,7 , 2971,30 , 2, 1, 1, 6, 7 }, // Lingala/Latin/Congo Kinshasa - { 72, 7, 6, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 464,9 , 464,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {65,79,65}, 254,2 , 9548,23 , 19,5 , 4,0 , 2964,7 , 3001,6 , 2, 1, 1, 6, 7 }, // Lingala/Latin/Angola - { 72, 7, 41, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 464,9 , 464,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 9571,23 , 19,5 , 4,0 , 2964,7 , 3007,26 , 0, 0, 1, 6, 7 }, // Lingala/Latin/Central African Republic - { 72, 7, 50, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 464,9 , 464,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 9571,23 , 19,5 , 4,0 , 2964,7 , 3033,5 , 0, 0, 1, 6, 7 }, // Lingala/Latin/Congo Brazzaville - { 73, 7, 124, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8222, 8220, 0,6 , 0,6 , 473,8 , 473,8 , 53,10 , 923,27 , 37,5 , 8,10 , 6456,21 , 6477,89 , 6566,14 , 6456,21 , 6477,89 , 6566,14 , 168,9 , 165,6 , 632,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9594,30 , 19,5 , 4,0 , 3038,8 , 3046,7 , 2, 1, 1, 6, 7 }, // Lithuanian/Latin/Lithuania - { 74, 2, 127, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 113,6 , 10,17 , 37,5 , 8,10 , 6580,35 , 6615,54 , 1530,14 , 6669,34 , 6615,54 , 1530,14 , 177,10 , 171,8 , 638,5 , 5,17 , 22,23 , {77,75,68}, 256,4 , 9624,56 , 19,5 , 4,0 , 3053,10 , 3063,18 , 2, 1, 1, 6, 7 }, // Macedonian/Cyrillic/Macedonia - { 75, 7, 128, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 97,16 , 37,5 , 8,10 , 6703,34 , 6737,60 , 6797,14 , 6703,34 , 6737,60 , 6797,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,71,65}, 170,2 , 9680,13 , 4,4 , 4,0 , 3081,8 , 3089,12 , 0, 0, 1, 6, 7 }, // Malagasy/Latin/Madagascar - { 76, 7, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 351,9 , 351,9 , 571,7 , 10,17 , 18,7 , 25,12 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 643,4 , 5,17 , 22,23 , {77,89,82}, 174,2 , 9693,39 , 4,4 , 13,6 , 3101,6 , 1249,8 , 2, 1, 1, 6, 7 }, // Malay/Latin/Malaysia + { 63, 2, 110, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 412,10 , 156,8 , 808,22 , 37,5 , 8,10 , 5384,21 , 5405,56 , 5461,14 , 5384,21 , 5405,56 , 5461,14 , 0,2 , 0,2 , 610,4 , 614,17 , 631,23 , {75,90,84}, 248,1 , 9285,58 , 19,5 , 4,0 , 2848,10 , 2858,9 , 2, 1, 1, 6, 7 }, // Kazakh/Cyrillic/Kazakhstan + { 64, 7, 179, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 5475,35 , 5510,84 , 85,14 , 5475,35 , 5510,84 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,87,70}, 180,2 , 0,7 , 8,5 , 4,0 , 2867,11 , 2878,8 , 0, 0, 1, 6, 7 }, // Kinyarwanda/Latin/Rwanda + { 65, 2, 116, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 422,10 , 422,10 , 269,6 , 830,23 , 37,5 , 8,10 , 5594,38 , 5632,57 , 5689,14 , 5594,38 , 5632,57 , 5689,14 , 124,5 , 117,14 , 610,4 , 654,18 , 22,23 , {75,71,83}, 249,3 , 9343,52 , 19,5 , 4,0 , 2886,8 , 2894,10 , 2, 1, 1, 6, 7 }, // Kirghiz/Cyrillic/Kyrgyzstan + { 66, 22, 114, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 432,7 , 432,7 , 853,9 , 862,16 , 393,7 , 400,13 , 5703,14 , 5717,28 , 5703,14 , 5703,14 , 5717,28 , 5703,14 , 129,2 , 131,2 , 672,3 , 5,17 , 22,23 , {75,82,87}, 252,1 , 9395,19 , 4,4 , 13,6 , 2904,3 , 2907,4 , 0, 0, 7, 6, 7 }, // Korean/Korean/South Korea + { 66, 22, 113, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 432,7 , 432,7 , 853,9 , 862,16 , 393,7 , 400,13 , 5703,14 , 5717,28 , 5703,14 , 5703,14 , 5717,28 , 5703,14 , 129,2 , 131,2 , 672,3 , 5,17 , 22,23 , {75,80,87}, 253,3 , 9414,39 , 4,4 , 13,6 , 2904,3 , 2911,11 , 0, 0, 1, 6, 7 }, // Korean/Korean/North Korea + { 67, 7, 217, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 439,7 , 439,7 , 53,10 , 63,17 , 37,5 , 8,10 , 5745,20 , 5765,42 , 5807,14 , 5745,20 , 5765,42 , 5807,14 , 131,2 , 133,2 , 45,4 , 5,17 , 22,23 , {84,82,89}, 256,1 , 0,7 , 19,5 , 24,7 , 2922,5 , 2927,7 , 2, 1, 1, 6, 7 }, // Kurdish/Latin/Turkey + { 68, 7, 35, 44, 46, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 5821,34 , 5855,89 , 85,14 , 5821,34 , 5855,89 , 85,14 , 133,5 , 135,5 , 45,4 , 5,17 , 22,23 , {66,73,70}, 163,3 , 9453,27 , 0,4 , 4,0 , 2934,8 , 2942,8 , 0, 0, 1, 6, 7 }, // Rundi/Latin/Burundi + { 69, 23, 117, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 446,9 , 415,8 , 878,19 , 55,4 , 413,24 , 5944,36 , 5980,57 , 6037,17 , 5944,36 , 5980,57 , 6037,17 , 138,8 , 140,8 , 45,4 , 5,17 , 22,23 , {76,65,75}, 257,1 , 9480,21 , 4,4 , 44,5 , 2950,3 , 2950,3 , 0, 0, 7, 6, 7 }, // Lao/Lao/Laos + { 70, 7, 230, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Latin/Latin/Vatican City State + { 71, 7, 118, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 455,8 , 455,8 , 156,8 , 897,26 , 37,5 , 8,10 , 6054,51 , 6105,72 , 6177,14 , 6191,51 , 6242,72 , 6177,14 , 146,14 , 148,11 , 675,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9501,23 , 19,5 , 4,0 , 2953,8 , 2961,7 , 2, 1, 1, 6, 7 }, // Latvian/Latin/Latvia + { 72, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 463,9 , 463,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {67,68,70}, 214,2 , 9524,23 , 19,5 , 4,0 , 2968,7 , 2975,30 , 2, 1, 1, 6, 7 }, // Lingala/Latin/Congo Kinshasa + { 72, 7, 6, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 463,9 , 463,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {65,79,65}, 258,2 , 9547,23 , 19,5 , 4,0 , 2968,7 , 3005,6 , 2, 1, 1, 6, 7 }, // Lingala/Latin/Angola + { 72, 7, 41, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 463,9 , 463,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 9570,23 , 19,5 , 4,0 , 2968,7 , 3011,26 , 0, 0, 1, 6, 7 }, // Lingala/Latin/Central African Republic + { 72, 7, 50, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 463,9 , 463,9 , 415,8 , 97,16 , 37,5 , 8,10 , 6314,28 , 6342,100 , 6442,14 , 6314,28 , 6342,100 , 6442,14 , 160,8 , 159,6 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 9570,23 , 19,5 , 4,0 , 2968,7 , 3037,5 , 0, 0, 1, 6, 7 }, // Lingala/Latin/Congo Brazzaville + { 73, 7, 124, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8222, 8220, 0,6 , 0,6 , 472,8 , 472,8 , 53,10 , 923,27 , 37,5 , 8,10 , 6456,21 , 6477,89 , 6566,14 , 6456,21 , 6477,89 , 6566,14 , 168,9 , 165,6 , 680,6 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9593,30 , 19,5 , 4,0 , 3042,8 , 3050,7 , 2, 1, 1, 6, 7 }, // Lithuanian/Latin/Lithuania + { 74, 2, 127, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 113,6 , 10,17 , 37,5 , 8,10 , 6580,35 , 6615,54 , 1530,14 , 6669,34 , 6615,54 , 1530,14 , 177,10 , 171,8 , 686,5 , 5,17 , 22,23 , {77,75,68}, 260,4 , 9623,56 , 19,5 , 4,0 , 3057,10 , 3067,18 , 2, 1, 1, 6, 7 }, // Macedonian/Cyrillic/Macedonia + { 75, 7, 128, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 97,16 , 37,5 , 8,10 , 6703,34 , 6737,60 , 6797,14 , 6703,34 , 6737,60 , 6797,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,71,65}, 170,2 , 9679,13 , 4,4 , 4,0 , 3085,8 , 3093,12 , 0, 0, 1, 6, 7 }, // Malagasy/Latin/Madagascar + { 76, 7, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 361,9 , 361,9 , 571,7 , 10,17 , 18,7 , 25,12 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 691,4 , 5,17 , 22,23 , {77,89,82}, 174,2 , 9692,39 , 4,4 , 13,6 , 3105,6 , 1249,8 , 2, 1, 1, 6, 7 }, // Malay/Latin/Malaysia { 76, 1, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,89,82}, 174,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Malay/Arabic/Malaysia - { 76, 7, 32, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 351,9 , 351,9 , 571,7 , 950,12 , 18,7 , 25,12 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 643,4 , 5,17 , 22,23 , {66,78,68}, 6,1 , 9732,31 , 4,4 , 13,6 , 3101,6 , 3107,6 , 2, 1, 1, 6, 7 }, // Malay/Latin/Brunei - { 76, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 351,9 , 351,9 , 27,8 , 553,18 , 205,5 , 210,10 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 643,4 , 5,17 , 22,23 , {73,68,82}, 238,2 , 8966,39 , 4,4 , 4,0 , 3101,6 , 2698,9 , 2, 0, 7, 6, 7 }, // Malay/Latin/Indonesia - { 76, 7, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 351,9 , 351,9 , 571,7 , 10,17 , 18,7 , 25,12 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 643,4 , 5,17 , 22,23 , {83,71,68}, 6,1 , 9763,37 , 4,4 , 13,6 , 3101,6 , 3113,9 , 2, 1, 7, 6, 7 }, // Malay/Latin/Singapore - { 77, 24, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 481,13 , 494,12 , 269,6 , 962,18 , 18,7 , 25,12 , 6896,41 , 6937,77 , 7014,22 , 6896,41 , 7036,76 , 7112,21 , 0,2 , 0,2 , 647,6 , 653,27 , 22,23 , {73,78,82}, 121,1 , 9800,40 , 4,4 , 13,6 , 3122,6 , 3128,6 , 2, 1, 7, 7, 7 }, // Malayalam/Malayalam/India - { 78, 7, 133, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 506,8 , 514,7 , 119,10 , 980,23 , 37,5 , 8,10 , 7133,28 , 7161,63 , 7224,21 , 7133,28 , 7161,63 , 7245,20 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9840,27 , 4,4 , 4,0 , 3134,5 , 1257,5 , 2, 1, 7, 6, 7 }, // Maltese/Latin/Malta - { 79, 7, 154, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 528,10 , 10,17 , 18,7 , 25,12 , 7265,27 , 7292,47 , 7339,14 , 7265,27 , 7292,47 , 7339,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,90,68}, 6,1 , 9867,37 , 8,5 , 4,0 , 3139,5 , 3144,8 , 2, 1, 1, 6, 7 }, // Maori/Latin/New Zealand - { 80, 13, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 521,9 , 521,9 , 269,6 , 192,18 , 18,7 , 25,12 , 7353,32 , 7385,53 , 4389,19 , 7353,32 , 7385,53 , 4389,19 , 189,5 , 182,4 , 477,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 9904,43 , 4,4 , 13,6 , 3152,5 , 2662,4 , 2, 1, 7, 7, 7 }, // Marathi/Devanagari/India - { 82, 2, 143, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1003,10 , 1013,35 , 37,5 , 87,12 , 7438,21 , 7459,43 , 7438,21 , 7438,21 , 7502,43 , 7438,21 , 194,4 , 186,4 , 562,4 , 680,17 , 22,23 , {77,78,84}, 260,1 , 9947,46 , 8,5 , 4,0 , 3157,6 , 3163,6 , 2, 0, 1, 6, 7 }, // Mongolian/Cyrillic/Mongolia - { 82, 8, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,78,89}, 261,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Mongolian/Mongolian/China - { 84, 13, 150, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 530,5 , 0,6 , 535,7 , 535,7 , 227,6 , 63,17 , 37,5 , 8,10 , 7545,33 , 7578,54 , 7632,18 , 7545,33 , 7578,54 , 7632,18 , 198,9 , 190,7 , 477,4 , 697,19 , 22,23 , {78,80,82}, 264,4 , 9993,49 , 8,5 , 4,0 , 3169,6 , 3175,5 , 2, 1, 7, 6, 7 }, // Nepali/Devanagari/Nepal - { 84, 13, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 530,5 , 0,6 , 535,7 , 535,7 , 227,6 , 63,17 , 18,7 , 25,12 , 7545,33 , 7578,54 , 7632,18 , 7545,33 , 7578,54 , 7632,18 , 198,9 , 190,7 , 477,4 , 697,19 , 22,23 , {73,78,82}, 121,1 , 10042,49 , 8,5 , 4,0 , 3169,6 , 2662,4 , 2, 1, 7, 7, 7 }, // Nepali/Devanagari/India - { 85, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 187,8 , 187,8 , 495,10 , 478,17 , 37,5 , 8,10 , 2334,35 , 2269,51 , 2320,14 , 2334,35 , 2269,51 , 2320,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {78,79,75}, 190,2 , 10091,44 , 8,5 , 4,0 , 3180,12 , 3192,5 , 2, 0, 1, 6, 7 }, // Norwegian Bokmal/Latin/Norway - { 85, 7, 203, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 187,8 , 187,8 , 495,10 , 478,17 , 37,5 , 8,10 , 2334,35 , 2269,51 , 2320,14 , 2334,35 , 2269,51 , 2320,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {78,79,75}, 190,2 , 10091,44 , 8,5 , 4,0 , 3180,12 , 3197,21 , 2, 0, 1, 6, 7 }, // Norwegian Bokmal/Latin/Svalbard And Jan Mayen Islands + { 76, 7, 32, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 361,9 , 361,9 , 571,7 , 950,12 , 18,7 , 25,12 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 691,4 , 5,17 , 22,23 , {66,78,68}, 6,1 , 9731,31 , 4,4 , 13,6 , 3105,6 , 3111,6 , 2, 1, 1, 6, 7 }, // Malay/Latin/Brunei + { 76, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 361,9 , 361,9 , 27,8 , 553,18 , 239,5 , 244,10 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 691,4 , 5,17 , 22,23 , {73,68,82}, 242,2 , 8965,39 , 4,4 , 4,0 , 3105,6 , 2702,9 , 2, 0, 7, 6, 7 }, // Malay/Latin/Indonesia + { 76, 7, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 361,9 , 361,9 , 571,7 , 10,17 , 18,7 , 25,12 , 6811,28 , 6839,43 , 6882,14 , 6811,28 , 6839,43 , 6882,14 , 187,2 , 179,3 , 691,4 , 5,17 , 22,23 , {83,71,68}, 6,1 , 9762,37 , 4,4 , 13,6 , 3105,6 , 3117,9 , 2, 1, 7, 6, 7 }, // Malay/Latin/Singapore + { 77, 24, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 480,13 , 493,12 , 269,6 , 962,18 , 18,7 , 25,12 , 6896,41 , 6937,77 , 7014,22 , 6896,41 , 7036,76 , 7112,21 , 0,2 , 0,2 , 695,6 , 701,27 , 22,23 , {73,78,82}, 121,1 , 9799,40 , 4,4 , 13,6 , 3126,6 , 3132,6 , 2, 1, 7, 7, 7 }, // Malayalam/Malayalam/India + { 78, 7, 133, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 505,8 , 513,7 , 119,10 , 980,23 , 37,5 , 8,10 , 7133,28 , 7161,63 , 7224,21 , 7133,28 , 7161,63 , 7245,20 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9839,27 , 4,4 , 4,0 , 3138,5 , 1257,5 , 2, 1, 7, 6, 7 }, // Maltese/Latin/Malta + { 79, 7, 154, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 528,10 , 10,17 , 18,7 , 25,12 , 7265,27 , 7292,47 , 7339,14 , 7265,27 , 7292,47 , 7339,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,90,68}, 6,1 , 9866,37 , 8,5 , 4,0 , 3143,12 , 3155,8 , 2, 1, 1, 6, 7 }, // Maori/Latin/New Zealand + { 80, 13, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 520,9 , 520,9 , 269,6 , 192,18 , 18,7 , 25,12 , 7353,32 , 7385,53 , 4389,19 , 7353,32 , 7385,53 , 4389,19 , 0,2 , 0,2 , 525,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 9903,43 , 4,4 , 13,6 , 3163,5 , 2666,4 , 2, 1, 7, 7, 7 }, // Marathi/Devanagari/India + { 82, 2, 143, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1003,10 , 1013,35 , 37,5 , 87,12 , 7438,21 , 7459,43 , 7438,21 , 7438,21 , 7502,43 , 7438,21 , 189,4 , 182,4 , 610,4 , 728,17 , 22,23 , {77,78,84}, 264,1 , 9946,46 , 8,5 , 4,0 , 3168,6 , 3174,6 , 2, 0, 1, 6, 7 }, // Mongolian/Cyrillic/Mongolia + { 82, 8, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,78,89}, 265,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Mongolian/Mongolian/China + { 84, 13, 150, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 529,5 , 0,6 , 534,7 , 534,7 , 227,6 , 63,17 , 37,5 , 8,10 , 7545,33 , 7578,54 , 7632,18 , 7545,33 , 7578,54 , 7632,18 , 193,9 , 186,7 , 525,4 , 745,19 , 22,23 , {78,80,82}, 268,4 , 9992,49 , 8,5 , 4,0 , 3180,6 , 3186,5 , 2, 1, 7, 6, 7 }, // Nepali/Devanagari/Nepal + { 84, 13, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 529,5 , 0,6 , 534,7 , 534,7 , 227,6 , 63,17 , 18,7 , 25,12 , 7545,33 , 7578,54 , 7632,18 , 7545,33 , 7578,54 , 7632,18 , 193,9 , 186,7 , 525,4 , 745,19 , 22,23 , {73,78,82}, 121,1 , 10041,49 , 8,5 , 4,0 , 3180,6 , 2666,4 , 2, 1, 7, 7, 7 }, // Nepali/Devanagari/India + { 85, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 188,8 , 188,8 , 495,10 , 478,17 , 37,5 , 8,10 , 2334,35 , 2269,51 , 2320,14 , 2334,35 , 2269,51 , 2320,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {78,79,75}, 190,2 , 10090,44 , 8,5 , 4,0 , 3191,12 , 3203,5 , 2, 0, 1, 6, 7 }, // Norwegian Bokmal/Latin/Norway + { 85, 7, 203, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 188,8 , 188,8 , 495,10 , 478,17 , 37,5 , 8,10 , 2334,35 , 2269,51 , 2320,14 , 2334,35 , 2269,51 , 2320,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {78,79,75}, 190,2 , 10090,44 , 8,5 , 4,0 , 3191,12 , 3208,21 , 2, 0, 1, 6, 7 }, // Norwegian Bokmal/Latin/Svalbard And Jan Mayen Islands { 86, 7, 74, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Occitan/Latin/France - { 87, 26, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 542,8 , 550,7 , 547,6 , 35,18 , 18,7 , 25,12 , 7650,33 , 7683,54 , 7737,18 , 7650,33 , 7683,54 , 7737,18 , 0,2 , 0,2 , 716,5 , 5,17 , 22,23 , {73,78,82}, 121,1 , 10135,43 , 4,4 , 13,6 , 3218,5 , 3223,4 , 2, 1, 7, 7, 7 }, // Oriya/Oriya/India - { 88, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 557,6 , 557,6 , 563,9 , 572,8 , 394,8 , 1048,20 , 55,4 , 403,11 , 7755,39 , 7755,39 , 85,14 , 7755,39 , 7755,39 , 85,14 , 207,4 , 197,4 , 721,5 , 5,17 , 22,23 , {65,70,78}, 268,1 , 10178,25 , 4,4 , 13,6 , 3227,4 , 3231,9 , 0, 0, 6, 4, 5 }, // Pashto/Arabic/Afghanistan - { 88, 1, 163, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 557,6 , 557,6 , 563,9 , 572,8 , 394,8 , 1048,20 , 18,7 , 25,12 , 7755,39 , 7755,39 , 85,14 , 7755,39 , 7755,39 , 85,14 , 207,4 , 197,4 , 721,5 , 5,17 , 22,23 , {80,75,82}, 176,2 , 10203,52 , 4,4 , 13,6 , 3227,4 , 3240,7 , 2, 0, 7, 6, 7 }, // Pashto/Arabic/Pakistan - { 89, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 580,7 , 580,7 , 587,8 , 595,7 , 394,8 , 97,16 , 55,4 , 403,11 , 7794,49 , 7794,49 , 7843,14 , 7794,49 , 7794,49 , 7843,14 , 211,9 , 201,8 , 726,4 , 730,44 , 22,23 , {73,82,82}, 269,4 , 10255,37 , 54,6 , 60,8 , 3247,5 , 3252,5 , 0, 0, 6, 5, 5 }, // Persian/Arabic/Iran - { 89, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 580,7 , 580,7 , 587,8 , 595,7 , 394,8 , 97,16 , 55,4 , 403,11 , 7794,49 , 7794,49 , 7843,14 , 7794,49 , 7794,49 , 7843,14 , 211,9 , 201,8 , 726,4 , 730,44 , 22,23 , {65,70,78}, 268,1 , 10292,55 , 8,5 , 60,8 , 3257,3 , 3231,9 , 0, 0, 6, 4, 5 }, // Persian/Arabic/Afghanistan - { 90, 7, 172, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 158,7 , 158,7 , 495,10 , 10,17 , 37,5 , 8,10 , 7857,34 , 7891,59 , 7950,14 , 7857,34 , 7891,59 , 7964,14 , 0,2 , 0,2 , 326,5 , 5,17 , 22,23 , {80,76,78}, 273,2 , 10347,77 , 19,5 , 24,7 , 3260,6 , 3266,6 , 2, 1, 1, 6, 7 }, // Polish/Latin/Poland - { 91, 7, 30, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 249,7 , 249,7 , 119,10 , 669,27 , 37,5 , 8,10 , 7978,35 , 8013,79 , 8092,14 , 7978,35 , 8013,79 , 8092,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {66,82,76}, 275,2 , 10424,54 , 8,5 , 4,0 , 3272,9 , 3281,6 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Brazil - { 91, 7, 6, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {65,79,65}, 254,2 , 10478,54 , 19,5 , 24,7 , 3272,9 , 3287,6 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Angola - { 91, 7, 39, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {67,86,69}, 277,1 , 10532,69 , 19,5 , 24,7 , 3272,9 , 3293,10 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Cape Verde - { 91, 7, 62, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 10601,81 , 19,5 , 24,7 , 3272,9 , 3303,11 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/East Timor - { 91, 7, 66, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {88,65,70}, 32,4 , 10682,59 , 19,5 , 24,7 , 3272,9 , 3314,16 , 0, 0, 1, 6, 7 }, // Portuguese/Latin/Equatorial Guinea - { 91, 7, 92, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {88,79,70}, 207,3 , 10741,62 , 19,5 , 24,7 , 3272,9 , 3330,12 , 0, 0, 1, 6, 7 }, // Portuguese/Latin/Guinea Bissau - { 91, 7, 125, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 3272,9 , 3342,10 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Luxembourg - { 91, 7, 126, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 18,7 , 25,12 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {77,79,80}, 137,4 , 10803,54 , 19,5 , 24,7 , 3272,9 , 3352,19 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Macau - { 91, 7, 146, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {77,90,78}, 278,3 , 10857,66 , 19,5 , 24,7 , 3272,9 , 3371,10 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Mozambique - { 91, 7, 173, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 3381,17 , 3398,8 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Portugal - { 91, 7, 185, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {83,84,78}, 281,2 , 10923,92 , 19,5 , 24,7 , 3272,9 , 3406,19 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Sao Tome And Principe - { 91, 7, 206, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 220,8 , 209,8 , 0,5 , 5,17 , 22,23 , {67,72,70}, 224,3 , 11015,45 , 19,5 , 24,7 , 3272,9 , 3425,5 , 2, 0, 1, 6, 7 }, // Portuguese/Latin/Switzerland - { 92, 4, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 602,9 , 602,9 , 269,6 , 10,17 , 18,7 , 25,12 , 8155,36 , 8191,57 , 8248,23 , 8155,36 , 8191,57 , 8248,23 , 228,6 , 217,6 , 774,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 11060,39 , 8,5 , 4,0 , 3430,6 , 3436,4 , 2, 1, 7, 7, 7 }, // Punjabi/Gurmukhi/India - { 92, 1, 163, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 553,18 , 18,7 , 25,12 , 8271,37 , 8271,37 , 85,14 , 8271,37 , 8271,37 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,75,82}, 283,1 , 11099,13 , 8,5 , 4,0 , 3440,6 , 3240,7 , 2, 0, 7, 6, 7 }, // Punjabi/Arabic/Pakistan - { 93, 7, 169, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 192,18 , 37,5 , 8,10 , 8308,28 , 8336,53 , 8389,14 , 8308,28 , 8336,53 , 8389,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {80,69,78}, 284,2 , 11112,29 , 8,5 , 4,0 , 3446,8 , 3454,4 , 2, 1, 7, 6, 7 }, // Quechua/Latin/Peru - { 93, 7, 26, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 192,18 , 37,5 , 8,10 , 8308,28 , 8336,53 , 8389,14 , 8308,28 , 8336,53 , 8389,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {66,79,66}, 286,2 , 11141,25 , 8,5 , 4,0 , 3446,8 , 3458,7 , 2, 1, 1, 6, 7 }, // Quechua/Latin/Bolivia - { 93, 7, 63, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 192,18 , 37,5 , 8,10 , 8308,28 , 8336,53 , 8389,14 , 8308,28 , 8336,53 , 8389,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 11166,37 , 8,5 , 4,0 , 3446,8 , 3465,7 , 2, 1, 1, 6, 7 }, // Quechua/Latin/Ecuador - { 94, 7, 206, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 339,8 , 1068,23 , 37,5 , 8,10 , 8403,23 , 8426,56 , 8482,14 , 8403,23 , 8426,56 , 8482,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,72,70}, 224,3 , 11203,46 , 19,5 , 4,0 , 3472,9 , 3481,6 , 2, 0, 1, 6, 7 }, // Romansh/Latin/Switzerland - { 95, 7, 177, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 611,8 , 611,8 , 495,10 , 10,17 , 37,5 , 8,10 , 8496,34 , 8530,48 , 3107,14 , 8496,34 , 8530,48 , 3107,14 , 64,4 , 61,4 , 778,4 , 5,17 , 22,23 , {82,79,78}, 288,3 , 11249,57 , 19,5 , 24,7 , 3487,6 , 3493,7 , 2, 1, 1, 6, 7 }, // Romanian/Latin/Romania - { 95, 7, 141, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 611,8 , 611,8 , 495,10 , 10,17 , 37,5 , 8,10 , 8578,28 , 8530,48 , 8606,16 , 8578,28 , 8530,48 , 8606,16 , 64,4 , 61,4 , 778,4 , 5,17 , 22,23 , {77,68,76}, 291,1 , 11306,69 , 19,5 , 24,7 , 3487,6 , 3500,17 , 2, 1, 1, 6, 7 }, // Romanian/Latin/Moldova - { 96, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 680,17 , 22,23 , {82,85,66}, 123,1 , 11375,89 , 19,5 , 4,0 , 3517,7 , 3524,6 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Russia - { 96, 2, 20, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 680,17 , 22,23 , {66,89,78}, 0,2 , 11464,94 , 19,5 , 4,0 , 3517,7 , 510,8 , 2, 0, 1, 6, 7 }, // Russian/Cyrillic/Belarus - { 96, 2, 110, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 680,17 , 22,23 , {75,90,84}, 244,1 , 11558,83 , 19,5 , 4,0 , 3517,7 , 3530,9 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Kazakhstan - { 96, 2, 116, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 680,17 , 22,23 , {75,71,83}, 245,3 , 11641,82 , 19,5 , 4,0 , 3517,7 , 3539,8 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Kyrgyzstan - { 96, 2, 141, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 680,17 , 22,23 , {77,68,76}, 291,1 , 11723,79 , 19,5 , 4,0 , 3517,7 , 3547,7 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Moldova - { 96, 2, 222, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 680,17 , 22,23 , {85,65,72}, 292,1 , 11802,92 , 19,5 , 4,0 , 3517,7 , 3554,7 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Ukraine - { 98, 7, 41, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 8719,28 , 8747,66 , 8813,14 , 8719,28 , 8747,66 , 8813,14 , 234,2 , 223,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 11894,25 , 4,4 , 44,5 , 3561,5 , 3566,22 , 0, 0, 1, 6, 7 }, // Sango/Latin/Central African Republic - { 99, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 7, 7 }, // Sanskrit/Devanagari/India - { 100, 2, 243, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8827,28 , 8855,52 , 8907,14 , 8827,28 , 8855,52 , 8907,14 , 236,9 , 225,8 , 782,7 , 5,17 , 22,23 , {82,83,68}, 293,3 , 11919,58 , 19,5 , 24,7 , 3588,6 , 3594,6 , 0, 0, 1, 6, 7 }, // Serbian/Cyrillic/Serbia - { 100, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 158,7 , 158,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8921,26 , 8947,57 , 2129,14 , 8921,26 , 8947,57 , 2129,14 , 245,11 , 233,8 , 319,7 , 5,17 , 22,23 , {66,65,77}, 144,2 , 11977,174 , 19,5 , 24,7 , 3600,6 , 629,19 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Bosnia And Herzegowina - { 100, 7, 242, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 158,7 , 158,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 9004,28 , 8947,57 , 2129,14 , 9004,28 , 8947,57 , 2129,14 , 245,11 , 233,8 , 319,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12151,23 , 19,5 , 24,7 , 3600,6 , 3606,9 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Montenegro - { 100, 7, 243, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 158,7 , 158,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 9004,28 , 9032,54 , 2129,14 , 9004,28 , 9032,54 , 2129,14 , 256,9 , 233,8 , 319,7 , 5,17 , 22,23 , {82,83,68}, 293,3 , 12174,58 , 19,5 , 24,7 , 3600,6 , 3615,6 , 0, 0, 1, 6, 7 }, // Serbian/Latin/Serbia - { 100, 2, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 9086,26 , 9112,55 , 8907,14 , 9086,26 , 9112,55 , 8907,14 , 265,11 , 225,8 , 782,7 , 5,17 , 22,23 , {66,65,77}, 296,2 , 12232,174 , 19,5 , 24,7 , 3588,6 , 3621,19 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Bosnia And Herzegowina - { 100, 2, 242, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8827,28 , 9112,55 , 8907,14 , 8827,28 , 9112,55 , 8907,14 , 265,11 , 225,8 , 782,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12406,23 , 19,5 , 24,7 , 3588,6 , 3640,9 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Montenegro - { 100, 2, 257, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8827,28 , 8855,52 , 8907,14 , 8827,28 , 8855,52 , 8907,14 , 236,9 , 225,8 , 782,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12406,23 , 19,5 , 24,7 , 3588,6 , 3649,6 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Kosovo - { 100, 7, 257, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 158,7 , 158,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 9004,28 , 9032,54 , 2129,14 , 9004,28 , 9032,54 , 2129,14 , 256,9 , 233,8 , 319,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12151,23 , 19,5 , 24,7 , 3600,6 , 3655,6 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Kosovo - { 101, 2, 81, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 619,9 , 619,9 , 156,8 , 1118,23 , 37,5 , 8,10 , 9167,28 , 9195,61 , 9256,14 , 9270,28 , 9298,61 , 9256,14 , 276,15 , 241,15 , 45,4 , 5,17 , 22,23 , {71,69,76}, 231,1 , 12429,17 , 8,5 , 4,0 , 3661,4 , 3665,11 , 2, 1, 1, 6, 7 }, // Ossetic/Cyrillic/Georgia - { 101, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 619,9 , 619,9 , 156,8 , 1118,23 , 37,5 , 8,10 , 9167,28 , 9195,61 , 9256,14 , 9270,28 , 9298,61 , 9256,14 , 276,15 , 241,15 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 12446,17 , 8,5 , 4,0 , 3661,4 , 3676,6 , 2, 1, 1, 6, 7 }, // Ossetic/Cyrillic/Russia + { 87, 26, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 541,8 , 549,7 , 547,6 , 35,18 , 18,7 , 25,12 , 7650,33 , 7683,54 , 7737,18 , 7650,33 , 7683,54 , 7737,18 , 0,2 , 0,2 , 764,5 , 5,17 , 22,23 , {73,78,82}, 121,1 , 10134,43 , 4,4 , 13,6 , 3229,5 , 3234,4 , 2, 1, 7, 7, 7 }, // Oriya/Oriya/India + { 88, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 556,6 , 556,6 , 562,9 , 571,8 , 394,8 , 1048,20 , 55,4 , 198,11 , 7755,39 , 7755,39 , 85,14 , 7755,39 , 7755,39 , 85,14 , 202,4 , 193,4 , 769,5 , 5,17 , 22,23 , {65,70,78}, 272,1 , 10177,25 , 4,4 , 13,6 , 3238,4 , 3242,9 , 0, 0, 6, 4, 5 }, // Pashto/Arabic/Afghanistan + { 88, 1, 163, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 556,6 , 556,6 , 562,9 , 571,8 , 394,8 , 1048,20 , 18,7 , 25,12 , 7755,39 , 7755,39 , 85,14 , 7755,39 , 7755,39 , 85,14 , 202,4 , 193,4 , 769,5 , 5,17 , 22,23 , {80,75,82}, 176,2 , 10202,52 , 4,4 , 13,6 , 3238,4 , 3251,7 , 2, 0, 7, 6, 7 }, // Pashto/Arabic/Pakistan + { 89, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 579,7 , 579,7 , 586,8 , 594,7 , 394,8 , 97,16 , 55,4 , 198,11 , 7794,49 , 7794,49 , 7843,14 , 7794,49 , 7794,49 , 7843,14 , 206,9 , 197,8 , 774,4 , 778,42 , 22,23 , {73,82,82}, 273,4 , 10254,37 , 54,6 , 60,8 , 3258,5 , 3263,5 , 0, 0, 6, 5, 5 }, // Persian/Arabic/Iran + { 89, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 579,7 , 579,7 , 586,8 , 594,7 , 394,8 , 97,16 , 55,4 , 198,11 , 7794,49 , 7794,49 , 7843,14 , 7794,49 , 7794,49 , 7843,14 , 206,9 , 197,8 , 774,4 , 778,42 , 22,23 , {65,70,78}, 272,1 , 10291,55 , 8,5 , 60,8 , 3268,3 , 3242,9 , 0, 0, 6, 4, 5 }, // Persian/Arabic/Afghanistan + { 90, 7, 172, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 159,7 , 159,7 , 495,10 , 10,17 , 37,5 , 8,10 , 7857,34 , 7891,59 , 7950,14 , 7857,34 , 7891,59 , 7964,14 , 0,2 , 0,2 , 305,5 , 5,17 , 22,23 , {80,76,78}, 277,2 , 10346,77 , 19,5 , 24,7 , 3271,6 , 3277,6 , 2, 1, 1, 6, 7 }, // Polish/Latin/Poland + { 91, 7, 30, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 250,7 , 250,7 , 119,10 , 669,27 , 37,5 , 8,10 , 7978,35 , 8013,79 , 8092,14 , 7978,35 , 8013,79 , 8092,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {66,82,76}, 279,2 , 10423,54 , 8,5 , 4,0 , 3283,9 , 3292,6 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Brazil + { 91, 7, 6, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {65,79,65}, 258,2 , 10477,54 , 19,5 , 24,7 , 3283,9 , 3298,6 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Angola + { 91, 7, 39, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {67,86,69}, 281,1 , 10531,69 , 19,5 , 24,7 , 3283,9 , 3304,10 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Cape Verde + { 91, 7, 62, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {85,83,68}, 159,3 , 10600,81 , 19,5 , 24,7 , 3283,9 , 3314,11 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/East Timor + { 91, 7, 66, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {88,65,70}, 32,4 , 10681,59 , 19,5 , 24,7 , 3283,9 , 3325,16 , 0, 0, 1, 6, 7 }, // Portuguese/Latin/Equatorial Guinea + { 91, 7, 92, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {88,79,70}, 207,3 , 10740,62 , 19,5 , 24,7 , 3283,9 , 3341,12 , 0, 0, 1, 6, 7 }, // Portuguese/Latin/Guinea Bissau + { 91, 7, 125, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 3283,9 , 3353,10 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Luxembourg + { 91, 7, 126, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 18,7 , 25,12 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {77,79,80}, 137,4 , 10802,54 , 19,5 , 24,7 , 3283,9 , 3363,19 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Macau + { 91, 7, 146, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {77,90,78}, 282,3 , 10856,66 , 19,5 , 24,7 , 3283,9 , 3382,10 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Mozambique + { 91, 7, 173, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 24,7 , 3392,17 , 3409,8 , 2, 1, 7, 6, 7 }, // Portuguese/Latin/Portugal + { 91, 7, 185, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {83,84,78}, 285,2 , 10922,92 , 19,5 , 24,7 , 3283,9 , 3417,19 , 2, 1, 1, 6, 7 }, // Portuguese/Latin/Sao Tome And Principe + { 91, 7, 206, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 669,27 , 37,5 , 8,10 , 8106,49 , 8013,79 , 8092,14 , 8106,49 , 8013,79 , 8092,14 , 215,8 , 205,8 , 0,5 , 5,17 , 22,23 , {67,72,70}, 228,3 , 11014,45 , 19,5 , 24,7 , 3283,9 , 3436,5 , 2, 0, 1, 6, 7 }, // Portuguese/Latin/Switzerland + { 92, 4, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 601,9 , 601,9 , 269,6 , 10,17 , 18,7 , 25,12 , 8155,36 , 8191,57 , 8248,23 , 8155,36 , 8191,57 , 8248,23 , 223,6 , 213,6 , 820,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 11059,39 , 8,5 , 4,0 , 3441,6 , 3447,4 , 2, 1, 7, 7, 7 }, // Punjabi/Gurmukhi/India + { 92, 1, 163, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 553,18 , 18,7 , 25,12 , 8271,37 , 8271,37 , 85,14 , 8271,37 , 8271,37 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,75,82}, 287,1 , 11098,13 , 8,5 , 4,0 , 3451,6 , 3251,7 , 2, 0, 7, 6, 7 }, // Punjabi/Arabic/Pakistan + { 93, 7, 169, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 192,18 , 37,5 , 8,10 , 8308,28 , 8336,53 , 8389,14 , 8308,28 , 8336,53 , 8389,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {80,69,78}, 288,2 , 11111,29 , 8,5 , 4,0 , 3457,8 , 3465,4 , 2, 1, 7, 6, 7 }, // Quechua/Latin/Peru + { 93, 7, 26, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 192,18 , 37,5 , 8,10 , 8308,28 , 8336,53 , 8389,14 , 8308,28 , 8336,53 , 8389,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {66,79,66}, 290,2 , 11140,25 , 8,5 , 4,0 , 3457,8 , 3469,7 , 2, 1, 1, 6, 7 }, // Quechua/Latin/Bolivia + { 93, 7, 63, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 192,18 , 37,5 , 8,10 , 8308,28 , 8336,53 , 8389,14 , 8308,28 , 8336,53 , 8389,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 11165,37 , 8,5 , 4,0 , 3457,8 , 3476,7 , 2, 1, 1, 6, 7 }, // Quechua/Latin/Ecuador + { 94, 7, 206, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 250,7 , 250,7 , 339,8 , 1068,23 , 37,5 , 8,10 , 8403,23 , 8426,56 , 8482,14 , 8403,23 , 8426,56 , 8482,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {67,72,70}, 228,3 , 11202,48 , 19,5 , 4,0 , 3483,9 , 3492,6 , 2, 0, 1, 6, 7 }, // Romansh/Latin/Switzerland + { 95, 7, 177, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 610,8 , 610,8 , 495,10 , 10,17 , 37,5 , 8,10 , 8496,34 , 8530,48 , 3107,14 , 8496,34 , 8530,48 , 3107,14 , 64,4 , 61,4 , 824,4 , 5,17 , 22,23 , {82,79,78}, 292,3 , 11250,57 , 19,5 , 24,7 , 3498,6 , 3504,7 , 2, 1, 1, 6, 7 }, // Romanian/Latin/Romania + { 95, 7, 141, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 610,8 , 610,8 , 495,10 , 10,17 , 37,5 , 8,10 , 8578,28 , 8530,48 , 8606,16 , 8578,28 , 8530,48 , 8606,16 , 64,4 , 61,4 , 824,4 , 5,17 , 22,23 , {77,68,76}, 295,1 , 11307,69 , 19,5 , 24,7 , 3498,6 , 3511,17 , 2, 1, 1, 6, 7 }, // Romanian/Latin/Moldova + { 96, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 728,17 , 22,23 , {82,85,66}, 123,1 , 11376,89 , 19,5 , 4,0 , 3528,7 , 3535,6 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Russia + { 96, 2, 20, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 728,17 , 22,23 , {66,89,78}, 0,2 , 11465,94 , 19,5 , 4,0 , 3528,7 , 510,8 , 2, 0, 1, 6, 7 }, // Russian/Cyrillic/Belarus + { 96, 2, 110, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 728,17 , 22,23 , {75,90,84}, 248,1 , 11559,83 , 19,5 , 4,0 , 3528,7 , 3541,9 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Kazakhstan + { 96, 2, 116, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 728,17 , 22,23 , {75,71,83}, 249,3 , 11642,82 , 19,5 , 4,0 , 3528,7 , 3550,8 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Kyrgyzstan + { 96, 2, 141, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 728,17 , 22,23 , {77,68,76}, 295,1 , 11724,79 , 19,5 , 4,0 , 3528,7 , 3558,7 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Moldova + { 96, 2, 222, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 111,7 , 111,7 , 495,10 , 317,22 , 37,5 , 8,10 , 8622,21 , 8643,62 , 8705,14 , 8622,21 , 8643,62 , 8622,21 , 0,2 , 0,2 , 269,5 , 728,17 , 22,23 , {85,65,72}, 296,1 , 11803,92 , 19,5 , 4,0 , 3528,7 , 3565,7 , 2, 1, 1, 6, 7 }, // Russian/Cyrillic/Ukraine + { 98, 7, 41, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 8719,28 , 8747,66 , 8813,14 , 8719,28 , 8747,66 , 8813,14 , 229,2 , 219,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 11895,25 , 4,4 , 44,5 , 3572,5 , 3577,22 , 0, 0, 1, 6, 7 }, // Sango/Latin/Central African Republic + { 99, 13, 100, 46, 44, 59, 37, 2406, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 618,10 , 628,9 , 269,6 , 10,17 , 18,7 , 25,12 , 4304,32 , 8827,67 , 4389,19 , 4304,32 , 8827,67 , 4389,19 , 193,9 , 186,7 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 11920,37 , 8,5 , 4,0 , 3599,12 , 3611,5 , 2, 1, 7, 7, 7 }, // Sanskrit/Devanagari/India + { 100, 2, 243, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8894,28 , 8922,52 , 8974,14 , 8894,28 , 8922,52 , 8974,14 , 231,9 , 221,8 , 828,7 , 5,17 , 22,23 , {82,83,68}, 297,3 , 11957,58 , 19,5 , 24,7 , 3616,6 , 3622,6 , 0, 0, 1, 6, 7 }, // Serbian/Cyrillic/Serbia + { 100, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 2043,28 , 2071,58 , 2129,14 , 8988,28 , 2071,58 , 2129,14 , 240,11 , 229,8 , 298,7 , 5,17 , 22,23 , {66,65,77}, 144,2 , 12015,170 , 19,5 , 24,7 , 3628,6 , 629,19 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Bosnia And Herzegowina + { 100, 7, 242, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8988,28 , 9016,57 , 2129,14 , 8988,28 , 9016,57 , 2129,14 , 240,11 , 229,8 , 298,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12185,23 , 19,5 , 24,7 , 3628,6 , 3634,9 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Montenegro + { 100, 7, 243, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8988,28 , 9073,54 , 2129,14 , 8988,28 , 9073,54 , 2129,14 , 251,9 , 229,8 , 298,7 , 5,17 , 22,23 , {82,83,68}, 297,3 , 12208,58 , 19,5 , 24,7 , 3628,6 , 3643,6 , 0, 0, 1, 6, 7 }, // Serbian/Latin/Serbia + { 100, 2, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 9127,28 , 9155,56 , 8974,14 , 8894,28 , 9155,56 , 8974,14 , 260,11 , 221,8 , 828,7 , 5,17 , 22,23 , {66,65,77}, 300,2 , 12266,170 , 19,5 , 24,7 , 3616,6 , 3649,19 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Bosnia And Herzegowina + { 100, 2, 242, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8894,28 , 9211,55 , 8974,14 , 8894,28 , 9211,55 , 8974,14 , 260,11 , 221,8 , 828,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12436,23 , 19,5 , 24,7 , 3616,6 , 3668,9 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Montenegro + { 100, 2, 257, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8894,28 , 8922,52 , 8974,14 , 8894,28 , 8922,52 , 8974,14 , 231,9 , 221,8 , 828,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12436,23 , 19,5 , 24,7 , 3616,6 , 3677,6 , 2, 1, 1, 6, 7 }, // Serbian/Cyrillic/Kosovo + { 100, 7, 257, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8216, 8216, 0,6 , 0,6 , 159,7 , 159,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 8988,28 , 9073,54 , 2129,14 , 8988,28 , 9073,54 , 2129,14 , 251,9 , 229,8 , 298,7 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12185,23 , 19,5 , 24,7 , 3628,6 , 3683,6 , 2, 1, 1, 6, 7 }, // Serbian/Latin/Kosovo + { 101, 2, 81, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 637,9 , 637,9 , 156,8 , 1118,23 , 37,5 , 8,10 , 9266,28 , 9294,61 , 9355,14 , 9369,28 , 9397,61 , 9355,14 , 271,15 , 237,15 , 45,4 , 5,17 , 22,23 , {71,69,76}, 235,1 , 12459,17 , 8,5 , 4,0 , 3689,4 , 3693,11 , 2, 1, 1, 6, 7 }, // Ossetic/Cyrillic/Georgia + { 101, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 637,9 , 637,9 , 156,8 , 1118,23 , 37,5 , 8,10 , 9266,28 , 9294,61 , 9355,14 , 9369,28 , 9397,61 , 9355,14 , 271,15 , 237,15 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 12476,17 , 8,5 , 4,0 , 3689,4 , 3704,6 , 2, 1, 1, 6, 7 }, // Ossetic/Cyrillic/Russia { 102, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Southern Sotho/Latin/South Africa { 103, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Tswana/Latin/South Africa - { 104, 7, 240, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 9359,28 , 9387,55 , 9442,14 , 9359,28 , 9387,55 , 9442,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 12463,22 , 4,4 , 13,6 , 3682,8 , 1815,8 , 2, 1, 7, 6, 7 }, // Shona/Latin/Zimbabwe - { 105, 1, 163, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 628,8 , 636,7 , 53,10 , 63,17 , 18,7 , 25,12 , 9456,35 , 9456,35 , 9491,31 , 9456,35 , 9456,35 , 9491,31 , 291,11 , 256,11 , 789,6 , 795,61 , 22,23 , {80,75,82}, 176,2 , 12485,43 , 19,5 , 4,0 , 3690,4 , 3694,7 , 2, 0, 7, 6, 7 }, // Sindhi/Arabic/Pakistan - { 105, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 269,6 , 10,17 , 359,7 , 414,12 , 9522,25 , 9547,27 , 9574,20 , 9594,28 , 9622,41 , 9663,19 , 302,16 , 267,13 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 12528,24 , 8,5 , 4,0 , 3701,6 , 2662,4 , 2, 1, 7, 7, 7 }, // Sindhi/Devanagari/India - { 106, 32, 198, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 643,9 , 652,8 , 53,10 , 63,17 , 205,5 , 210,10 , 9682,39 , 9721,62 , 9783,19 , 9682,39 , 9721,62 , 9783,19 , 318,5 , 280,4 , 856,5 , 861,42 , 22,23 , {76,75,82}, 298,3 , 12552,58 , 4,4 , 13,6 , 3707,5 , 3712,11 , 2, 1, 1, 6, 7 }, // Sinhala/Sinhala/Sri Lanka + { 104, 7, 240, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 9458,28 , 9486,55 , 9541,14 , 9458,28 , 9486,55 , 9541,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 12493,22 , 4,4 , 13,6 , 3710,8 , 1819,8 , 2, 1, 7, 6, 7 }, // Shona/Latin/Zimbabwe + { 105, 1, 163, 1643, 1644, 1563, 37, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 646,8 , 654,7 , 53,10 , 63,17 , 18,7 , 25,12 , 9555,35 , 9555,35 , 9590,31 , 9555,35 , 9555,35 , 9590,31 , 286,11 , 252,11 , 835,6 , 841,25 , 22,23 , {80,75,82}, 176,2 , 12515,43 , 19,5 , 4,0 , 3718,4 , 3722,7 , 2, 0, 7, 6, 7 }, // Sindhi/Arabic/Pakistan + { 105, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 269,6 , 10,17 , 393,7 , 437,12 , 9621,25 , 9646,27 , 9673,20 , 9693,28 , 9721,41 , 9762,19 , 297,16 , 263,13 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 12558,24 , 8,5 , 4,0 , 3729,6 , 2666,4 , 2, 1, 7, 7, 7 }, // Sindhi/Devanagari/India + { 106, 32, 198, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 661,9 , 670,8 , 53,10 , 63,17 , 239,5 , 244,10 , 9781,39 , 9820,62 , 9882,19 , 9781,39 , 9820,62 , 9882,19 , 313,5 , 276,4 , 866,5 , 871,42 , 22,23 , {76,75,82}, 302,3 , 12582,58 , 4,4 , 13,6 , 3735,5 , 3740,11 , 2, 1, 1, 6, 7 }, // Sinhala/Sinhala/Sri Lanka { 107, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Swati/Latin/South Africa - { 108, 7, 191, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 180,7 , 660,7 , 1141,10 , 478,17 , 55,4 , 59,9 , 9802,21 , 9823,52 , 9875,14 , 9802,21 , 9823,52 , 9875,14 , 0,2 , 0,2 , 326,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12610,26 , 19,5 , 24,7 , 3723,10 , 3733,9 , 2, 1, 1, 6, 7 }, // Slovak/Latin/Slovakia - { 109, 7, 192, 44, 46, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 667,8 , 667,8 , 1151,9 , 1160,19 , 37,5 , 8,10 , 9889,35 , 9924,52 , 9976,14 , 9889,35 , 9924,52 , 9976,14 , 60,4 , 284,4 , 54,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12636,28 , 19,5 , 24,7 , 3742,11 , 3753,9 , 2, 1, 1, 6, 7 }, // Slovenian/Latin/Slovenia - { 110, 7, 194, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 675,9 , 675,9 , 27,8 , 1179,19 , 18,7 , 25,12 , 9990,32 , 10022,47 , 10069,15 , 9990,32 , 10022,47 , 10069,15 , 323,2 , 288,2 , 903,6 , 909,17 , 22,23 , {83,79,83}, 94,1 , 12664,27 , 4,4 , 13,6 , 3762,8 , 3770,10 , 0, 0, 1, 6, 7 }, // Somali/Latin/Somalia - { 110, 7, 59, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 675,9 , 675,9 , 27,8 , 1179,19 , 18,7 , 25,12 , 9990,32 , 10022,47 , 10069,15 , 9990,32 , 10022,47 , 10069,15 , 323,2 , 288,2 , 903,6 , 909,17 , 22,23 , {68,74,70}, 38,3 , 12691,50 , 4,4 , 13,6 , 3762,8 , 3780,7 , 0, 0, 6, 6, 7 }, // Somali/Latin/Djibouti - { 110, 7, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 675,9 , 675,9 , 27,8 , 1179,19 , 18,7 , 25,12 , 9990,32 , 10022,47 , 10069,15 , 9990,32 , 10022,47 , 10069,15 , 323,2 , 288,2 , 903,6 , 909,17 , 22,23 , {69,84,66}, 0,2 , 12741,52 , 4,4 , 13,6 , 3762,8 , 3787,8 , 2, 1, 7, 6, 7 }, // Somali/Latin/Ethiopia - { 110, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 675,9 , 675,9 , 27,8 , 1179,19 , 37,5 , 8,10 , 9990,32 , 10022,47 , 10069,15 , 9990,32 , 10022,47 , 10069,15 , 323,2 , 288,2 , 903,6 , 909,17 , 22,23 , {75,69,83}, 2,3 , 12793,52 , 4,4 , 13,6 , 3762,8 , 1191,5 , 2, 1, 7, 6, 7 }, // Somali/Latin/Kenya - { 111, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 55,4 , 403,11 , 10084,35 , 10119,53 , 8389,14 , 10084,35 , 10119,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 4,0 , 3795,17 , 2427,6 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Spain - { 111, 7, 10, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {65,82,83}, 6,1 , 12845,51 , 8,5 , 37,7 , 3812,7 , 3819,9 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Argentina - { 111, 7, 22, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {66,90,68}, 6,1 , 12896,52 , 4,4 , 4,0 , 3812,7 , 3828,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Belize - { 111, 7, 26, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {66,79,66}, 286,2 , 12948,35 , 4,4 , 4,0 , 3812,7 , 3458,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Bolivia - { 111, 7, 30, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {66,82,76}, 275,2 , 12983,52 , 4,4 , 4,0 , 3812,7 , 3281,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Brazil - { 111, 7, 43, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 339,8 , 669,27 , 37,5 , 8,10 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,76,80}, 6,1 , 13035,45 , 4,4 , 4,0 , 3812,7 , 3834,5 , 0, 0, 1, 6, 7 }, // Spanish/Latin/Chile - { 111, 7, 47, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 571,7 , 669,27 , 18,7 , 25,12 , 10084,35 , 10119,53 , 4796,14 , 10084,35 , 10119,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,79,80}, 6,1 , 13080,54 , 4,4 , 4,0 , 3812,7 , 3839,8 , 2, 0, 7, 6, 7 }, // Spanish/Latin/Colombia - { 111, 7, 52, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,82,67}, 301,1 , 13134,67 , 4,4 , 4,0 , 3812,7 , 3847,10 , 2, 0, 1, 6, 7 }, // Spanish/Latin/Costa Rica - { 111, 7, 55, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {67,85,80}, 6,1 , 13201,42 , 4,4 , 4,0 , 3812,7 , 3857,4 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Cuba - { 111, 7, 61, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 18,7 , 25,12 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {68,79,80}, 302,3 , 13243,54 , 4,4 , 13,6 , 3812,7 , 3861,20 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Dominican Republic - { 111, 7, 63, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 13297,70 , 4,4 , 4,0 , 3812,7 , 3465,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Ecuador - { 111, 7, 65, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 13297,70 , 4,4 , 4,0 , 3812,7 , 3881,11 , 2, 1, 7, 6, 7 }, // Spanish/Latin/El Salvador - { 111, 7, 66, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 55,4 , 403,11 , 10084,35 , 10119,53 , 8389,14 , 10084,35 , 10119,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {88,65,70}, 32,4 , 13367,92 , 19,5 , 4,0 , 3812,7 , 3892,17 , 0, 0, 1, 6, 7 }, // Spanish/Latin/Equatorial Guinea - { 111, 7, 90, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 571,7 , 669,27 , 37,5 , 8,10 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {71,84,81}, 305,1 , 13459,30 , 4,4 , 4,0 , 3812,7 , 3909,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Guatemala - { 111, 7, 96, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 1198,27 , 37,5 , 8,10 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {72,78,76}, 291,1 , 13489,60 , 4,4 , 4,0 , 3812,7 , 3918,8 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Honduras - { 111, 7, 139, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 27,8 , 669,27 , 55,4 , 59,9 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {77,88,78}, 6,1 , 13549,48 , 4,4 , 4,0 , 3926,17 , 3943,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Mexico - { 111, 7, 155, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {78,73,79}, 306,2 , 13597,69 , 4,4 , 4,0 , 3812,7 , 3949,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Nicaragua - { 111, 7, 166, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 1225,8 , 669,27 , 18,7 , 25,12 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,65,66}, 308,3 , 13666,54 , 4,4 , 4,0 , 3812,7 , 3958,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Panama - { 111, 7, 168, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,89,71}, 311,3 , 13720,61 , 4,4 , 4,0 , 3812,7 , 3964,8 , 0, 0, 7, 6, 7 }, // Spanish/Latin/Paraguay - { 111, 7, 169, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 571,7 , 669,27 , 37,5 , 8,10 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,69,78}, 284,2 , 13781,43 , 4,4 , 4,0 , 3812,7 , 3454,4 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Peru - { 111, 7, 170, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 18,7 , 25,12 , 10084,35 , 10119,53 , 8389,14 , 10084,35 , 10119,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,72,80}, 179,1 , 13824,48 , 19,5 , 4,0 , 3812,7 , 3972,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Philippines - { 111, 7, 174, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 1225,8 , 669,27 , 18,7 , 25,12 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 13297,70 , 4,4 , 4,0 , 3812,7 , 1446,11 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Puerto Rico - { 111, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 684,7 , 684,7 , 415,8 , 669,27 , 18,7 , 25,12 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 13297,70 , 4,4 , 4,0 , 3812,7 , 3981,14 , 2, 1, 7, 6, 7 }, // Spanish/Latin/United States - { 111, 7, 227, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,89,85}, 6,1 , 13872,48 , 8,5 , 37,7 , 3812,7 , 3995,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Uruguay - { 111, 7, 231, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 18,7 , 25,12 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {86,69,83}, 314,4 , 13920,58 , 4,4 , 4,0 , 3812,7 , 4002,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Venezuela - { 111, 7, 238, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 55,4 , 403,11 , 10084,35 , 10119,53 , 8389,14 , 10084,35 , 10119,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 4,0 , 3812,7 , 4011,8 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Canary Islands - { 111, 7, 246, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10084,35 , 10119,53 , 3107,14 , 10084,35 , 10119,53 , 4796,14 , 64,4 , 61,4 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 4,4 , 4,0 , 4019,23 , 4042,13 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Latin America - { 111, 7, 250, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 669,27 , 55,4 , 403,11 , 10084,35 , 10119,53 , 8389,14 , 10084,35 , 10119,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 4,0 , 3812,7 , 4055,15 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Ceuta And Melilla - { 112, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 691,13 , 704,12 , 269,6 , 10,17 , 220,4 , 224,9 , 10172,28 , 10200,44 , 4697,14 , 10172,28 , 10200,44 , 4697,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,68,82}, 238,2 , 13978,37 , 8,5 , 4,0 , 4070,10 , 0,0 , 2, 0, 7, 6, 7 }, // Sundanese/Latin/Indonesia - { 113, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 716,8 , 716,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10244,60 , 10244,60 , 85,14 , 10244,60 , 10244,60 , 85,14 , 0,2 , 0,2 , 627,5 , 926,51 , 22,23 , {84,90,83}, 192,3 , 14015,67 , 8,5 , 4,0 , 4080,9 , 1620,8 , 2, 0, 1, 6, 7 }, // Swahili/Latin/Tanzania - { 113, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 716,8 , 716,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10244,60 , 10244,60 , 85,14 , 10244,60 , 10244,60 , 85,14 , 0,2 , 0,2 , 627,5 , 926,51 , 22,23 , {67,68,70}, 210,2 , 14082,55 , 8,5 , 4,0 , 4080,9 , 4089,32 , 2, 1, 1, 6, 7 }, // Swahili/Latin/Congo Kinshasa - { 113, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 716,8 , 716,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10244,60 , 10244,60 , 85,14 , 10244,60 , 10244,60 , 85,14 , 0,2 , 0,2 , 627,5 , 926,51 , 22,23 , {75,69,83}, 2,3 , 14137,58 , 8,5 , 4,0 , 4080,9 , 1191,5 , 2, 1, 7, 6, 7 }, // Swahili/Latin/Kenya - { 113, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 716,8 , 716,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10244,60 , 10244,60 , 85,14 , 10244,60 , 10244,60 , 85,14 , 0,2 , 0,2 , 627,5 , 926,51 , 22,23 , {85,71,88}, 197,3 , 14195,61 , 8,5 , 4,0 , 4080,9 , 1685,6 , 0, 0, 1, 7, 7 }, // Swahili/Latin/Uganda - { 114, 7, 205, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 724,9 , 724,9 , 53,10 , 97,16 , 37,5 , 426,16 , 10304,29 , 10333,50 , 2320,14 , 10304,29 , 10333,50 , 2320,14 , 325,2 , 290,2 , 45,4 , 5,17 , 22,23 , {83,69,75}, 190,2 , 14256,45 , 19,5 , 4,0 , 4121,7 , 4128,7 , 2, 0, 1, 6, 7 }, // Swedish/Latin/Sweden - { 114, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 724,9 , 724,9 , 53,10 , 97,16 , 37,5 , 426,16 , 10304,29 , 10333,50 , 2320,14 , 10304,29 , 10333,50 , 2320,14 , 325,2 , 290,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9131,19 , 19,5 , 4,0 , 4121,7 , 1088,7 , 2, 1, 1, 6, 7 }, // Swedish/Latin/Finland - { 114, 7, 248, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 724,9 , 724,9 , 53,10 , 97,16 , 37,5 , 426,16 , 10304,29 , 10333,50 , 2320,14 , 10304,29 , 10333,50 , 2320,14 , 325,2 , 290,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9131,19 , 19,5 , 4,0 , 4121,7 , 4135,5 , 2, 1, 1, 6, 7 }, // Swedish/Latin/Aland Islands + { 108, 7, 191, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 181,7 , 678,7 , 1141,10 , 478,17 , 55,4 , 59,9 , 9901,21 , 9922,52 , 9974,14 , 9901,21 , 9922,52 , 9974,14 , 0,2 , 0,2 , 305,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12640,26 , 19,5 , 24,7 , 3751,10 , 3761,9 , 2, 1, 1, 6, 7 }, // Slovak/Latin/Slovakia + { 109, 7, 192, 44, 46, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 685,8 , 685,8 , 1151,9 , 1160,19 , 37,5 , 8,10 , 9988,35 , 10023,52 , 10075,14 , 9988,35 , 10023,52 , 10075,14 , 60,4 , 280,4 , 54,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 12666,28 , 19,5 , 24,7 , 3770,11 , 3781,9 , 2, 1, 1, 6, 7 }, // Slovenian/Latin/Slovenia + { 110, 7, 194, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 693,9 , 693,9 , 27,8 , 1179,19 , 18,7 , 25,12 , 10089,32 , 10121,47 , 10168,15 , 10089,32 , 10121,47 , 10168,15 , 318,2 , 284,2 , 913,6 , 919,17 , 22,23 , {83,79,83}, 94,1 , 12694,27 , 4,4 , 13,6 , 3790,8 , 3798,10 , 0, 0, 1, 6, 7 }, // Somali/Latin/Somalia + { 110, 7, 59, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 693,9 , 693,9 , 27,8 , 1179,19 , 18,7 , 25,12 , 10089,32 , 10121,47 , 10168,15 , 10089,32 , 10121,47 , 10168,15 , 318,2 , 284,2 , 913,6 , 919,17 , 22,23 , {68,74,70}, 38,3 , 12721,50 , 4,4 , 13,6 , 3790,8 , 3808,7 , 0, 0, 6, 6, 7 }, // Somali/Latin/Djibouti + { 110, 7, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 693,9 , 693,9 , 27,8 , 1179,19 , 18,7 , 25,12 , 10089,32 , 10121,47 , 10168,15 , 10089,32 , 10121,47 , 10168,15 , 318,2 , 284,2 , 913,6 , 919,17 , 22,23 , {69,84,66}, 0,2 , 12771,52 , 4,4 , 13,6 , 3790,8 , 3815,8 , 2, 1, 7, 6, 7 }, // Somali/Latin/Ethiopia + { 110, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 693,9 , 693,9 , 27,8 , 1179,19 , 37,5 , 8,10 , 10089,32 , 10121,47 , 10168,15 , 10089,32 , 10121,47 , 10168,15 , 318,2 , 284,2 , 913,6 , 919,17 , 22,23 , {75,69,83}, 2,3 , 12823,52 , 4,4 , 13,6 , 3790,8 , 1191,5 , 2, 1, 7, 6, 7 }, // Somali/Latin/Kenya + { 111, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 55,4 , 198,11 , 10183,28 , 10211,53 , 8389,14 , 10183,28 , 10211,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 4,0 , 3823,17 , 2431,6 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Spain + { 111, 7, 10, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {65,82,83}, 6,1 , 12875,51 , 8,5 , 37,7 , 3840,7 , 3847,9 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Argentina + { 111, 7, 22, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {66,90,68}, 6,1 , 12926,52 , 4,4 , 4,0 , 3840,7 , 3856,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Belize + { 111, 7, 26, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {66,79,66}, 290,2 , 12978,35 , 4,4 , 4,0 , 3840,7 , 3469,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Bolivia + { 111, 7, 30, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {66,82,76}, 279,2 , 13013,52 , 4,4 , 4,0 , 3840,7 , 3292,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Brazil + { 111, 7, 43, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 339,8 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,76,80}, 6,1 , 13065,45 , 4,4 , 4,0 , 3840,7 , 3862,5 , 0, 0, 1, 6, 7 }, // Spanish/Latin/Chile + { 111, 7, 47, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 571,7 , 669,27 , 18,7 , 25,12 , 10264,35 , 10211,53 , 4796,14 , 10183,28 , 10211,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,79,80}, 6,1 , 13110,54 , 4,4 , 4,0 , 3840,7 , 3867,8 , 2, 0, 7, 6, 7 }, // Spanish/Latin/Colombia + { 111, 7, 52, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,82,67}, 305,1 , 13164,67 , 4,4 , 4,0 , 3840,7 , 3875,10 , 2, 0, 1, 6, 7 }, // Spanish/Latin/Costa Rica + { 111, 7, 55, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {67,85,80}, 6,1 , 13231,42 , 4,4 , 4,0 , 3840,7 , 3885,4 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Cuba + { 111, 7, 61, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 18,7 , 25,12 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {68,79,80}, 306,3 , 13273,54 , 4,4 , 13,6 , 3840,7 , 3889,20 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Dominican Republic + { 111, 7, 63, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 13327,70 , 4,4 , 4,0 , 3840,7 , 3476,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Ecuador + { 111, 7, 65, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 13327,70 , 4,4 , 4,0 , 3840,7 , 3909,11 , 2, 1, 7, 6, 7 }, // Spanish/Latin/El Salvador + { 111, 7, 66, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 55,4 , 198,11 , 10183,28 , 10211,53 , 8389,14 , 10183,28 , 10211,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {88,65,70}, 32,4 , 13397,92 , 19,5 , 4,0 , 3840,7 , 3920,17 , 0, 0, 1, 6, 7 }, // Spanish/Latin/Equatorial Guinea + { 111, 7, 90, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 571,7 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {71,84,81}, 309,1 , 13489,30 , 4,4 , 4,0 , 3840,7 , 3937,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Guatemala + { 111, 7, 96, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 1198,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {72,78,76}, 295,1 , 13519,60 , 4,4 , 4,0 , 3840,7 , 3946,8 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Honduras + { 111, 7, 139, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 27,8 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {77,88,78}, 6,1 , 13579,48 , 4,4 , 4,0 , 3954,17 , 3971,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Mexico + { 111, 7, 155, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {78,73,79}, 310,2 , 13627,69 , 4,4 , 4,0 , 3840,7 , 3977,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Nicaragua + { 111, 7, 166, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 1225,8 , 669,27 , 18,7 , 25,12 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,65,66}, 312,3 , 13696,54 , 4,4 , 4,0 , 3840,7 , 3986,6 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Panama + { 111, 7, 168, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,89,71}, 315,3 , 13750,61 , 4,4 , 4,0 , 3840,7 , 3992,8 , 0, 0, 7, 6, 7 }, // Spanish/Latin/Paraguay + { 111, 7, 169, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 571,7 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,69,78}, 288,2 , 13811,43 , 4,4 , 4,0 , 3840,7 , 3465,4 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Peru + { 111, 7, 170, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 18,7 , 25,12 , 10183,28 , 10211,53 , 8389,14 , 10183,28 , 10211,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {80,72,80}, 179,1 , 13854,48 , 19,5 , 4,0 , 3840,7 , 4000,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Philippines + { 111, 7, 174, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 1225,8 , 669,27 , 18,7 , 25,12 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 13327,70 , 4,4 , 4,0 , 3840,7 , 1446,11 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Puerto Rico + { 111, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 702,7 , 702,7 , 415,8 , 669,27 , 18,7 , 25,12 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 3107,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,83,68}, 6,1 , 13327,70 , 4,4 , 4,0 , 3840,7 , 4009,14 , 2, 1, 7, 6, 7 }, // Spanish/Latin/United States + { 111, 7, 227, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {85,89,85}, 6,1 , 13902,48 , 8,5 , 37,7 , 3840,7 , 4023,7 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Uruguay + { 111, 7, 231, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 18,7 , 25,12 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {86,69,83}, 318,4 , 13950,58 , 4,4 , 4,0 , 3840,7 , 4030,9 , 2, 1, 7, 6, 7 }, // Spanish/Latin/Venezuela + { 111, 7, 238, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 55,4 , 198,11 , 10183,28 , 10211,53 , 8389,14 , 10183,28 , 10211,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 4,0 , 3840,7 , 4039,8 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Canary Islands + { 111, 7, 246, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 37,5 , 8,10 , 10264,35 , 10211,53 , 3107,14 , 10183,28 , 10211,53 , 4796,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 4,4 , 4,0 , 4047,23 , 4070,13 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Latin America + { 111, 7, 250, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 669,27 , 55,4 , 198,11 , 10183,28 , 10211,53 , 8389,14 , 10183,28 , 10211,53 , 8389,14 , 53,5 , 50,5 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 4,0 , 3840,7 , 4083,15 , 2, 1, 1, 6, 7 }, // Spanish/Latin/Ceuta And Melilla + { 112, 7, 101, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 709,13 , 722,12 , 269,6 , 10,17 , 254,4 , 258,9 , 10299,28 , 10327,44 , 4697,14 , 10299,28 , 10327,44 , 4697,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,68,82}, 242,2 , 14008,37 , 4,4 , 4,0 , 4098,10 , 0,0 , 2, 0, 7, 6, 7 }, // Sundanese/Latin/Indonesia + { 113, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 734,8 , 734,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10371,60 , 10371,60 , 85,14 , 10371,60 , 10371,60 , 85,14 , 0,2 , 0,2 , 675,5 , 936,51 , 22,23 , {84,90,83}, 192,3 , 14045,67 , 8,5 , 4,0 , 4108,9 , 1624,8 , 2, 0, 1, 6, 7 }, // Swahili/Latin/Tanzania + { 113, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 734,8 , 734,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10371,60 , 10371,60 , 85,14 , 10371,60 , 10371,60 , 85,14 , 0,2 , 0,2 , 675,5 , 936,51 , 22,23 , {67,68,70}, 214,2 , 14112,55 , 8,5 , 4,0 , 4108,9 , 4117,32 , 2, 1, 1, 6, 7 }, // Swahili/Latin/Congo Kinshasa + { 113, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 734,8 , 734,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10371,60 , 10371,60 , 85,14 , 10371,60 , 10371,60 , 85,14 , 0,2 , 0,2 , 675,5 , 936,51 , 22,23 , {75,69,83}, 2,3 , 14167,58 , 8,5 , 4,0 , 4108,9 , 1191,5 , 2, 1, 7, 6, 7 }, // Swahili/Latin/Kenya + { 113, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 734,8 , 734,8 , 119,10 , 10,17 , 37,5 , 8,10 , 10371,60 , 10371,60 , 85,14 , 10371,60 , 10371,60 , 85,14 , 0,2 , 0,2 , 675,5 , 936,51 , 22,23 , {85,71,88}, 197,3 , 14225,61 , 8,5 , 4,0 , 4108,9 , 1689,6 , 0, 0, 1, 7, 7 }, // Swahili/Latin/Uganda + { 114, 7, 205, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 742,9 , 742,9 , 53,10 , 97,16 , 37,5 , 8,10 , 10431,29 , 10460,50 , 2320,14 , 10431,29 , 10460,50 , 2320,14 , 320,2 , 286,2 , 45,4 , 5,17 , 22,23 , {83,69,75}, 190,2 , 14286,45 , 19,5 , 4,0 , 4149,7 , 4156,7 , 2, 0, 1, 6, 7 }, // Swedish/Latin/Sweden + { 114, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 742,9 , 742,9 , 53,10 , 97,16 , 37,5 , 8,10 , 10431,29 , 10460,50 , 2320,14 , 10431,29 , 10460,50 , 2320,14 , 320,2 , 286,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9130,19 , 19,5 , 4,0 , 4149,7 , 1088,7 , 2, 1, 1, 6, 7 }, // Swedish/Latin/Finland + { 114, 7, 248, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 742,9 , 742,9 , 53,10 , 97,16 , 37,5 , 8,10 , 10431,29 , 10460,50 , 2320,14 , 10431,29 , 10460,50 , 2320,14 , 320,2 , 286,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 9130,19 , 19,5 , 4,0 , 4149,7 , 4163,5 , 2, 1, 1, 6, 7 }, // Swedish/Latin/Aland Islands { 115, 7, 106, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Sardinian/Latin/Italy - { 116, 2, 209, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 553,18 , 37,5 , 8,10 , 10383,28 , 10411,55 , 10466,14 , 10383,28 , 10411,55 , 10466,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {84,74,83}, 318,4 , 14301,19 , 19,5 , 4,0 , 4140,6 , 4146,10 , 2, 1, 1, 6, 7 }, // Tajik/Cyrillic/Tajikistan - { 117, 27, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 733,13 , 733,13 , 269,6 , 192,18 , 359,7 , 414,12 , 10480,39 , 10519,49 , 10568,20 , 10480,39 , 10519,49 , 10568,20 , 327,8 , 292,8 , 977,7 , 5,17 , 22,23 , {73,78,82}, 121,1 , 14320,49 , 4,4 , 13,6 , 4156,5 , 4161,7 , 2, 1, 7, 7, 7 }, // Tamil/Tamil/India - { 117, 27, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 733,13 , 733,13 , 269,6 , 192,18 , 359,7 , 414,12 , 10480,39 , 10519,49 , 10568,20 , 10480,39 , 10519,49 , 10568,20 , 327,8 , 292,8 , 977,7 , 5,17 , 22,23 , {77,89,82}, 174,2 , 14369,61 , 4,4 , 13,6 , 4156,5 , 4168,7 , 2, 1, 1, 6, 7 }, // Tamil/Tamil/Malaysia - { 117, 27, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 733,13 , 733,13 , 269,6 , 192,18 , 359,7 , 414,12 , 10480,39 , 10519,49 , 10568,20 , 10480,39 , 10519,49 , 10568,20 , 327,8 , 292,8 , 977,7 , 5,17 , 22,23 , {83,71,68}, 6,1 , 14430,61 , 4,4 , 13,6 , 4156,5 , 4175,11 , 2, 1, 7, 6, 7 }, // Tamil/Tamil/Singapore - { 117, 27, 198, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 733,13 , 733,13 , 269,6 , 192,18 , 37,5 , 8,10 , 10480,39 , 10519,49 , 10568,20 , 10480,39 , 10519,49 , 10568,20 , 327,8 , 292,8 , 977,7 , 5,17 , 22,23 , {76,75,82}, 322,3 , 14491,49 , 4,4 , 13,6 , 4156,5 , 4186,6 , 2, 1, 1, 6, 7 }, // Tamil/Tamil/Sri Lanka - { 118, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 746,9 , 746,9 , 495,10 , 1233,23 , 55,4 , 59,9 , 10588,36 , 10624,56 , 10680,14 , 10588,36 , 10624,56 , 10680,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 14540,21 , 19,5 , 4,0 , 4192,5 , 3524,6 , 2, 1, 1, 6, 7 }, // Tatar/Cyrillic/Russia - { 119, 28, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 755,11 , 755,11 , 339,8 , 1256,18 , 18,7 , 25,12 , 10694,32 , 10726,60 , 10786,18 , 10694,32 , 10726,60 , 10786,18 , 0,2 , 0,2 , 984,7 , 991,29 , 22,23 , {73,78,82}, 121,1 , 14561,26 , 4,4 , 13,6 , 4197,6 , 4203,8 , 2, 1, 7, 7, 7 }, // Telugu/Telugu/India - { 120, 30, 211, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 118,5 , 118,5 , 766,8 , 774,7 , 269,6 , 1274,19 , 37,5 , 442,28 , 10804,23 , 10827,68 , 10895,16 , 10804,23 , 10827,68 , 10895,16 , 335,10 , 300,10 , 1020,4 , 5,17 , 22,23 , {84,72,66}, 325,1 , 14587,16 , 4,4 , 13,6 , 4211,3 , 4211,3 , 2, 1, 7, 6, 7 }, // Thai/Thai/Thailand - { 121, 31, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1293,23 , 18,7 , 25,12 , 10911,51 , 10962,79 , 11041,27 , 10911,51 , 10962,79 , 11041,27 , 345,7 , 310,8 , 45,4 , 5,17 , 22,23 , {67,78,89}, 133,1 , 14603,13 , 8,5 , 4,0 , 4214,8 , 4222,6 , 2, 1, 7, 6, 7 }, // Tibetan/Tibetan/China - { 121, 31, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1293,23 , 18,7 , 25,12 , 10911,51 , 10962,79 , 11041,27 , 10911,51 , 10962,79 , 11041,27 , 345,7 , 310,8 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 14616,19 , 8,5 , 4,0 , 4214,8 , 4228,7 , 2, 1, 7, 7, 7 }, // Tibetan/Tibetan/India - { 122, 14, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1316,23 , 18,7 , 25,12 , 11068,21 , 11089,29 , 11118,14 , 11068,21 , 11089,29 , 11132,14 , 352,7 , 318,7 , 45,4 , 5,17 , 22,23 , {69,84,66}, 0,2 , 14635,16 , 4,4 , 4,0 , 4235,4 , 92,5 , 2, 1, 7, 6, 7 }, // Tigrinya/Ethiopic/Ethiopia - { 122, 14, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1316,23 , 18,7 , 25,12 , 11068,21 , 11089,29 , 11132,14 , 11068,21 , 11089,29 , 11132,14 , 352,7 , 318,7 , 45,4 , 5,17 , 22,23 , {69,82,78}, 41,3 , 0,7 , 4,4 , 4,0 , 4235,4 , 4239,4 , 2, 1, 1, 6, 7 }, // Tigrinya/Ethiopic/Eritrea - { 123, 7, 214, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 781,8 , 781,8 , 781,8 , 781,8 , 269,6 , 97,16 , 18,7 , 25,12 , 11146,29 , 11175,60 , 11235,14 , 11146,29 , 11175,60 , 11235,14 , 359,10 , 325,6 , 1024,5 , 1029,59 , 1088,65 , {84,79,80}, 195,2 , 14651,41 , 8,5 , 4,0 , 4243,13 , 1635,5 , 2, 1, 1, 6, 7 }, // Tongan/Latin/Tonga + { 116, 2, 209, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 553,18 , 37,5 , 8,10 , 10510,28 , 10538,55 , 10593,14 , 10510,28 , 10538,55 , 10593,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {84,74,83}, 322,4 , 14331,19 , 19,5 , 4,0 , 4168,6 , 4174,10 , 2, 1, 1, 6, 7 }, // Tajik/Cyrillic/Tajikistan + { 117, 27, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 751,13 , 751,13 , 269,6 , 192,18 , 393,7 , 437,12 , 10607,39 , 10646,49 , 10695,20 , 10607,39 , 10646,49 , 10695,20 , 322,8 , 288,8 , 987,7 , 5,17 , 22,23 , {73,78,82}, 121,1 , 14350,49 , 4,4 , 13,6 , 4184,5 , 4189,7 , 2, 1, 7, 7, 7 }, // Tamil/Tamil/India + { 117, 27, 130, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 751,13 , 751,13 , 269,6 , 192,18 , 393,7 , 437,12 , 10607,39 , 10646,49 , 10695,20 , 10607,39 , 10646,49 , 10695,20 , 322,8 , 288,8 , 987,7 , 5,17 , 22,23 , {77,89,82}, 174,2 , 14399,61 , 4,4 , 13,6 , 4184,5 , 4196,7 , 2, 1, 1, 6, 7 }, // Tamil/Tamil/Malaysia + { 117, 27, 190, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 751,13 , 751,13 , 269,6 , 192,18 , 393,7 , 437,12 , 10607,39 , 10646,49 , 10695,20 , 10607,39 , 10646,49 , 10695,20 , 322,8 , 288,8 , 987,7 , 5,17 , 22,23 , {83,71,68}, 6,1 , 14460,61 , 4,4 , 13,6 , 4184,5 , 4203,11 , 2, 1, 7, 6, 7 }, // Tamil/Tamil/Singapore + { 117, 27, 198, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 751,13 , 751,13 , 269,6 , 192,18 , 37,5 , 8,10 , 10607,39 , 10646,49 , 10695,20 , 10607,39 , 10646,49 , 10695,20 , 322,8 , 288,8 , 987,7 , 5,17 , 22,23 , {76,75,82}, 326,3 , 14521,49 , 4,4 , 13,6 , 4184,5 , 4214,6 , 2, 1, 1, 6, 7 }, // Tamil/Tamil/Sri Lanka + { 118, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 764,9 , 764,9 , 495,10 , 1233,23 , 55,4 , 59,9 , 10715,36 , 10751,56 , 10807,14 , 10715,36 , 10751,56 , 10807,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 14570,21 , 19,5 , 4,0 , 4220,5 , 3535,6 , 2, 1, 1, 6, 7 }, // Tatar/Cyrillic/Russia + { 119, 28, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 773,11 , 773,11 , 339,8 , 1256,18 , 18,7 , 25,12 , 10821,32 , 10853,60 , 10913,18 , 10821,32 , 10853,60 , 10913,18 , 0,2 , 0,2 , 994,7 , 1001,29 , 22,23 , {73,78,82}, 121,1 , 14591,26 , 4,4 , 13,6 , 4225,6 , 4231,8 , 2, 1, 7, 7, 7 }, // Telugu/Telugu/India + { 120, 30, 211, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 784,5 , 784,5 , 789,8 , 797,7 , 269,6 , 1274,19 , 37,5 , 449,28 , 10931,23 , 10954,68 , 11022,16 , 10931,23 , 10954,68 , 11022,16 , 330,10 , 296,10 , 1030,4 , 5,17 , 22,23 , {84,72,66}, 329,1 , 14617,16 , 4,4 , 13,6 , 4239,3 , 4239,3 , 2, 1, 7, 6, 7 }, // Thai/Thai/Thailand + { 121, 31, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1293,23 , 18,7 , 25,12 , 11038,51 , 11089,79 , 11168,27 , 11038,51 , 11089,79 , 11168,27 , 340,7 , 306,8 , 45,4 , 5,17 , 22,23 , {67,78,89}, 133,1 , 14633,13 , 8,5 , 4,0 , 4242,8 , 4250,6 , 2, 1, 7, 6, 7 }, // Tibetan/Tibetan/China + { 121, 31, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1293,23 , 18,7 , 25,12 , 11038,51 , 11089,79 , 11168,27 , 11038,51 , 11089,79 , 11168,27 , 340,7 , 306,8 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 14646,19 , 8,5 , 4,0 , 4242,8 , 4256,7 , 2, 1, 7, 7, 7 }, // Tibetan/Tibetan/India + { 122, 14, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1316,23 , 18,7 , 25,12 , 11195,21 , 11216,29 , 11245,14 , 11195,21 , 11216,29 , 11259,14 , 347,12 , 314,12 , 45,4 , 5,17 , 22,23 , {69,84,66}, 0,2 , 14665,16 , 4,4 , 4,0 , 4263,3 , 92,5 , 2, 1, 7, 6, 7 }, // Tigrinya/Ethiopic/Ethiopia + { 122, 14, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1316,23 , 18,7 , 25,12 , 11195,21 , 11216,29 , 11259,14 , 11195,21 , 11216,29 , 11259,14 , 347,12 , 314,12 , 45,4 , 5,17 , 22,23 , {69,82,78}, 41,3 , 0,7 , 4,4 , 4,0 , 4263,3 , 4266,4 , 2, 1, 1, 6, 7 }, // Tigrinya/Ethiopic/Eritrea + { 123, 7, 214, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 804,8 , 804,8 , 804,8 , 804,8 , 269,6 , 97,16 , 18,7 , 25,12 , 11273,29 , 11302,60 , 11362,14 , 11273,29 , 11302,60 , 11362,14 , 359,10 , 326,6 , 1034,5 , 1039,59 , 1098,65 , {84,79,80}, 195,2 , 14681,41 , 8,5 , 4,0 , 4270,13 , 1639,5 , 2, 1, 1, 6, 7 }, // Tongan/Latin/Tonga { 124, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Tsonga/Latin/South Africa - { 125, 7, 217, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 789,8 , 789,8 , 1339,9 , 1348,16 , 37,5 , 8,10 , 11249,28 , 11277,54 , 11331,14 , 11249,28 , 11277,54 , 11331,14 , 369,2 , 331,2 , 199,4 , 5,17 , 22,23 , {84,82,89}, 252,1 , 14692,40 , 4,4 , 13,6 , 4256,6 , 4262,7 , 2, 1, 1, 6, 7 }, // Turkish/Latin/Turkey - { 125, 7, 56, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 789,8 , 789,8 , 1339,9 , 1348,16 , 18,7 , 25,12 , 11249,28 , 11277,54 , 11331,14 , 11249,28 , 11277,54 , 11331,14 , 369,2 , 331,2 , 199,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 4,4 , 13,6 , 4256,6 , 4269,6 , 2, 1, 1, 6, 7 }, // Turkish/Latin/Cyprus - { 126, 7, 218, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8220, 8221, 0,6 , 0,6 , 797,8 , 797,8 , 495,10 , 1348,16 , 37,5 , 8,10 , 11345,28 , 11373,54 , 11427,14 , 11441,28 , 11469,54 , 11427,14 , 371,13 , 333,14 , 1153,4 , 5,17 , 22,23 , {84,77,84}, 326,3 , 14732,49 , 19,5 , 4,0 , 4275,12 , 4287,12 , 2, 1, 1, 6, 7 }, // Turkmen/Latin/Turkmenistan - { 128, 1, 44, 46, 44, 59, 37, 48, 45, 43, 101, 187, 171, 8250, 8249, 0,6 , 0,6 , 195,10 , 205,9 , 53,10 , 1364,17 , 18,7 , 25,12 , 11523,21 , 11544,55 , 11599,14 , 11523,21 , 11544,55 , 11599,14 , 384,12 , 347,12 , 45,4 , 5,17 , 22,23 , {67,78,89}, 243,1 , 14781,40 , 4,4 , 13,6 , 4299,8 , 4307,5 , 2, 1, 7, 6, 7 }, // Uighur/Arabic/China - { 129, 2, 222, 44, 160, 59, 37, 48, 45, 43, 1077, 171, 187, 8222, 8220, 0,6 , 0,6 , 133,7 , 133,7 , 156,8 , 1381,22 , 37,5 , 8,10 , 1454,21 , 11613,56 , 11669,14 , 1454,21 , 11613,56 , 11669,14 , 396,2 , 359,2 , 1157,5 , 680,17 , 22,23 , {85,65,72}, 292,1 , 14821,49 , 19,5 , 4,0 , 4312,10 , 4322,7 , 2, 1, 1, 6, 7 }, // Ukrainian/Cyrillic/Ukraine - { 130, 1, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 557,6 , 557,6 , 805,10 , 815,9 , 269,6 , 1403,18 , 18,7 , 25,12 , 11683,36 , 11683,36 , 85,14 , 11683,36 , 11683,36 , 85,14 , 0,2 , 0,2 , 1162,4 , 1166,20 , 22,23 , {80,75,82}, 176,2 , 14870,49 , 4,4 , 13,6 , 4329,4 , 3240,7 , 2, 0, 7, 6, 7 }, // Urdu/Arabic/Pakistan - { 130, 1, 100, 1643, 1644, 59, 37, 1776, 45, 43, 101, 8221, 8220, 8217, 8216, 557,6 , 557,6 , 805,10 , 815,9 , 269,6 , 1403,18 , 18,7 , 25,12 , 11683,36 , 11683,36 , 85,14 , 11683,36 , 11683,36 , 85,14 , 0,2 , 0,2 , 1162,4 , 1166,20 , 22,23 , {73,78,82}, 121,1 , 14919,42 , 4,4 , 13,6 , 4329,4 , 4333,5 , 2, 1, 7, 7, 7 }, // Urdu/Arabic/India - { 131, 7, 228, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8217, 8216, 0,6 , 0,6 , 824,8 , 824,8 , 27,8 , 1421,18 , 37,5 , 403,11 , 11719,32 , 11751,61 , 11812,14 , 11719,32 , 11751,61 , 11812,14 , 398,2 , 361,2 , 199,4 , 5,17 , 22,23 , {85,90,83}, 329,4 , 14961,58 , 19,5 , 4,0 , 4338,6 , 4344,11 , 2, 0, 1, 6, 7 }, // Uzbek/Latin/Uzbekistan - { 131, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 394,8 , 1439,33 , 55,4 , 403,11 , 11826,21 , 7794,49 , 85,14 , 11826,21 , 7794,49 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {65,70,78}, 268,1 , 15019,13 , 19,5 , 4,0 , 4355,6 , 3231,9 , 0, 0, 6, 4, 5 }, // Uzbek/Arabic/Afghanistan - { 131, 2, 228, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 696,19 , 37,5 , 87,12 , 11847,28 , 11875,53 , 11928,14 , 11847,28 , 11875,53 , 11928,14 , 400,2 , 363,2 , 45,4 , 5,17 , 22,23 , {85,90,83}, 333,3 , 15032,49 , 19,5 , 4,0 , 4361,7 , 4368,10 , 2, 0, 1, 6, 7 }, // Uzbek/Cyrillic/Uzbekistan - { 132, 7, 232, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 832,8 , 832,8 , 119,10 , 192,18 , 37,5 , 8,10 , 11942,33 , 11975,55 , 12030,21 , 11942,33 , 11975,55 , 12030,21 , 402,2 , 365,2 , 45,4 , 5,17 , 22,23 , {86,78,68}, 336,1 , 15081,33 , 19,5 , 4,0 , 4378,10 , 4388,8 , 0, 0, 1, 6, 7 }, // Vietnamese/Latin/Vietnam - { 133, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1472,23 , 37,5 , 8,10 , 12051,21 , 12072,43 , 12115,14 , 12129,28 , 12072,43 , 12115,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 4396,7 , 0,0 , 2, 1, 1, 6, 7 }, // Volapuk/Latin/World - { 134, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 840,11 , 851,10 , 27,8 , 10,17 , 37,5 , 8,10 , 12157,29 , 12186,77 , 12263,15 , 12278,30 , 12186,77 , 12263,15 , 404,2 , 367,2 , 1186,7 , 5,17 , 22,23 , {71,66,80}, 119,1 , 15114,91 , 4,4 , 13,6 , 4403,7 , 4410,16 , 2, 1, 1, 6, 7 }, // Welsh/Latin/United Kingdom - { 135, 7, 187, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 528,10 , 1495,17 , 37,5 , 8,10 , 12308,28 , 12336,50 , 12308,28 , 12308,28 , 12336,50 , 12308,28 , 406,3 , 369,3 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 15205,65 , 8,5 , 4,0 , 4426,5 , 4431,8 , 0, 0, 1, 6, 7 }, // Wolof/Latin/Senegal - { 136, 7, 195, 46, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 12386,28 , 12414,61 , 85,14 , 12386,28 , 12414,61 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 15270,79 , 4,4 , 4,0 , 4439,8 , 4447,15 , 2, 1, 7, 6, 7 }, // Xhosa/Latin/South Africa - { 137, 18, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 861,9 , 861,9 , 27,8 , 1512,19 , 37,5 , 8,10 , 12475,54 , 12475,54 , 85,14 , 12475,54 , 12475,54 , 85,14 , 409,11 , 372,10 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 4462,6 , 4468,5 , 2, 1, 1, 6, 7 }, // Yiddish/Hebrew/World - { 138, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 1531,16 , 470,3 , 8,10 , 12529,33 , 12562,44 , 12606,14 , 12529,33 , 12620,69 , 12606,14 , 420,5 , 382,5 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 15349,49 , 4,4 , 13,6 , 4473,10 , 4483,19 , 2, 1, 1, 6, 7 }, // Yoruba/Latin/Nigeria - { 138, 7, 23, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 1531,16 , 470,3 , 8,10 , 12689,33 , 12722,44 , 12766,14 , 12689,33 , 12780,69 , 12766,14 , 425,5 , 387,5 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 15398,34 , 4,4 , 13,6 , 4473,10 , 4502,16 , 0, 0, 1, 6, 7 }, // Yoruba/Latin/Benin - { 140, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 870,9 , 879,8 , 547,6 , 35,18 , 37,5 , 8,10 , 12849,28 , 12877,74 , 12951,14 , 12849,28 , 12877,74 , 12951,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {90,65,82}, 5,1 , 15432,67 , 4,4 , 13,6 , 4518,7 , 4525,17 , 2, 1, 7, 6, 7 }, // Zulu/Latin/South Africa - { 141, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 187,8 , 187,8 , 495,10 , 478,17 , 37,5 , 426,16 , 12965,28 , 12993,51 , 2320,14 , 13044,28 , 12993,51 , 2320,14 , 430,9 , 392,11 , 45,4 , 5,17 , 22,23 , {78,79,75}, 190,2 , 10091,44 , 19,5 , 4,0 , 4542,7 , 4549,5 , 2, 0, 1, 6, 7 }, // Norwegian Nynorsk/Latin/Norway - { 142, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 8216, 8217, 0,6 , 0,6 , 158,7 , 158,7 , 1547,11 , 450,19 , 37,5 , 8,10 , 2043,28 , 2071,58 , 2129,14 , 2043,28 , 2071,58 , 2143,14 , 439,10 , 403,7 , 319,7 , 5,17 , 22,23 , {66,65,77}, 144,2 , 15499,170 , 19,5 , 4,0 , 4554,8 , 629,19 , 2, 1, 1, 6, 7 }, // Bosnian/Latin/Bosnia And Herzegowina - { 142, 2, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 13072,28 , 13100,56 , 8907,14 , 13072,28 , 13100,56 , 8907,14 , 265,11 , 410,13 , 45,4 , 5,17 , 22,23 , {66,65,77}, 296,2 , 15669,152 , 19,5 , 4,0 , 4562,8 , 3621,19 , 2, 1, 1, 6, 7 }, // Bosnian/Cyrillic/Bosnia And Herzegowina + { 125, 7, 217, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 812,8 , 812,8 , 1339,9 , 1348,16 , 37,5 , 8,10 , 11376,28 , 11404,54 , 11458,14 , 11376,28 , 11404,54 , 11458,14 , 369,2 , 332,2 , 199,4 , 5,17 , 22,23 , {84,82,89}, 256,1 , 14722,40 , 4,4 , 13,6 , 4283,6 , 4289,7 , 2, 1, 1, 6, 7 }, // Turkish/Latin/Turkey + { 125, 7, 56, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 812,8 , 812,8 , 1339,9 , 1348,16 , 18,7 , 25,12 , 11376,28 , 11404,54 , 11458,14 , 11376,28 , 11404,54 , 11458,14 , 369,2 , 332,2 , 199,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 4,4 , 13,6 , 4283,6 , 4296,6 , 2, 1, 1, 6, 7 }, // Turkish/Latin/Cyprus + { 126, 7, 218, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8220, 8221, 0,6 , 0,6 , 820,8 , 820,8 , 495,10 , 1348,16 , 37,5 , 8,10 , 11472,28 , 11500,54 , 11554,14 , 11568,28 , 11596,54 , 11554,14 , 371,13 , 334,14 , 1163,4 , 5,17 , 22,23 , {84,77,84}, 330,3 , 14762,49 , 19,5 , 4,0 , 4302,12 , 4314,12 , 2, 1, 1, 6, 7 }, // Turkmen/Latin/Turkmenistan + { 128, 1, 44, 46, 44, 59, 37, 48, 45, 43, 101, 187, 171, 8250, 8249, 0,6 , 0,6 , 196,10 , 206,9 , 53,10 , 1364,17 , 18,7 , 25,12 , 11650,21 , 11671,55 , 11726,14 , 11650,21 , 11671,55 , 11726,14 , 384,12 , 348,12 , 45,4 , 5,17 , 22,23 , {67,78,89}, 247,1 , 14811,40 , 4,4 , 13,6 , 4326,8 , 4334,5 , 2, 1, 7, 6, 7 }, // Uighur/Arabic/China + { 129, 2, 222, 44, 160, 59, 37, 48, 45, 43, 1077, 171, 187, 8222, 8220, 0,6 , 0,6 , 134,7 , 134,7 , 156,8 , 1381,22 , 37,5 , 8,10 , 1454,21 , 11740,56 , 11796,14 , 1454,21 , 11740,56 , 11796,14 , 396,2 , 360,2 , 1167,5 , 728,17 , 22,23 , {85,65,72}, 296,1 , 14851,95 , 19,5 , 4,0 , 4339,10 , 4349,7 , 2, 1, 1, 6, 7 }, // Ukrainian/Cyrillic/Ukraine + { 130, 1, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8220, 8217, 8216, 556,6 , 556,6 , 828,10 , 838,9 , 269,6 , 1403,18 , 18,7 , 25,12 , 11810,36 , 11810,36 , 85,14 , 11810,36 , 11810,36 , 85,14 , 0,2 , 0,2 , 1172,4 , 1176,20 , 22,23 , {80,75,82}, 176,2 , 14946,49 , 4,4 , 13,6 , 4356,4 , 3251,7 , 2, 0, 7, 6, 7 }, // Urdu/Arabic/Pakistan + { 130, 1, 100, 1643, 1644, 59, 37, 1776, 45, 43, 101, 8221, 8220, 8217, 8216, 556,6 , 556,6 , 828,10 , 838,9 , 269,6 , 1403,18 , 18,7 , 25,12 , 11810,36 , 11810,36 , 85,14 , 11810,36 , 11810,36 , 85,14 , 0,2 , 0,2 , 1172,4 , 1176,20 , 22,23 , {73,78,82}, 121,1 , 14995,42 , 4,4 , 13,6 , 4356,4 , 4360,5 , 2, 1, 7, 7, 7 }, // Urdu/Arabic/India + { 131, 7, 228, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8217, 8216, 0,6 , 0,6 , 847,8 , 847,8 , 27,8 , 1421,18 , 37,5 , 198,11 , 11846,32 , 11878,61 , 11939,14 , 11846,32 , 11878,61 , 11939,14 , 398,2 , 362,2 , 199,4 , 5,17 , 22,23 , {85,90,83}, 333,4 , 15037,58 , 19,5 , 4,0 , 4365,6 , 4371,11 , 2, 0, 1, 6, 7 }, // Uzbek/Latin/Uzbekistan + { 131, 1, 1, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 394,8 , 1439,33 , 55,4 , 198,11 , 11953,21 , 7794,49 , 85,14 , 11953,21 , 7794,49 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {65,70,78}, 272,1 , 15095,13 , 19,5 , 4,0 , 4382,6 , 3242,9 , 0, 0, 6, 4, 5 }, // Uzbek/Arabic/Afghanistan + { 131, 2, 228, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 696,19 , 37,5 , 87,12 , 11974,28 , 12002,53 , 12055,14 , 11974,28 , 12002,53 , 12055,14 , 400,2 , 364,2 , 45,4 , 5,17 , 22,23 , {85,90,83}, 337,3 , 15108,49 , 19,5 , 4,0 , 4388,7 , 4395,10 , 2, 0, 1, 6, 7 }, // Uzbek/Cyrillic/Uzbekistan + { 132, 7, 232, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 855,8 , 855,8 , 119,10 , 192,18 , 37,5 , 8,10 , 12069,33 , 12102,55 , 12157,21 , 12069,33 , 12102,55 , 12157,21 , 402,2 , 366,2 , 45,4 , 5,17 , 22,23 , {86,78,68}, 340,1 , 15157,33 , 19,5 , 4,0 , 4405,10 , 4415,8 , 0, 0, 1, 6, 7 }, // Vietnamese/Latin/Vietnam + { 133, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Volapuk/Latin/World + { 134, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 863,11 , 874,10 , 27,8 , 10,17 , 37,5 , 8,10 , 12178,29 , 12207,77 , 12284,15 , 12299,30 , 12207,77 , 12284,15 , 404,2 , 368,2 , 1196,7 , 5,17 , 22,23 , {71,66,80}, 119,1 , 15190,91 , 4,4 , 13,6 , 4423,7 , 4430,16 , 2, 1, 1, 6, 7 }, // Welsh/Latin/United Kingdom + { 135, 7, 187, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 528,10 , 1472,17 , 37,5 , 8,10 , 12329,28 , 12357,50 , 12329,28 , 12329,28 , 12357,50 , 12329,28 , 406,3 , 370,3 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 15281,65 , 8,5 , 4,0 , 4446,5 , 4451,8 , 0, 0, 1, 6, 7 }, // Wolof/Latin/Senegal + { 136, 7, 195, 46, 160, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 12407,28 , 12435,61 , 85,14 , 12407,28 , 12435,61 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 15346,79 , 4,4 , 4,0 , 4459,8 , 4467,15 , 2, 1, 7, 6, 7 }, // Xhosa/Latin/South Africa + { 137, 18, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 884,9 , 884,9 , 27,8 , 1489,19 , 37,5 , 8,10 , 12496,54 , 12496,54 , 85,14 , 12496,54 , 12496,54 , 85,14 , 409,11 , 373,10 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 4482,6 , 4488,5 , 2, 1, 1, 6, 7 }, // Yiddish/Hebrew/World + { 138, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 1508,16 , 477,3 , 8,10 , 12550,33 , 12583,44 , 12627,14 , 12550,33 , 12641,69 , 12627,14 , 420,5 , 383,5 , 1203,11 , 1214,37 , 22,23 , {78,71,78}, 178,1 , 15425,35 , 4,4 , 13,6 , 4493,10 , 4503,8 , 2, 1, 1, 6, 7 }, // Yoruba/Latin/Nigeria + { 138, 7, 23, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 1508,16 , 477,3 , 8,10 , 12710,33 , 12743,44 , 12787,14 , 12710,33 , 12801,69 , 12787,14 , 425,5 , 388,5 , 1251,11 , 1214,37 , 22,23 , {88,79,70}, 207,3 , 15460,64 , 4,4 , 13,6 , 4493,10 , 4511,6 , 0, 0, 1, 6, 7 }, // Yoruba/Latin/Benin + { 140, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 893,9 , 902,8 , 547,6 , 35,18 , 37,5 , 8,10 , 12870,28 , 12898,74 , 12972,14 , 12870,28 , 12898,74 , 12972,14 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {90,65,82}, 5,1 , 15524,67 , 4,4 , 13,6 , 4517,7 , 4524,17 , 2, 1, 7, 6, 7 }, // Zulu/Latin/South Africa + { 141, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 188,8 , 188,8 , 495,10 , 478,17 , 37,5 , 480,16 , 12986,28 , 13014,51 , 2320,14 , 13065,28 , 13014,51 , 2320,14 , 430,9 , 393,11 , 45,4 , 5,17 , 22,23 , {78,79,75}, 190,2 , 10090,44 , 19,5 , 4,0 , 4541,13 , 4554,5 , 2, 0, 1, 6, 7 }, // Norwegian Nynorsk/Latin/Norway + { 142, 7, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8221, 8216, 8217, 0,6 , 0,6 , 159,7 , 159,7 , 1524,11 , 450,19 , 37,5 , 8,10 , 2043,28 , 2071,58 , 2129,14 , 2043,28 , 2071,58 , 2143,14 , 439,10 , 404,7 , 298,7 , 5,17 , 22,23 , {66,65,77}, 144,2 , 12015,170 , 19,5 , 4,0 , 4559,8 , 629,19 , 2, 1, 1, 6, 7 }, // Bosnian/Latin/Bosnia And Herzegowina + { 142, 2, 27, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 111,7 , 111,7 , 1091,7 , 1098,20 , 37,5 , 8,10 , 9127,28 , 9155,56 , 8974,14 , 9127,28 , 9155,56 , 8974,14 , 260,11 , 411,13 , 45,4 , 5,17 , 22,23 , {66,65,77}, 300,2 , 15591,152 , 19,5 , 4,0 , 4567,8 , 3649,19 , 2, 1, 1, 6, 7 }, // Bosnian/Cyrillic/Bosnia And Herzegowina { 143, 29, 131, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,86,82}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 5, 6, 7 }, // Divehi/Thaana/Maldives - { 144, 7, 251, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 80,17 , 37,5 , 8,10 , 13156,30 , 13186,57 , 85,14 , 13156,30 , 13186,57 , 85,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {71,66,80}, 119,1 , 0,7 , 4,4 , 4,0 , 4570,5 , 4575,12 , 2, 1, 1, 6, 7 }, // Manx/Latin/Isle Of Man - { 145, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 97,16 , 37,5 , 8,10 , 13243,28 , 13271,61 , 85,14 , 13243,28 , 13271,61 , 85,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {71,66,80}, 119,1 , 0,7 , 4,4 , 4,0 , 4587,8 , 4595,14 , 2, 1, 1, 6, 7 }, // Cornish/Latin/United Kingdom - { 146, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1558,8 , 1566,18 , 18,7 , 25,12 , 13332,28 , 13360,49 , 13409,14 , 13332,28 , 13360,49 , 13409,14 , 449,2 , 423,2 , 45,4 , 5,17 , 22,23 , {71,72,83}, 167,3 , 15821,17 , 4,4 , 4,0 , 4609,4 , 4613,5 , 2, 1, 1, 6, 7 }, // Akan/Latin/Ghana - { 147, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1584,6 , 97,16 , 18,7 , 25,12 , 13423,51 , 13423,51 , 13474,19 , 13423,51 , 13423,51 , 13493,20 , 0,2 , 0,2 , 1193,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 15838,19 , 4,4 , 13,6 , 4618,6 , 2662,4 , 2, 1, 7, 7, 7 }, // Konkani/Devanagari/India - { 148, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,72,83}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Ga/Latin/Ghana - { 149, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 887,9 , 716,8 , 269,6 , 10,17 , 37,5 , 8,10 , 13513,29 , 13542,54 , 85,14 , 13513,29 , 13542,54 , 85,14 , 451,7 , 425,7 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 15857,12 , 4,4 , 13,6 , 4624,10 , 4634,8 , 2, 1, 1, 6, 7 }, // Igbo/Latin/Nigeria - { 150, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 13596,28 , 13624,74 , 13698,14 , 13596,28 , 13624,74 , 13698,14 , 458,9 , 432,7 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 15869,23 , 4,4 , 13,6 , 4642,7 , 1191,5 , 2, 1, 7, 6, 7 }, // Kamba/Latin/Kenya + { 144, 7, 251, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 80,17 , 37,5 , 8,10 , 13093,30 , 13123,57 , 85,14 , 13093,30 , 13123,57 , 85,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {71,66,80}, 119,1 , 0,7 , 4,4 , 4,0 , 4575,5 , 4580,12 , 2, 1, 1, 6, 7 }, // Manx/Latin/Isle Of Man + { 145, 7, 224, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 97,16 , 37,5 , 8,10 , 13180,28 , 13208,61 , 85,14 , 13180,28 , 13208,61 , 85,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {71,66,80}, 119,1 , 0,7 , 4,4 , 4,0 , 4592,8 , 4600,14 , 2, 1, 1, 6, 7 }, // Cornish/Latin/United Kingdom + { 146, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1535,8 , 1543,18 , 18,7 , 25,12 , 13269,28 , 13297,49 , 13346,14 , 13269,28 , 13297,49 , 13346,14 , 449,2 , 424,2 , 45,4 , 5,17 , 22,23 , {71,72,83}, 167,3 , 15743,17 , 4,4 , 4,0 , 4614,4 , 4618,5 , 2, 1, 1, 6, 7 }, // Akan/Latin/Ghana + { 147, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 1561,6 , 97,16 , 18,7 , 25,12 , 13360,51 , 13360,51 , 13411,19 , 13360,51 , 13360,51 , 13430,20 , 0,2 , 0,2 , 1262,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 15760,19 , 4,4 , 13,6 , 4623,6 , 2666,4 , 2, 1, 7, 7, 7 }, // Konkani/Devanagari/India + { 148, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,72,83}, 167,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Ga/Latin/Ghana + { 149, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 910,9 , 734,8 , 269,6 , 10,17 , 37,5 , 8,10 , 13450,29 , 13479,54 , 85,14 , 13450,29 , 13479,54 , 85,14 , 451,7 , 426,7 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 15779,12 , 4,4 , 13,6 , 4629,4 , 4633,8 , 2, 1, 1, 6, 7 }, // Igbo/Latin/Nigeria + { 150, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 13533,28 , 13561,74 , 13635,14 , 13533,28 , 13561,74 , 13635,14 , 458,9 , 433,7 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 15791,23 , 4,4 , 13,6 , 4641,7 , 1191,5 , 2, 1, 7, 6, 7 }, // Kamba/Latin/Kenya { 151, 33, 103, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,81,68}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 6, 5, 6 }, // Syriac/Syriac/Iraq { 152, 14, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,82,78}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Blin/Ethiopic/Eritrea { 153, 14, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,84,66}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Geez/Ethiopic/Ethiopia @@ -1733,155 +1730,157 @@ { 156, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Atsam/Latin/Nigeria { 157, 14, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,82,78}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Tigre/Ethiopic/Eritrea { 158, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Jju/Latin/Nigeria - { 159, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 249,7 , 249,7 , 27,8 , 1590,27 , 37,5 , 8,10 , 13712,28 , 13740,50 , 3107,14 , 13712,28 , 13740,50 , 3107,14 , 467,2 , 439,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 8,5 , 4,0 , 4649,6 , 4655,6 , 2, 1, 1, 6, 7 }, // Friulian/Latin/Italy + { 159, 7, 106, 44, 46, 59, 37, 48, 45, 43, 101, 8216, 8217, 8220, 8221, 0,6 , 0,6 , 250,7 , 250,7 , 27,8 , 1567,27 , 37,5 , 8,10 , 13649,28 , 13677,50 , 3107,14 , 13649,28 , 13677,50 , 3107,14 , 467,2 , 440,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 8,5 , 4,0 , 4648,6 , 4654,6 , 2, 1, 1, 6, 7 }, // Friulian/Latin/Italy { 160, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Venda/Latin/South Africa - { 161, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 896,11 , 907,10 , 547,6 , 1617,23 , 473,12 , 485,17 , 13790,28 , 13818,44 , 13862,14 , 13790,28 , 13818,44 , 13862,14 , 469,3 , 441,5 , 45,4 , 5,17 , 22,23 , {71,72,83}, 167,3 , 15892,37 , 4,4 , 13,6 , 4661,6 , 4667,12 , 2, 1, 1, 6, 7 }, // Ewe/Latin/Ghana - { 161, 7, 212, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 896,11 , 907,10 , 547,6 , 1617,23 , 37,5 , 8,10 , 13790,28 , 13818,44 , 13862,14 , 13790,28 , 13818,44 , 13862,14 , 469,3 , 441,5 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 15929,106 , 4,4 , 13,6 , 4661,6 , 4679,11 , 0, 0, 1, 6, 7 }, // Ewe/Latin/Togo + { 161, 7, 83, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 919,11 , 930,10 , 547,6 , 1594,23 , 496,12 , 508,17 , 13727,28 , 13755,44 , 13799,14 , 13727,28 , 13755,44 , 13799,14 , 469,3 , 442,5 , 45,4 , 5,17 , 22,23 , {71,72,83}, 167,3 , 15814,37 , 4,4 , 13,6 , 4660,6 , 4666,12 , 2, 1, 1, 6, 7 }, // Ewe/Latin/Ghana + { 161, 7, 212, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 919,11 , 930,10 , 547,6 , 1594,23 , 37,5 , 8,10 , 13727,28 , 13755,44 , 13799,14 , 13727,28 , 13755,44 , 13799,14 , 469,3 , 442,5 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 15851,106 , 4,4 , 13,6 , 4660,6 , 4678,11 , 0, 0, 1, 6, 7 }, // Ewe/Latin/Togo { 162, 14, 69, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,84,66}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Walamo/Ethiopic/Ethiopia - { 163, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 269,6 , 10,17 , 18,7 , 25,12 , 13876,21 , 13897,57 , 85,14 , 13876,21 , 13897,57 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 0,7 , 4,4 , 13,6 , 4690,14 , 4704,19 , 2, 1, 7, 6, 7 }, // Hawaiian/Latin/United States + { 163, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 269,6 , 10,17 , 18,7 , 25,12 , 13813,21 , 13834,57 , 85,14 , 13813,21 , 13834,57 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 0,7 , 4,4 , 13,6 , 4689,14 , 4703,19 , 2, 1, 7, 6, 7 }, // Hawaiian/Latin/United States { 164, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Tyap/Latin/Nigeria { 165, 7, 129, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,87,75}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Nyanja/Latin/Malawi - { 166, 7, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 917,9 , 926,8 , 547,6 , 35,18 , 18,7 , 25,12 , 13954,28 , 13982,55 , 13954,28 , 13954,28 , 13982,55 , 13954,28 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {80,72,80}, 179,1 , 16035,58 , 4,4 , 13,6 , 4723,8 , 4731,9 , 2, 1, 7, 6, 7 }, // Filipino/Latin/Philippines - { 167, 7, 206, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 14037,28 , 14065,63 , 3695,14 , 14037,28 , 14065,63 , 3695,14 , 472,12 , 446,11 , 45,4 , 5,17 , 22,23 , {67,72,70}, 224,3 , 16093,55 , 19,5 , 4,0 , 4740,16 , 4756,7 , 2, 0, 1, 6, 7 }, // Swiss German/Latin/Switzerland - { 167, 7, 74, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 14037,28 , 14065,63 , 3695,14 , 14037,28 , 14065,63 , 3695,14 , 472,12 , 446,11 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 4740,16 , 4763,10 , 2, 1, 1, 6, 7 }, // Swiss German/Latin/France - { 167, 7, 123, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 264,9 , 264,9 , 156,8 , 622,18 , 37,5 , 8,10 , 14037,28 , 14065,63 , 3695,14 , 14037,28 , 14065,63 , 3695,14 , 472,12 , 446,11 , 45,4 , 5,17 , 22,23 , {67,72,70}, 224,3 , 16093,55 , 19,5 , 4,0 , 4740,16 , 4773,13 , 2, 0, 1, 6, 7 }, // Swiss German/Latin/Liechtenstein - { 168, 34, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 14128,21 , 14149,28 , 14177,14 , 14128,21 , 14149,28 , 14177,14 , 484,2 , 457,2 , 45,4 , 5,17 , 22,23 , {67,78,89}, 133,1 , 0,7 , 8,5 , 4,0 , 4786,3 , 4789,2 , 2, 1, 7, 6, 7 }, // Sichuan Yi/Yi/China + { 166, 7, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 940,9 , 949,8 , 547,6 , 35,18 , 18,7 , 25,12 , 13891,28 , 13919,55 , 13891,28 , 13891,28 , 13919,55 , 13891,28 , 0,2 , 0,2 , 0,5 , 5,17 , 22,23 , {80,72,80}, 179,1 , 15957,58 , 4,4 , 13,6 , 4722,8 , 4730,9 , 2, 1, 7, 6, 7 }, // Filipino/Latin/Philippines + { 167, 7, 206, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 13974,28 , 14002,63 , 3695,14 , 13974,28 , 14002,63 , 3695,14 , 472,12 , 447,11 , 45,4 , 5,17 , 22,23 , {67,72,70}, 228,3 , 16015,55 , 19,5 , 4,0 , 4739,16 , 4755,7 , 2, 0, 1, 6, 7 }, // Swiss German/Latin/Switzerland + { 167, 7, 74, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 13974,28 , 14002,63 , 3695,14 , 13974,28 , 14002,63 , 3695,14 , 472,12 , 447,11 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 4739,16 , 4762,10 , 2, 1, 1, 6, 7 }, // Swiss German/Latin/France + { 167, 7, 123, 46, 8217, 59, 37, 48, 8722, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 265,9 , 265,9 , 156,8 , 622,18 , 37,5 , 8,10 , 13974,28 , 14002,63 , 3695,14 , 13974,28 , 14002,63 , 3695,14 , 472,12 , 447,11 , 45,4 , 5,17 , 22,23 , {67,72,70}, 228,3 , 16015,55 , 19,5 , 4,0 , 4739,16 , 4772,13 , 2, 0, 1, 6, 7 }, // Swiss German/Latin/Liechtenstein + { 168, 34, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 14065,21 , 14086,28 , 14114,14 , 14065,21 , 14086,28 , 14114,14 , 484,2 , 458,2 , 45,4 , 5,17 , 22,23 , {67,78,89}, 133,1 , 0,7 , 8,5 , 4,0 , 4785,3 , 4788,2 , 2, 1, 7, 6, 7 }, // Sichuan Yi/Yi/China { 169, 7, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Kpelle/Latin/Liberia - { 170, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 456,8 , 456,8 , 365,7 , 1640,23 , 502,10 , 512,19 , 14191,28 , 14219,65 , 3695,14 , 14191,28 , 14219,65 , 3695,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 16148,15 , 19,5 , 4,0 , 4791,14 , 4805,11 , 2, 1, 1, 6, 7 }, // Low German/Latin/Germany - { 170, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 456,8 , 456,8 , 365,7 , 1640,23 , 502,10 , 512,19 , 14191,28 , 14219,65 , 3695,14 , 14191,28 , 14219,65 , 3695,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 16148,15 , 19,5 , 4,0 , 4791,14 , 4816,12 , 2, 1, 1, 6, 7 }, // Low German/Latin/Netherlands + { 170, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 455,8 , 455,8 , 365,7 , 1617,23 , 525,10 , 535,19 , 14128,28 , 14156,65 , 3695,14 , 14128,28 , 14156,65 , 3695,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 16070,15 , 19,5 , 4,0 , 4790,14 , 4804,11 , 2, 1, 1, 6, 7 }, // Low German/Latin/Germany + { 170, 7, 151, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 455,8 , 455,8 , 365,7 , 1617,23 , 525,10 , 535,19 , 14128,28 , 14156,65 , 3695,14 , 14128,28 , 14156,65 , 3695,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 16070,15 , 19,5 , 4,0 , 4790,14 , 4815,12 , 2, 1, 1, 6, 7 }, // Low German/Latin/Netherlands { 171, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // South Ndebele/Latin/South Africa { 172, 7, 195, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {90,65,82}, 5,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Northern Sotho/Latin/South Africa - { 173, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 223,8 , 223,8 , 53,10 , 63,17 , 37,5 , 8,10 , 14284,33 , 14317,75 , 14392,14 , 14284,33 , 14317,75 , 14392,14 , 486,11 , 459,13 , 45,4 , 5,17 , 22,23 , {78,79,75}, 190,2 , 16163,63 , 19,5 , 4,0 , 4828,15 , 4843,5 , 2, 0, 1, 6, 7 }, // Northern Sami/Latin/Norway - { 173, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 223,8 , 223,8 , 495,10 , 97,16 , 37,5 , 8,10 , 14406,21 , 14427,70 , 14497,14 , 14406,21 , 14427,70 , 14497,14 , 497,2 , 472,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 16226,23 , 19,5 , 4,0 , 4828,15 , 4848,6 , 2, 1, 1, 6, 7 }, // Northern Sami/Latin/Finland - { 173, 7, 205, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 223,8 , 223,8 , 53,10 , 63,17 , 37,5 , 8,10 , 14284,33 , 14317,75 , 14392,14 , 14284,33 , 14317,75 , 14392,14 , 486,11 , 459,13 , 45,4 , 5,17 , 22,23 , {83,69,75}, 190,2 , 16249,63 , 19,5 , 4,0 , 4828,15 , 4854,6 , 2, 0, 1, 6, 7 }, // Northern Sami/Latin/Sweden - { 174, 7, 208, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {84,87,68}, 337,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Taroko/Latin/Taiwan - { 175, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14511,28 , 14539,62 , 14601,14 , 14511,28 , 14539,62 , 14601,14 , 499,6 , 474,3 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16312,24 , 4,4 , 13,6 , 4860,8 , 1191,5 , 2, 1, 7, 6, 7 }, // Gusii/Latin/Kenya - { 176, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14615,28 , 14643,105 , 14748,14 , 14615,28 , 14643,105 , 14748,14 , 505,10 , 477,10 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16312,24 , 4,4 , 13,6 , 4868,7 , 1191,5 , 2, 1, 7, 6, 7 }, // Taita/Latin/Kenya - { 177, 7, 187, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14762,28 , 14790,59 , 14849,14 , 14762,28 , 14790,59 , 14849,14 , 515,6 , 487,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16336,26 , 19,5 , 4,0 , 4875,6 , 4431,8 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Senegal - { 177, 7, 34, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14762,28 , 14790,59 , 14849,14 , 14762,28 , 14790,59 , 14849,14 , 515,6 , 487,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16336,26 , 19,5 , 4,0 , 4875,6 , 4881,14 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Burkina Faso - { 177, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14762,28 , 14790,59 , 14849,14 , 14762,28 , 14790,59 , 14849,14 , 515,6 , 487,7 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 16362,25 , 19,5 , 4,0 , 4875,6 , 4895,8 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Cameroon - { 177, 7, 80, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14762,28 , 14790,59 , 14849,14 , 14762,28 , 14790,59 , 14849,14 , 515,6 , 487,7 , 45,4 , 5,17 , 22,23 , {71,77,68}, 166,1 , 16387,20 , 19,5 , 4,0 , 4875,6 , 4903,6 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Gambia - { 177, 7, 83, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14762,28 , 14790,59 , 14849,14 , 14762,28 , 14790,59 , 14849,14 , 515,6 , 487,7 , 45,4 , 5,17 , 22,23 , {71,72,83}, 167,3 , 0,7 , 19,5 , 4,0 , 4875,6 , 4909,5 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Ghana - { 177, 7, 91, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14762,28 , 14790,59 , 14849,14 , 14762,28 , 14790,59 , 14849,14 , 515,6 , 487,7 , 45,4 , 5,17 , 22,23 , {71,78,70}, 216,2 , 0,7 , 19,5 , 4,0 , 4875,6 , 4914,4 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Guinea - { 177, 7, 92, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14762,28 , 14790,59 , 14849,14 , 14762,28 , 14790,59 , 14849,14 , 515,6 , 487,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16336,26 , 19,5 , 4,0 , 4875,6 , 4918,12 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Guinea Bissau - { 177, 7, 121, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14762,28 , 14790,59 , 14849,14 , 14762,28 , 14790,59 , 14849,14 , 515,6 , 487,7 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 16407,23 , 19,5 , 4,0 , 4875,6 , 4930,9 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Liberia - { 177, 7, 136, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14762,28 , 14790,59 , 14849,14 , 14762,28 , 14790,59 , 14849,14 , 515,6 , 487,7 , 45,4 , 5,17 , 22,23 , {77,82,85}, 219,2 , 16430,22 , 19,5 , 4,0 , 4875,6 , 4939,8 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Mauritania - { 177, 7, 156, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14762,28 , 14790,59 , 14849,14 , 14762,28 , 14790,59 , 14849,14 , 515,6 , 487,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16336,26 , 19,5 , 4,0 , 4875,6 , 4947,6 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Niger - { 177, 7, 157, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14762,28 , 14790,59 , 14849,14 , 14762,28 , 14790,59 , 14849,14 , 515,6 , 487,7 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 16452,23 , 19,5 , 4,0 , 4875,6 , 4953,9 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Nigeria - { 177, 7, 189, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14762,28 , 14790,59 , 14849,14 , 14762,28 , 14790,59 , 14849,14 , 515,6 , 487,7 , 45,4 , 5,17 , 22,23 , {83,76,76}, 187,2 , 16475,25 , 19,5 , 4,0 , 4875,6 , 4962,11 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Sierra Leone - { 178, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14863,28 , 14891,63 , 14954,14 , 14863,28 , 14891,63 , 14954,14 , 521,6 , 494,8 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16500,23 , 4,4 , 13,6 , 4973,6 , 1191,5 , 2, 1, 7, 6, 7 }, // Kikuyu/Latin/Kenya - { 179, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14968,28 , 14996,105 , 15101,14 , 14968,28 , 14996,105 , 15101,14 , 527,7 , 502,5 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16523,25 , 4,4 , 13,6 , 4979,8 , 1191,5 , 2, 1, 7, 6, 7 }, // Samburu/Latin/Kenya - { 180, 7, 146, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 669,27 , 37,5 , 8,10 , 15115,28 , 15143,55 , 15198,14 , 15115,28 , 15143,55 , 15198,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,90,78}, 278,3 , 16548,28 , 0,4 , 4,0 , 4987,4 , 3371,10 , 2, 1, 7, 6, 7 }, // Sena/Latin/Mozambique - { 181, 7, 240, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15212,28 , 15240,50 , 15290,14 , 15212,28 , 15240,50 , 15290,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 16576,24 , 4,4 , 13,6 , 4991,10 , 1815,8 , 2, 1, 7, 6, 7 }, // North Ndebele/Latin/Zimbabwe - { 182, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15304,29 , 15333,65 , 15398,14 , 15304,29 , 15333,65 , 15398,14 , 534,8 , 507,7 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16600,25 , 4,4 , 4,0 , 5001,9 , 1620,8 , 2, 0, 1, 6, 7 }, // Rombo/Latin/Tanzania - { 183, 9, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 15412,30 , 15442,47 , 85,14 , 15412,30 , 15442,47 , 85,14 , 542,6 , 514,8 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 16625,21 , 0,4 , 4,0 , 5010,7 , 5017,6 , 2, 1, 1, 6, 7 }, // Tachelhit/Tifinagh/Morocco - { 183, 7, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 15489,30 , 15519,48 , 85,14 , 15489,30 , 15519,48 , 85,14 , 548,6 , 522,8 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 16646,21 , 0,4 , 4,0 , 5023,10 , 5033,6 , 2, 1, 1, 6, 7 }, // Tachelhit/Latin/Morocco - { 184, 7, 3, 44, 160, 59, 37, 48, 45, 43, 122, 171, 187, 8220, 8221, 0,6 , 0,6 , 934,12 , 946,11 , 415,8 , 97,16 , 18,7 , 25,12 , 15567,28 , 15595,34 , 15629,14 , 15643,30 , 15673,51 , 15724,14 , 554,7 , 530,9 , 1197,7 , 1204,21 , 22,23 , {68,90,68}, 205,2 , 16667,53 , 0,4 , 4,0 , 5039,9 , 5048,8 , 2, 1, 6, 5, 6 }, // Kabyle/Latin/Algeria - { 185, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15738,28 , 15766,74 , 15840,14 , 15738,28 , 15766,74 , 15840,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 16720,26 , 4,4 , 4,0 , 5056,10 , 1685,6 , 0, 0, 1, 7, 7 }, // Nyankole/Latin/Uganda - { 186, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15854,28 , 15882,82 , 15964,14 , 15854,28 , 15882,82 , 15964,14 , 561,7 , 539,7 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16746,29 , 0,4 , 4,0 , 5066,6 , 5072,10 , 2, 0, 1, 6, 7 }, // Bena/Latin/Tanzania - { 187, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15978,28 , 16006,62 , 16068,14 , 15978,28 , 16006,62 , 16068,14 , 568,5 , 546,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16775,27 , 4,4 , 4,0 , 5082,8 , 1620,8 , 2, 0, 1, 6, 7 }, // Vunjo/Latin/Tanzania - { 188, 7, 132, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 16082,28 , 16110,44 , 16154,14 , 16082,28 , 16110,44 , 16154,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16802,24 , 4,4 , 13,6 , 5090,9 , 2184,4 , 0, 0, 1, 6, 7 }, // Bambara/Latin/Mali + { 173, 7, 161, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 224,8 , 224,8 , 53,10 , 63,17 , 37,5 , 8,10 , 14221,33 , 14254,75 , 14329,14 , 14221,33 , 14254,75 , 14329,14 , 486,11 , 460,13 , 45,4 , 5,17 , 22,23 , {78,79,75}, 190,2 , 16085,63 , 19,5 , 4,0 , 4827,15 , 4842,5 , 2, 0, 1, 6, 7 }, // Northern Sami/Latin/Norway + { 173, 7, 73, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 224,8 , 224,8 , 495,10 , 97,16 , 37,5 , 8,10 , 14343,21 , 14364,70 , 14434,14 , 14343,21 , 14364,70 , 14434,14 , 497,2 , 473,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 16148,23 , 19,5 , 4,0 , 4827,15 , 4847,6 , 2, 1, 1, 6, 7 }, // Northern Sami/Latin/Finland + { 173, 7, 205, 44, 160, 59, 37, 48, 8722, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 224,8 , 224,8 , 53,10 , 63,17 , 37,5 , 8,10 , 14221,33 , 14254,75 , 14329,14 , 14221,33 , 14254,75 , 14329,14 , 486,11 , 460,13 , 45,4 , 5,17 , 22,23 , {83,69,75}, 190,2 , 16171,63 , 19,5 , 4,0 , 4827,15 , 4853,6 , 2, 0, 1, 6, 7 }, // Northern Sami/Latin/Sweden + { 174, 7, 208, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {84,87,68}, 341,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Taroko/Latin/Taiwan + { 175, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14448,28 , 14476,62 , 14538,14 , 14448,28 , 14476,62 , 14538,14 , 499,6 , 475,3 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16234,24 , 4,4 , 13,6 , 4859,8 , 1191,5 , 2, 1, 7, 6, 7 }, // Gusii/Latin/Kenya + { 176, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14552,28 , 14580,105 , 14685,14 , 14552,28 , 14580,105 , 14685,14 , 505,10 , 478,10 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16234,24 , 4,4 , 13,6 , 4867,7 , 1191,5 , 2, 1, 7, 6, 7 }, // Taita/Latin/Kenya + { 177, 7, 187, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16258,26 , 19,5 , 4,0 , 4874,6 , 4451,8 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Senegal + { 177, 7, 34, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16258,26 , 19,5 , 4,0 , 4874,6 , 4880,14 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Burkina Faso + { 177, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 16284,25 , 19,5 , 4,0 , 4874,6 , 4894,8 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Cameroon + { 177, 7, 80, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {71,77,68}, 166,1 , 16309,20 , 19,5 , 4,0 , 4874,6 , 4902,6 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Gambia + { 177, 7, 83, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {71,72,83}, 167,3 , 0,7 , 19,5 , 4,0 , 4874,6 , 4908,5 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Ghana + { 177, 7, 91, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {71,78,70}, 220,2 , 0,7 , 19,5 , 4,0 , 4874,6 , 4913,4 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Guinea + { 177, 7, 92, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16258,26 , 19,5 , 4,0 , 4874,6 , 4917,12 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Guinea Bissau + { 177, 7, 121, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 16329,23 , 19,5 , 4,0 , 4874,6 , 4929,9 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Liberia + { 177, 7, 136, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {77,82,85}, 223,2 , 16352,22 , 19,5 , 4,0 , 4874,6 , 4938,8 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Mauritania + { 177, 7, 156, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16258,26 , 19,5 , 4,0 , 4874,6 , 4946,6 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Niger + { 177, 7, 157, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {78,71,78}, 178,1 , 16374,23 , 19,5 , 4,0 , 4874,6 , 4952,9 , 2, 1, 1, 6, 7 }, // Fulah/Latin/Nigeria + { 177, 7, 189, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 18,7 , 25,12 , 14699,28 , 14727,59 , 14786,14 , 14699,28 , 14727,59 , 14786,14 , 515,6 , 488,7 , 45,4 , 5,17 , 22,23 , {83,76,76}, 187,2 , 16397,25 , 19,5 , 4,0 , 4874,6 , 4961,11 , 0, 0, 1, 6, 7 }, // Fulah/Latin/Sierra Leone + { 178, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14800,28 , 14828,63 , 14891,14 , 14800,28 , 14828,63 , 14891,14 , 521,6 , 495,8 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16422,23 , 4,4 , 13,6 , 4972,6 , 1191,5 , 2, 1, 7, 6, 7 }, // Kikuyu/Latin/Kenya + { 179, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 14905,28 , 14933,105 , 15038,14 , 14905,28 , 14933,105 , 15038,14 , 527,7 , 503,5 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16445,25 , 4,4 , 13,6 , 4978,8 , 1191,5 , 2, 1, 7, 6, 7 }, // Samburu/Latin/Kenya + { 180, 7, 146, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 669,27 , 37,5 , 8,10 , 15052,28 , 15080,55 , 15135,14 , 15052,28 , 15080,55 , 15135,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,90,78}, 282,3 , 16470,28 , 0,4 , 4,0 , 4986,4 , 3382,10 , 2, 1, 7, 6, 7 }, // Sena/Latin/Mozambique + { 181, 7, 240, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15149,28 , 15177,50 , 15227,14 , 15149,28 , 15177,50 , 15227,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 16498,24 , 4,4 , 13,6 , 4990,10 , 1819,8 , 2, 1, 7, 6, 7 }, // North Ndebele/Latin/Zimbabwe + { 182, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15241,29 , 15270,65 , 15335,14 , 15241,29 , 15270,65 , 15335,14 , 534,8 , 508,7 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16522,25 , 4,4 , 4,0 , 5000,9 , 1624,8 , 2, 0, 1, 6, 7 }, // Rombo/Latin/Tanzania + { 183, 9, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 15349,30 , 15379,47 , 85,14 , 15349,30 , 15379,47 , 85,14 , 542,6 , 515,8 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 16547,21 , 0,4 , 4,0 , 5009,7 , 5016,6 , 2, 1, 1, 6, 7 }, // Tachelhit/Tifinagh/Morocco + { 183, 7, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 15426,30 , 15456,48 , 85,14 , 15426,30 , 15456,48 , 85,14 , 548,6 , 523,8 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 16568,21 , 0,4 , 4,0 , 5022,10 , 5032,6 , 2, 1, 1, 6, 7 }, // Tachelhit/Latin/Morocco + { 184, 7, 3, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 957,8 , 965,7 , 415,8 , 97,16 , 18,7 , 25,12 , 15504,28 , 15532,34 , 15566,14 , 15580,30 , 15610,51 , 15661,14 , 554,7 , 531,9 , 1266,7 , 1273,21 , 22,23 , {68,90,68}, 205,2 , 16589,57 , 0,4 , 4,0 , 5038,9 , 5047,8 , 2, 1, 6, 5, 6 }, // Kabyle/Latin/Algeria + { 185, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15675,28 , 15703,74 , 15777,14 , 15675,28 , 15703,74 , 15777,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 16646,26 , 4,4 , 4,0 , 5055,10 , 1689,6 , 0, 0, 1, 7, 7 }, // Nyankole/Latin/Uganda + { 186, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15791,28 , 15819,82 , 15901,14 , 15791,28 , 15819,82 , 15901,14 , 561,7 , 540,7 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16672,29 , 0,4 , 4,0 , 5065,6 , 5071,10 , 2, 0, 1, 6, 7 }, // Bena/Latin/Tanzania + { 187, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15915,28 , 15943,62 , 16005,14 , 15915,28 , 15943,62 , 16005,14 , 568,5 , 547,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16701,27 , 4,4 , 4,0 , 5081,8 , 1624,8 , 2, 0, 1, 6, 7 }, // Vunjo/Latin/Tanzania + { 188, 7, 132, 46, 44, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 16019,28 , 16047,44 , 16091,14 , 16019,28 , 16047,44 , 16091,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 16728,24 , 4,4 , 13,6 , 5089,9 , 2188,4 , 0, 0, 1, 6, 7 }, // Bambara/Latin/Mali { 188, 75, 132, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Bambara/Nko/Mali - { 189, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16168,28 , 16196,64 , 16260,14 , 16168,28 , 16196,64 , 16260,14 , 573,2 , 555,2 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16312,24 , 4,4 , 13,6 , 5099,6 , 1191,5 , 2, 1, 7, 6, 7 }, // Embu/Latin/Kenya - { 190, 12, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 957,9 , 966,8 , 547,6 , 35,18 , 18,7 , 25,12 , 16274,28 , 16302,49 , 16351,14 , 16274,28 , 16302,49 , 16351,14 , 575,3 , 557,6 , 1225,6 , 5,17 , 22,23 , {85,83,68}, 6,1 , 16826,25 , 4,4 , 13,6 , 5105,3 , 5108,15 , 2, 1, 7, 6, 7 }, // Cherokee/Cherokee/United States - { 191, 7, 137, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 16365,27 , 16392,48 , 16440,14 , 16365,27 , 16392,48 , 16440,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,85,82}, 176,2 , 16851,21 , 8,5 , 4,0 , 5123,14 , 5137,5 , 2, 0, 1, 6, 7 }, // Morisyen/Latin/Mauritius - { 192, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16454,28 , 16482,133 , 15398,14 , 16454,28 , 16482,133 , 15398,14 , 578,4 , 563,5 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16775,27 , 4,4 , 13,6 , 5142,10 , 1620,8 , 2, 0, 1, 6, 7 }, // Makonde/Latin/Tanzania - { 193, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16615,36 , 16651,63 , 16714,14 , 16615,36 , 16651,63 , 16714,14 , 582,3 , 568,3 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16872,29 , 8,5 , 4,0 , 5152,8 , 5160,9 , 2, 0, 1, 6, 7 }, // Langi/Latin/Tanzania - { 194, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16728,28 , 16756,66 , 16822,14 , 16728,28 , 16756,66 , 16822,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 16901,26 , 0,4 , 4,0 , 5169,7 , 5176,7 , 0, 0, 1, 7, 7 }, // Ganda/Latin/Uganda - { 195, 7, 239, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 16836,80 , 16836,80 , 85,14 , 16836,80 , 16836,80 , 85,14 , 585,8 , 571,7 , 45,4 , 5,17 , 22,23 , {90,77,87}, 131,1 , 0,7 , 4,4 , 13,6 , 5183,9 , 1809,6 , 2, 1, 1, 6, 7 }, // Bemba/Latin/Zambia - { 196, 7, 39, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 158,7 , 158,7 , 119,10 , 1663,27 , 37,5 , 8,10 , 16916,28 , 16944,73 , 17017,14 , 16916,28 , 17031,73 , 17017,14 , 68,2 , 65,2 , 45,4 , 5,17 , 22,23 , {67,86,69}, 277,1 , 16927,43 , 19,5 , 24,7 , 5192,12 , 5204,10 , 2, 1, 1, 6, 7 }, // Kabuverdianu/Latin/Cape Verde - { 197, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17104,28 , 17132,51 , 17183,14 , 17104,28 , 17132,51 , 17183,14 , 593,2 , 578,2 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16312,24 , 4,4 , 13,6 , 5214,6 , 1191,5 , 2, 1, 7, 6, 7 }, // Meru/Latin/Kenya - { 198, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17197,28 , 17225,53 , 17278,14 , 17197,28 , 17225,53 , 17278,14 , 595,6 , 580,10 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16970,26 , 4,4 , 13,6 , 5220,8 , 5228,12 , 2, 1, 7, 6, 7 }, // Kalenjin/Latin/Kenya - { 199, 7, 148, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 17292,23 , 17315,92 , 17407,14 , 17292,23 , 17315,92 , 17407,14 , 601,7 , 590,5 , 45,4 , 5,17 , 22,23 , {78,65,68}, 6,1 , 16996,22 , 4,4 , 4,0 , 5240,13 , 5253,8 , 2, 1, 1, 6, 7 }, // Nama/Latin/Namibia - { 200, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15978,28 , 16006,62 , 16068,14 , 15978,28 , 16006,62 , 16068,14 , 568,5 , 546,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16775,27 , 4,4 , 4,0 , 5261,9 , 1620,8 , 2, 0, 1, 6, 7 }, // Machame/Latin/Tanzania - { 201, 7, 82, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 456,8 , 456,8 , 1141,10 , 1690,23 , 37,5 , 8,10 , 17421,28 , 17449,72 , 3695,14 , 17421,28 , 17449,72 , 3695,14 , 608,16 , 595,16 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 17018,11 , 19,5 , 4,0 , 5270,6 , 5276,11 , 2, 1, 1, 6, 7 }, // Colognian/Latin/Germany - { 202, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15978,28 , 17521,58 , 15398,14 , 15978,28 , 17521,58 , 15398,14 , 624,9 , 611,6 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 17029,25 , 4,4 , 13,6 , 5287,3 , 1191,5 , 2, 1, 7, 6, 7 }, // Masai/Latin/Kenya - { 202, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15978,28 , 17521,58 , 15398,14 , 15978,28 , 17521,58 , 15398,14 , 624,9 , 611,6 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 17054,28 , 4,4 , 13,6 , 5287,3 , 5290,8 , 2, 0, 1, 6, 7 }, // Masai/Latin/Tanzania - { 203, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17579,35 , 17614,65 , 17679,14 , 17579,35 , 17614,65 , 17679,14 , 633,6 , 617,6 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 16901,26 , 19,5 , 4,0 , 5298,7 , 5176,7 , 0, 0, 1, 7, 7 }, // Soga/Latin/Uganda - { 204, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17693,21 , 17714,75 , 85,14 , 17693,21 , 17714,75 , 85,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 17082,23 , 4,4 , 68,6 , 5305,7 , 1191,5 , 2, 1, 7, 6, 7 }, // Luyia/Latin/Kenya - { 205, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17789,28 , 10244,60 , 16068,14 , 17789,28 , 10244,60 , 16068,14 , 639,9 , 623,8 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 17105,28 , 19,5 , 4,0 , 5312,6 , 5318,8 , 2, 0, 1, 6, 7 }, // Asu/Latin/Tanzania - { 206, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17817,28 , 17845,69 , 17914,14 , 17817,28 , 17845,69 , 17914,14 , 648,9 , 631,6 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 17133,28 , 4,4 , 13,6 , 5326,6 , 1685,6 , 0, 0, 1, 7, 7 }, // Teso/Latin/Uganda - { 206, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17817,28 , 17845,69 , 17914,14 , 17817,28 , 17845,69 , 17914,14 , 648,9 , 631,6 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 17161,27 , 4,4 , 13,6 , 5326,6 , 5332,5 , 2, 1, 7, 6, 7 }, // Teso/Latin/Kenya + { 189, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16105,28 , 16133,64 , 16197,14 , 16105,28 , 16133,64 , 16197,14 , 573,2 , 556,2 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16234,24 , 4,4 , 13,6 , 5098,6 , 1191,5 , 2, 1, 7, 6, 7 }, // Embu/Latin/Kenya + { 190, 12, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 972,9 , 981,8 , 547,6 , 35,18 , 18,7 , 25,12 , 16211,28 , 16239,49 , 16288,14 , 16211,28 , 16239,49 , 16288,14 , 575,3 , 558,6 , 1294,6 , 5,17 , 22,23 , {85,83,68}, 6,1 , 16752,25 , 4,4 , 13,6 , 5104,3 , 5107,15 , 2, 1, 7, 6, 7 }, // Cherokee/Cherokee/United States + { 191, 7, 137, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 16302,27 , 16329,48 , 16377,14 , 16302,27 , 16329,48 , 16377,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {77,85,82}, 176,2 , 16777,21 , 8,5 , 4,0 , 5122,14 , 5136,5 , 2, 0, 1, 6, 7 }, // Morisyen/Latin/Mauritius + { 192, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16391,28 , 16419,133 , 15335,14 , 16391,28 , 16419,133 , 15335,14 , 578,4 , 564,5 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16701,27 , 4,4 , 13,6 , 5141,10 , 1624,8 , 2, 0, 1, 6, 7 }, // Makonde/Latin/Tanzania + { 193, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8221, 8221, 8217, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16552,36 , 16588,63 , 16651,14 , 16552,36 , 16588,63 , 16651,14 , 582,3 , 569,3 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16798,29 , 8,5 , 4,0 , 5151,8 , 5159,9 , 2, 0, 1, 6, 7 }, // Langi/Latin/Tanzania + { 194, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16665,28 , 16693,66 , 16759,14 , 16665,28 , 16693,66 , 16759,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 16827,26 , 0,4 , 4,0 , 5168,7 , 5175,7 , 0, 0, 1, 7, 7 }, // Ganda/Latin/Uganda + { 195, 7, 239, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 16773,80 , 16773,80 , 85,14 , 16773,80 , 16773,80 , 85,14 , 585,8 , 572,7 , 45,4 , 5,17 , 22,23 , {90,77,87}, 131,1 , 0,7 , 4,4 , 13,6 , 5182,9 , 1813,6 , 2, 1, 1, 6, 7 }, // Bemba/Latin/Zambia + { 196, 7, 39, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 159,7 , 159,7 , 119,10 , 1640,27 , 37,5 , 8,10 , 16853,28 , 16881,73 , 16954,14 , 16853,28 , 16881,73 , 16954,14 , 68,2 , 65,2 , 45,4 , 5,17 , 22,23 , {67,86,69}, 281,1 , 16853,43 , 19,5 , 24,7 , 5191,12 , 5203,10 , 2, 1, 1, 6, 7 }, // Kabuverdianu/Latin/Cape Verde + { 197, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 16968,28 , 16996,51 , 17047,14 , 16968,28 , 16996,51 , 17047,14 , 593,2 , 579,2 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16234,24 , 4,4 , 13,6 , 5213,6 , 1191,5 , 2, 1, 7, 6, 7 }, // Meru/Latin/Kenya + { 198, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17061,28 , 17089,53 , 17142,14 , 17061,28 , 17089,53 , 17142,14 , 595,6 , 581,10 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16896,26 , 4,4 , 13,6 , 5219,8 , 5227,12 , 2, 1, 7, 6, 7 }, // Kalenjin/Latin/Kenya + { 199, 7, 148, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 17156,23 , 17179,92 , 17271,14 , 17156,23 , 17179,92 , 17271,14 , 601,7 , 591,5 , 45,4 , 5,17 , 22,23 , {78,65,68}, 6,1 , 16922,22 , 4,4 , 4,0 , 5239,13 , 5252,8 , 2, 1, 1, 6, 7 }, // Nama/Latin/Namibia + { 200, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15915,28 , 15943,62 , 16005,14 , 15915,28 , 15943,62 , 16005,14 , 568,5 , 547,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16701,27 , 4,4 , 4,0 , 5260,9 , 1624,8 , 2, 0, 1, 6, 7 }, // Machame/Latin/Tanzania + { 201, 7, 82, 44, 160, 59, 37, 48, 8722, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 455,8 , 455,8 , 1141,10 , 1667,23 , 37,5 , 8,10 , 17285,28 , 17313,72 , 3695,14 , 17285,28 , 17313,72 , 3695,14 , 608,16 , 596,16 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 16944,11 , 19,5 , 4,0 , 5269,6 , 5275,11 , 2, 1, 1, 6, 7 }, // Colognian/Latin/Germany + { 202, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15915,28 , 17385,58 , 15335,14 , 15915,28 , 17385,58 , 15335,14 , 624,9 , 612,6 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 16955,25 , 4,4 , 13,6 , 5286,3 , 1191,5 , 2, 1, 7, 6, 7 }, // Masai/Latin/Kenya + { 202, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15915,28 , 17385,58 , 15335,14 , 15915,28 , 17385,58 , 15335,14 , 624,9 , 612,6 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16980,28 , 4,4 , 13,6 , 5286,3 , 5289,8 , 2, 0, 1, 6, 7 }, // Masai/Latin/Tanzania + { 203, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17443,35 , 17478,65 , 17543,14 , 17443,35 , 17478,65 , 17543,14 , 633,6 , 618,6 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 16827,26 , 19,5 , 4,0 , 5297,7 , 5175,7 , 0, 0, 1, 7, 7 }, // Soga/Latin/Uganda + { 204, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17557,21 , 17578,75 , 85,14 , 17557,21 , 17578,75 , 85,14 , 64,4 , 61,4 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 17008,23 , 4,4 , 68,6 , 5304,7 , 1191,5 , 2, 1, 7, 6, 7 }, // Luyia/Latin/Kenya + { 205, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17653,28 , 10371,60 , 16005,14 , 17653,28 , 10371,60 , 16005,14 , 639,9 , 624,8 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 17031,28 , 19,5 , 4,0 , 5311,6 , 5317,8 , 2, 0, 1, 6, 7 }, // Asu/Latin/Tanzania + { 206, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17681,28 , 17709,69 , 17778,14 , 17681,28 , 17709,69 , 17778,14 , 648,9 , 632,6 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 17059,28 , 4,4 , 13,6 , 5325,6 , 1689,6 , 0, 0, 1, 7, 7 }, // Teso/Latin/Uganda + { 206, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17681,28 , 17709,69 , 17778,14 , 17681,28 , 17709,69 , 17778,14 , 648,9 , 632,6 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 17087,27 , 4,4 , 13,6 , 5325,6 , 5331,5 , 2, 1, 7, 6, 7 }, // Teso/Latin/Kenya { 207, 7, 67, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,82,78}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Saho/Latin/Eritrea - { 208, 7, 132, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 17928,28 , 17956,53 , 18009,14 , 17928,28 , 17956,53 , 18009,14 , 657,6 , 637,6 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17188,23 , 0,4 , 4,0 , 5337,11 , 5348,5 , 0, 0, 1, 6, 7 }, // Koyra Chiini/Latin/Mali - { 209, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15978,28 , 16006,62 , 16068,14 , 15978,28 , 16006,62 , 16068,14 , 568,5 , 546,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16775,27 , 0,4 , 4,0 , 5353,6 , 1620,8 , 2, 0, 1, 6, 7 }, // Rwa/Latin/Tanzania - { 210, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 18023,28 , 18051,69 , 18120,14 , 18023,28 , 18051,69 , 18120,14 , 663,2 , 643,2 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 17211,23 , 0,4 , 4,0 , 5359,6 , 1191,5 , 2, 1, 7, 6, 7 }, // Luo/Latin/Kenya - { 211, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15738,28 , 15766,74 , 15840,14 , 15738,28 , 15766,74 , 15840,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 16720,26 , 4,4 , 4,0 , 5365,6 , 1685,6 , 0, 0, 1, 7, 7 }, // Chiga/Latin/Uganda - { 212, 7, 145, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 18134,28 , 18162,48 , 18210,14 , 18134,28 , 18162,48 , 18210,14 , 665,9 , 645,10 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 17234,22 , 19,5 , 4,0 , 5371,17 , 5388,6 , 2, 1, 1, 6, 7 }, // Central Morocco Tamazight/Latin/Morocco - { 213, 7, 132, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18224,28 , 18252,54 , 18009,14 , 18224,28 , 18252,54 , 18009,14 , 657,6 , 637,6 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17188,23 , 0,4 , 4,0 , 5394,15 , 5348,5 , 0, 0, 1, 6, 7 }, // Koyraboro Senni/Latin/Mali - { 214, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 18306,28 , 18334,63 , 18397,14 , 18306,28 , 18334,63 , 18397,14 , 674,5 , 655,8 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 17256,27 , 0,4 , 4,0 , 5409,9 , 1620,8 , 2, 0, 1, 6, 7 }, // Shambala/Latin/Tanzania - { 215, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 547,6 , 35,18 , 18,7 , 25,12 , 18411,33 , 18444,54 , 18498,19 , 18411,33 , 18444,54 , 18498,19 , 679,3 , 663,6 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 17283,10 , 8,5 , 4,0 , 5418,4 , 2662,4 , 2, 1, 7, 7, 7 }, // Bodo/Devanagari/India - { 218, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 18517,25 , 18542,45 , 18587,17 , 18517,25 , 18542,45 , 18517,25 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 17293,43 , 19,5 , 4,0 , 5422,7 , 5429,5 , 2, 1, 1, 6, 7 }, // Chechen/Cyrillic/Russia - { 219, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 974,8 , 974,8 , 1003,10 , 1713,23 , 37,5 , 8,10 , 18604,37 , 18641,68 , 11669,14 , 18604,37 , 18641,68 , 11669,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 17336,44 , 19,5 , 4,0 , 5434,19 , 5453,7 , 2, 1, 1, 6, 7 }, // Church/Cyrillic/Russia + { 208, 7, 132, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 17792,28 , 17820,53 , 17873,14 , 17792,28 , 17820,53 , 17873,14 , 657,6 , 638,6 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17114,23 , 0,4 , 4,0 , 5336,11 , 5347,5 , 0, 0, 1, 6, 7 }, // Koyra Chiini/Latin/Mali + { 209, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15915,28 , 15943,62 , 16005,14 , 15915,28 , 15943,62 , 16005,14 , 568,5 , 547,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 16701,27 , 0,4 , 4,0 , 5352,6 , 1624,8 , 2, 0, 1, 6, 7 }, // Rwa/Latin/Tanzania + { 210, 7, 111, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17887,28 , 17915,69 , 17984,14 , 17887,28 , 17915,69 , 17984,14 , 663,2 , 644,2 , 45,4 , 5,17 , 22,23 , {75,69,83}, 2,3 , 17137,23 , 0,4 , 4,0 , 5358,6 , 1191,5 , 2, 1, 7, 6, 7 }, // Luo/Latin/Kenya + { 211, 7, 221, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 15675,28 , 15703,74 , 15777,14 , 15675,28 , 15703,74 , 15777,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,71,88}, 197,3 , 16646,26 , 4,4 , 4,0 , 5364,6 , 1689,6 , 0, 0, 1, 7, 7 }, // Chiga/Latin/Uganda + { 212, 7, 145, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 17998,28 , 18026,48 , 18074,14 , 17998,28 , 18026,48 , 18074,14 , 665,9 , 646,10 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 17160,22 , 19,5 , 4,0 , 5370,17 , 5387,6 , 2, 1, 1, 6, 7 }, // Central Morocco Tamazight/Latin/Morocco + { 213, 7, 132, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18088,28 , 18116,54 , 17873,14 , 18088,28 , 18116,54 , 17873,14 , 657,6 , 638,6 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17114,23 , 0,4 , 4,0 , 5393,15 , 5347,5 , 0, 0, 1, 6, 7 }, // Koyraboro Senni/Latin/Mali + { 214, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 18170,28 , 18198,63 , 18261,14 , 18170,28 , 18198,63 , 18261,14 , 674,5 , 656,8 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 17182,27 , 0,4 , 4,0 , 5408,9 , 1624,8 , 2, 0, 1, 6, 7 }, // Shambala/Latin/Tanzania + { 215, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 547,6 , 35,18 , 18,7 , 25,12 , 18275,33 , 18308,54 , 18362,19 , 18275,33 , 18308,54 , 18362,19 , 679,3 , 664,6 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 17209,10 , 8,5 , 4,0 , 5417,4 , 2666,4 , 2, 1, 7, 7, 7 }, // Bodo/Devanagari/India + { 218, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 18381,25 , 18406,45 , 18451,17 , 18381,25 , 18406,45 , 18381,25 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 17219,43 , 19,5 , 4,0 , 5421,7 , 5428,5 , 2, 1, 1, 6, 7 }, // Chechen/Cyrillic/Russia + { 219, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Church/Cyrillic/Russia { 220, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Chuvash/Cyrillic/Russia - { 230, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18709,28 , 18737,50 , 18787,14 , 18709,28 , 18737,50 , 18787,14 , 682,5 , 669,6 , 45,4 , 5,17 , 22,23 , {67,68,70}, 210,2 , 17380,24 , 0,4 , 4,0 , 5460,8 , 5468,16 , 2, 1, 1, 6, 7 }, // Luba Katanga/Latin/Congo Kinshasa - { 231, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 982,10 , 982,10 , 156,8 , 622,18 , 37,5 , 8,10 , 18801,28 , 18829,65 , 3695,14 , 18894,35 , 18829,65 , 3695,14 , 687,5 , 675,8 , 445,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 5484,14 , 5498,10 , 2, 1, 1, 6, 7 }, // Luxembourgish/Latin/Luxembourg + { 230, 7, 49, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18468,28 , 18496,50 , 18546,14 , 18468,28 , 18496,50 , 18546,14 , 682,5 , 670,6 , 45,4 , 5,17 , 22,23 , {67,68,70}, 214,2 , 17262,24 , 0,4 , 4,0 , 5433,8 , 5441,16 , 2, 1, 1, 6, 7 }, // Luba Katanga/Latin/Congo Kinshasa + { 231, 7, 125, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 989,10 , 989,10 , 156,8 , 622,18 , 37,5 , 8,10 , 18560,28 , 18588,65 , 3695,14 , 18653,35 , 18588,65 , 3695,14 , 687,5 , 676,8 , 424,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 8436,19 , 19,5 , 4,0 , 5457,14 , 5471,10 , 2, 1, 1, 6, 7 }, // Luxembourgish/Latin/Luxembourg + { 232, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Navaho/Latin/United States { 236, 7, 21, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Walloon/Latin/Belgium - { 237, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18929,28 , 18957,72 , 19029,14 , 18929,28 , 18957,72 , 19029,14 , 692,3 , 683,3 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17404,21 , 0,4 , 4,0 , 5508,5 , 5513,7 , 0, 0, 1, 6, 7 }, // Aghem/Latin/Cameroon - { 238, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19043,28 , 19071,70 , 19141,14 , 19043,28 , 19071,70 , 19141,14 , 695,10 , 686,9 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17425,22 , 19,5 , 4,0 , 5520,5 , 5525,8 , 0, 0, 1, 6, 7 }, // Basaa/Latin/Cameroon - { 239, 7, 156, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18224,28 , 19155,53 , 19208,14 , 18224,28 , 19155,53 , 19208,14 , 705,8 , 695,10 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17188,23 , 0,4 , 4,0 , 5533,10 , 5543,5 , 0, 0, 1, 6, 7 }, // Zarma/Latin/Niger - { 240, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19222,28 , 19250,45 , 19295,14 , 19222,28 , 19250,45 , 19295,14 , 713,5 , 705,6 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 0,7 , 19,5 , 4,0 , 5548,5 , 1981,8 , 0, 0, 1, 6, 7 }, // Duala/Latin/Cameroon - { 241, 7, 187, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19309,28 , 19337,50 , 19387,14 , 19309,28 , 19337,50 , 19387,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17447,23 , 19,5 , 4,0 , 5553,5 , 5558,7 , 0, 0, 1, 6, 7 }, // Jola Fonyi/Latin/Senegal - { 242, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19401,30 , 19431,85 , 19516,14 , 19401,30 , 19431,85 , 19516,14 , 718,7 , 711,9 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17470,23 , 19,5 , 4,0 , 5565,6 , 5571,7 , 0, 0, 1, 6, 7 }, // Ewondo/Latin/Cameroon - { 243, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19530,29 , 19559,45 , 19604,14 , 19530,29 , 19559,45 , 19604,14 , 725,6 , 720,7 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17493,11 , 19,5 , 4,0 , 5578,5 , 5583,7 , 0, 0, 1, 6, 7 }, // Bafia/Latin/Cameroon - { 244, 7, 146, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 19618,28 , 19646,59 , 19705,14 , 19618,28 , 19646,59 , 19705,14 , 731,8 , 727,10 , 45,4 , 5,17 , 22,23 , {77,90,78}, 278,3 , 0,7 , 8,5 , 4,0 , 5590,5 , 5595,10 , 2, 1, 7, 6, 7 }, // Makhuwa Meetto/Latin/Mozambique - { 245, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19719,28 , 19747,74 , 19821,14 , 19719,28 , 19747,74 , 19821,14 , 739,5 , 737,5 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17504,17 , 4,4 , 13,6 , 5605,6 , 5611,7 , 0, 0, 1, 6, 7 }, // Mundang/Latin/Cameroon - { 246, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19835,30 , 19865,89 , 19954,14 , 19835,30 , 19865,89 , 19954,14 , 744,4 , 742,4 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17521,20 , 19,5 , 4,0 , 5618,6 , 5624,7 , 0, 0, 1, 6, 7 }, // Kwasio/Latin/Cameroon - { 247, 7, 254, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 538,9 , 97,16 , 18,7 , 531,12 , 19968,38 , 20006,79 , 20085,14 , 19968,38 , 20006,79 , 20085,14 , 748,2 , 746,2 , 45,4 , 5,17 , 22,23 , {83,83,80}, 119,1 , 0,7 , 4,4 , 13,6 , 5631,9 , 0,0 , 2, 1, 1, 6, 7 }, // Nuer/Latin/South Sudan - { 248, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 992,11 , 992,11 , 227,6 , 1736,30 , 37,5 , 8,10 , 20099,21 , 20120,71 , 20191,14 , 20099,21 , 20120,71 , 20191,14 , 750,2 , 748,2 , 1231,5 , 1236,17 , 22,23 , {82,85,66}, 123,1 , 17541,47 , 19,5 , 4,0 , 5640,9 , 5649,9 , 2, 1, 1, 6, 7 }, // Sakha/Cyrillic/Russia - { 249, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 20205,28 , 20233,60 , 20293,14 , 20205,28 , 20233,60 , 20293,14 , 752,9 , 750,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 17588,25 , 0,4 , 4,0 , 5658,9 , 5667,9 , 2, 0, 1, 6, 7 }, // Sangu/Latin/Tanzania - { 251, 7, 156, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18224,28 , 18252,54 , 18009,14 , 18224,28 , 18252,54 , 18009,14 , 705,8 , 695,10 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17188,23 , 0,4 , 4,0 , 5676,13 , 5543,5 , 0, 0, 1, 6, 7 }, // Tasawaq/Latin/Niger - { 252, 35, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 20307,30 , 20307,30 , 85,14 , 20307,30 , 20307,30 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 17613,15 , 4,4 , 13,6 , 5689,2 , 5691,4 , 2, 1, 1, 6, 7 }, // Vai/Vai/Liberia - { 252, 7, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 20337,48 , 20337,48 , 85,14 , 20337,48 , 20337,48 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 17628,20 , 4,4 , 13,6 , 5695,3 , 5698,8 , 2, 1, 1, 6, 7 }, // Vai/Latin/Liberia - { 253, 7, 206, 44, 8217, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 264,9 , 264,9 , 53,10 , 622,18 , 37,5 , 8,10 , 20385,28 , 20413,53 , 20466,14 , 20385,28 , 20413,53 , 20466,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,72,70}, 0,0 , 0,7 , 8,5 , 4,0 , 5706,6 , 5712,6 , 2, 0, 1, 6, 7 }, // Walser/Latin/Switzerland - { 254, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 20480,21 , 20501,71 , 20572,14 , 20480,21 , 20501,71 , 20572,14 , 761,8 , 759,8 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 0,7 , 19,5 , 24,7 , 5718,6 , 5724,7 , 0, 0, 1, 6, 7 }, // Yangben/Latin/Cameroon - { 256, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 684,7 , 684,7 , 269,6 , 372,22 , 37,5 , 8,10 , 20586,28 , 20614,54 , 3391,14 , 20586,28 , 20614,54 , 3391,14 , 769,12 , 767,11 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 4,0 , 5731,9 , 2427,6 , 2, 1, 1, 6, 7 }, // Asturian/Latin/Spain - { 257, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 1003,11 , 1003,11 , 1014,16 , 1030,9 , 53,10 , 1566,18 , 37,5 , 8,10 , 20668,60 , 20668,60 , 20728,25 , 20668,60 , 20668,60 , 20728,25 , 781,8 , 778,13 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17648,12 , 8,5 , 4,0 , 5740,5 , 5745,7 , 0, 0, 1, 6, 7 }, // Ngomba/Latin/Cameroon - { 258, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 1766,10 , 80,17 , 37,5 , 8,10 , 20753,54 , 20753,54 , 20807,21 , 20753,54 , 20753,54 , 20807,21 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17660,16 , 8,5 , 4,0 , 5752,4 , 5756,7 , 0, 0, 1, 6, 7 }, // Kako/Latin/Cameroon - { 259, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1566,18 , 37,5 , 8,10 , 20828,49 , 20828,49 , 20877,21 , 20828,49 , 20828,49 , 20877,21 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17676,12 , 8,5 , 4,0 , 5763,5 , 5768,7 , 0, 0, 1, 6, 7 }, // Meta/Latin/Cameroon - { 260, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1776,32 , 37,5 , 8,10 , 20898,111 , 20898,111 , 85,14 , 20898,111 , 20898,111 , 85,14 , 789,9 , 791,8 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17688,16 , 8,5 , 4,0 , 5775,16 , 5791,7 , 0, 0, 1, 6, 7 }, // Ngiemboon/Latin/Cameroon + { 237, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 8218, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18688,28 , 18716,72 , 18788,14 , 18688,28 , 18716,72 , 18788,14 , 692,3 , 684,3 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17286,21 , 0,4 , 4,0 , 5481,5 , 5486,7 , 0, 0, 1, 6, 7 }, // Aghem/Latin/Cameroon + { 238, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18802,28 , 18830,70 , 18900,14 , 18802,28 , 18830,70 , 18900,14 , 695,10 , 687,9 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17307,22 , 19,5 , 4,0 , 5493,5 , 5498,8 , 0, 0, 1, 6, 7 }, // Basaa/Latin/Cameroon + { 239, 7, 156, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18088,28 , 18914,53 , 18967,14 , 18088,28 , 18914,53 , 18967,14 , 705,8 , 696,10 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17114,23 , 0,4 , 4,0 , 5506,10 , 5516,5 , 0, 0, 1, 6, 7 }, // Zarma/Latin/Niger + { 240, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18981,28 , 19009,45 , 19054,14 , 18981,28 , 19009,45 , 19054,14 , 713,5 , 706,6 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 0,7 , 19,5 , 4,0 , 5521,5 , 1985,8 , 0, 0, 1, 6, 7 }, // Duala/Latin/Cameroon + { 241, 7, 187, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19068,28 , 19096,50 , 19146,14 , 19068,28 , 19096,50 , 19146,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17329,23 , 19,5 , 4,0 , 5526,5 , 5531,7 , 0, 0, 1, 6, 7 }, // Jola Fonyi/Latin/Senegal + { 242, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19160,30 , 19190,85 , 19275,14 , 19160,30 , 19190,85 , 19275,14 , 718,7 , 712,9 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17352,23 , 19,5 , 4,0 , 5538,6 , 5544,7 , 0, 0, 1, 6, 7 }, // Ewondo/Latin/Cameroon + { 243, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19289,29 , 19318,45 , 19363,14 , 19289,29 , 19318,45 , 19363,14 , 725,6 , 721,7 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17375,11 , 19,5 , 4,0 , 5551,5 , 5556,7 , 0, 0, 1, 6, 7 }, // Bafia/Latin/Cameroon + { 244, 7, 146, 44, 46, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 19377,28 , 19405,59 , 19464,14 , 19377,28 , 19405,59 , 19464,14 , 731,8 , 728,10 , 45,4 , 5,17 , 22,23 , {77,90,78}, 282,3 , 0,7 , 8,5 , 4,0 , 5563,5 , 5568,10 , 2, 1, 7, 6, 7 }, // Makhuwa Meetto/Latin/Mozambique + { 245, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19478,28 , 19506,74 , 19580,14 , 19478,28 , 19506,74 , 19580,14 , 739,5 , 738,5 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17386,17 , 4,4 , 13,6 , 5578,6 , 5584,7 , 0, 0, 1, 6, 7 }, // Mundang/Latin/Cameroon + { 246, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8221, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 19594,30 , 19624,89 , 19713,14 , 19594,30 , 19624,89 , 19713,14 , 744,4 , 743,4 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17403,20 , 19,5 , 4,0 , 5591,6 , 5597,7 , 0, 0, 1, 6, 7 }, // Kwasio/Latin/Cameroon + { 247, 7, 254, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 538,9 , 97,16 , 18,7 , 554,12 , 19727,38 , 19765,79 , 19844,14 , 19727,38 , 19765,79 , 19844,14 , 748,2 , 747,2 , 45,4 , 5,17 , 22,23 , {83,83,80}, 119,1 , 0,7 , 4,4 , 13,6 , 5604,9 , 0,0 , 2, 1, 1, 6, 7 }, // Nuer/Latin/South Sudan + { 248, 2, 178, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8220, 0,6 , 0,6 , 999,11 , 999,11 , 227,6 , 1690,30 , 37,5 , 8,10 , 19858,21 , 19879,71 , 19950,14 , 19858,21 , 19879,71 , 19950,14 , 750,2 , 749,2 , 1300,5 , 1305,17 , 22,23 , {82,85,66}, 123,1 , 17423,47 , 19,5 , 4,0 , 5613,9 , 5622,9 , 2, 1, 1, 6, 7 }, // Sakha/Cyrillic/Russia + { 249, 7, 210, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 37,5 , 8,10 , 19964,28 , 19992,60 , 20052,14 , 19964,28 , 19992,60 , 20052,14 , 752,9 , 751,9 , 45,4 , 5,17 , 22,23 , {84,90,83}, 192,3 , 17470,25 , 0,4 , 4,0 , 5631,9 , 5640,9 , 2, 0, 1, 6, 7 }, // Sangu/Latin/Tanzania + { 251, 7, 156, 46, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 18088,28 , 18116,54 , 17873,14 , 18088,28 , 18116,54 , 17873,14 , 705,8 , 696,10 , 45,4 , 5,17 , 22,23 , {88,79,70}, 207,3 , 17114,23 , 0,4 , 4,0 , 5649,13 , 5516,5 , 0, 0, 1, 6, 7 }, // Tasawaq/Latin/Niger + { 252, 35, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 20066,30 , 20066,30 , 85,14 , 20066,30 , 20066,30 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 17495,15 , 4,4 , 13,6 , 5662,2 , 5664,4 , 2, 1, 1, 6, 7 }, // Vai/Vai/Liberia + { 252, 7, 121, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 119,10 , 10,17 , 18,7 , 25,12 , 20096,48 , 20096,48 , 85,14 , 20096,48 , 20096,48 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {76,82,68}, 6,1 , 17510,20 , 4,4 , 13,6 , 5668,3 , 5671,8 , 2, 1, 1, 6, 7 }, // Vai/Latin/Liberia + { 253, 7, 206, 44, 8217, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 265,9 , 265,9 , 53,10 , 622,18 , 37,5 , 8,10 , 20144,28 , 20172,53 , 20225,14 , 20144,28 , 20172,53 , 20225,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,72,70}, 0,0 , 0,7 , 8,5 , 4,0 , 5679,6 , 5685,6 , 2, 0, 1, 6, 7 }, // Walser/Latin/Switzerland + { 254, 7, 37, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 171, 187, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 20239,21 , 20260,71 , 20331,14 , 20239,21 , 20260,71 , 20331,14 , 761,8 , 760,8 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 0,7 , 19,5 , 24,7 , 5691,6 , 5697,7 , 0, 0, 1, 6, 7 }, // Yangben/Latin/Cameroon + { 256, 7, 197, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 702,7 , 702,7 , 269,6 , 372,22 , 37,5 , 8,10 , 20345,28 , 20373,54 , 3391,14 , 20345,28 , 20373,54 , 3391,14 , 769,12 , 768,11 , 0,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 3102,20 , 19,5 , 4,0 , 5704,9 , 2431,6 , 2, 1, 1, 6, 7 }, // Asturian/Latin/Spain + { 257, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 1010,11 , 1010,11 , 1021,16 , 1037,9 , 53,10 , 1543,18 , 37,5 , 8,10 , 20427,60 , 20427,60 , 20487,25 , 20427,60 , 20427,60 , 20487,25 , 781,8 , 779,13 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17530,12 , 8,5 , 4,0 , 5713,5 , 5718,7 , 0, 0, 1, 6, 7 }, // Ngomba/Latin/Cameroon + { 258, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 1720,10 , 80,17 , 37,5 , 8,10 , 20512,54 , 20512,54 , 20566,21 , 20512,54 , 20512,54 , 20566,21 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17542,16 , 8,5 , 4,0 , 5725,4 , 5729,7 , 0, 0, 1, 6, 7 }, // Kako/Latin/Cameroon + { 259, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 1543,18 , 37,5 , 8,10 , 20587,49 , 20587,49 , 20636,21 , 20587,49 , 20587,49 , 20636,21 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17558,12 , 8,5 , 4,0 , 5736,5 , 5741,7 , 0, 0, 1, 6, 7 }, // Meta/Latin/Cameroon + { 260, 7, 37, 44, 46, 59, 37, 48, 45, 43, 101, 171, 187, 8220, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 27,8 , 1730,32 , 37,5 , 8,10 , 20657,111 , 20657,111 , 85,14 , 20657,111 , 20657,111 , 85,14 , 789,9 , 792,8 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 17570,16 , 8,5 , 4,0 , 5748,16 , 5764,7 , 0, 0, 1, 6, 7 }, // Ngiemboon/Latin/Cameroon { 261, 7, 197, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Aragonese/Latin/Spain - { 290, 11, 100, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 1039,11 , 1039,11 , 269,6 , 1808,18 , 18,7 , 25,12 , 21009,59 , 21009,59 , 21068,26 , 21009,59 , 21009,59 , 21068,26 , 798,4 , 799,5 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 17704,35 , 8,5 , 4,0 , 5798,8 , 5806,8 , 2, 1, 7, 7, 7 }, // Manipuri/Bengali/India + { 275, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 1046,9 , 1055,8 , 269,6 , 1762,18 , 18,7 , 25,12 , 20768,30 , 20798,51 , 20849,23 , 20768,30 , 20872,51 , 20923,25 , 798,4 , 800,9 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 17586,37 , 4,4 , 4,0 , 5771,5 , 2666,4 , 2, 1, 7, 7, 7 }, // Dogri/Devanagari/India + { 290, 11, 100, 46, 44, 59, 37, 2534, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 1063,11 , 1063,11 , 269,6 , 1780,18 , 18,7 , 25,12 , 20948,59 , 20948,59 , 21007,26 , 20948,59 , 20948,59 , 21033,27 , 802,4 , 809,5 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 17623,35 , 8,5 , 4,0 , 5776,8 , 5784,8 , 2, 1, 7, 7, 7 }, // Manipuri/Bengali/India { 290, 72, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 7, 7 }, // Manipuri/Meitei Mayek/India - { 304, 78, 100, 46, 44, 59, 37, 7248, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 269,6 , 10,17 , 18,7 , 25,12 , 21094,26 , 21120,42 , 21162,14 , 21094,26 , 21120,42 , 21162,14 , 802,9 , 804,10 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 17739,71 , 8,5 , 4,0 , 5814,7 , 5821,6 , 2, 1, 7, 7, 7 }, // Santali/Ol Chiki/India + { 304, 78, 100, 46, 44, 59, 37, 7248, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 269,6 , 10,17 , 18,7 , 25,12 , 21060,26 , 21086,42 , 21128,14 , 21060,26 , 21086,42 , 21128,14 , 806,5 , 814,5 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 17658,71 , 8,5 , 4,0 , 5792,7 , 5799,6 , 2, 1, 7, 7, 7 }, // Santali/Ol Chiki/India { 304, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 7, 7 }, // Santali/Devanagari/India - { 309, 100, 232, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {86,78,68}, 336,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Tai Dam/Tai Viet/Vietnam + { 309, 100, 232, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {86,78,68}, 340,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Tai Dam/Tai Viet/Vietnam { 312, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Akoose/Latin/Cameroon - { 313, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 547,6 , 35,18 , 18,7 , 25,12 , 21176,87 , 21176,87 , 85,14 , 21176,87 , 21176,87 , 21263,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 0,7 , 8,5 , 4,0 , 5827,12 , 5839,22 , 2, 1, 7, 6, 7 }, // Lakota/Latin/United States - { 314, 9, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 15412,30 , 21277,48 , 85,14 , 15412,30 , 21277,48 , 85,14 , 542,6 , 514,8 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 16625,21 , 0,4 , 4,0 , 5861,8 , 5017,6 , 2, 1, 1, 6, 7 }, // Standard Moroccan Tamazight/Tifinagh/Morocco + { 313, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 547,6 , 35,18 , 18,7 , 25,12 , 21142,87 , 21142,87 , 85,14 , 21142,87 , 21142,87 , 21229,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 6,1 , 0,7 , 8,5 , 4,0 , 5805,12 , 5817,22 , 2, 1, 7, 6, 7 }, // Lakota/Latin/United States + { 314, 9, 145, 44, 160, 59, 37, 48, 45, 43, 101, 171, 187, 8222, 8221, 0,6 , 0,6 , 0,6 , 0,6 , 415,8 , 97,16 , 37,5 , 8,10 , 15349,30 , 21243,48 , 85,14 , 15349,30 , 21243,48 , 85,14 , 542,6 , 515,8 , 45,4 , 5,17 , 22,23 , {77,65,68}, 0,0 , 16547,21 , 0,4 , 4,0 , 5839,8 , 5016,6 , 2, 1, 1, 6, 7 }, // Standard Moroccan Tamazight/Tifinagh/Morocco { 315, 7, 43, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,76,80}, 6,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Mapuche/Latin/Chile - { 316, 1, 103, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 21325,58 , 21325,58 , 21383,14 , 21325,58 , 21325,58 , 21383,14 , 811,3 , 814,3 , 45,4 , 5,17 , 22,23 , {73,81,68}, 44,5 , 17810,20 , 19,5 , 4,0 , 5869,14 , 5883,5 , 0, 0, 6, 5, 6 }, // Central Kurdish/Arabic/Iraq - { 316, 1, 102, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 21325,58 , 21325,58 , 21383,14 , 21325,58 , 21325,58 , 21383,14 , 811,3 , 814,3 , 45,4 , 5,17 , 22,23 , {73,82,82}, 0,0 , 17830,19 , 19,5 , 4,0 , 5869,14 , 5888,5 , 0, 0, 6, 5, 5 }, // Central Kurdish/Arabic/Iran - { 317, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 180,7 , 180,7 , 113,6 , 622,18 , 55,4 , 59,9 , 21397,28 , 21425,53 , 21478,14 , 21397,28 , 21425,53 , 21478,14 , 814,9 , 817,10 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 17849,27 , 19,5 , 4,0 , 5893,14 , 5907,6 , 2, 1, 1, 6, 7 }, // Lower Sorbian/Latin/Germany - { 318, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 180,7 , 180,7 , 113,6 , 622,18 , 543,12 , 59,9 , 21492,28 , 21520,53 , 21573,14 , 21492,28 , 21520,53 , 21573,14 , 814,9 , 827,9 , 1253,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 17876,29 , 19,5 , 4,0 , 5913,15 , 5928,6 , 2, 1, 1, 6, 7 }, // Upper Sorbian/Latin/Germany + { 316, 1, 103, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 21291,58 , 21291,58 , 21349,14 , 21291,58 , 21291,58 , 21349,14 , 811,3 , 819,3 , 45,4 , 5,17 , 22,23 , {73,81,68}, 44,5 , 17729,20 , 19,5 , 4,0 , 5847,14 , 5861,5 , 0, 0, 6, 5, 6 }, // Central Kurdish/Arabic/Iraq + { 316, 1, 102, 1643, 1644, 1563, 1642, 1632, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 21291,58 , 21291,58 , 21349,14 , 21291,58 , 21291,58 , 21349,14 , 811,3 , 819,3 , 45,4 , 5,17 , 22,23 , {73,82,82}, 0,0 , 17749,19 , 19,5 , 4,0 , 5847,14 , 5866,5 , 0, 0, 6, 5, 5 }, // Central Kurdish/Arabic/Iran + { 317, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 181,7 , 181,7 , 113,6 , 622,18 , 55,4 , 59,9 , 21363,28 , 21391,53 , 21444,14 , 21363,28 , 21391,53 , 21444,14 , 814,9 , 822,10 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 17768,27 , 19,5 , 4,0 , 5871,14 , 5885,6 , 2, 1, 1, 6, 7 }, // Lower Sorbian/Latin/Germany + { 318, 7, 82, 44, 46, 59, 37, 48, 45, 43, 101, 8222, 8220, 8218, 8216, 0,6 , 0,6 , 181,7 , 181,7 , 113,6 , 622,18 , 566,12 , 59,9 , 21458,28 , 21486,53 , 21539,14 , 21458,28 , 21486,53 , 21539,14 , 814,9 , 832,9 , 1322,5 , 5,17 , 22,23 , {69,85,82}, 14,1 , 17795,29 , 19,5 , 4,0 , 5891,15 , 5906,6 , 2, 1, 1, 6, 7 }, // Upper Sorbian/Latin/Germany { 319, 7, 37, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {88,65,70}, 32,4 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Kenyang/Latin/Cameroon - { 320, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 240,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Mohawk/Latin/Canada - { 321, 75, 91, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,78,70}, 216,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Nko/Nko/Guinea - { 322, 7, 260, 44, 160, 59, 37, 48, 45, 43, 101, 8222, 8220, 8222, 8220, 0,6 , 0,6 , 1050,8 , 1050,8 , 156,8 , 1826,27 , 37,5 , 8,10 , 21587,28 , 21615,69 , 21684,14 , 21587,28 , 21615,69 , 21684,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 19,5 , 4,0 , 5934,9 , 5943,6 , 2, 1, 1, 6, 7 }, // Prussian/Latin/World - { 323, 7, 90, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,84,81}, 305,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Kiche/Latin/Guatemala + { 320, 7, 38, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {67,65,68}, 244,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Mohawk/Latin/Canada + { 321, 75, 91, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,78,70}, 220,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 1, 6, 7 }, // Nko/Nko/Guinea + { 322, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Prussian/Latin/World + { 323, 7, 90, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {71,84,81}, 309,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Kiche/Latin/Guatemala { 324, 7, 205, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {83,69,75}, 190,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 1, 6, 7 }, // Southern Sami/Latin/Sweden { 325, 7, 205, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {83,69,75}, 190,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 1, 6, 7 }, // Lule Sami/Latin/Sweden - { 326, 7, 73, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 640,8 , 1853,18 , 220,4 , 224,9 , 21698,28 , 21726,70 , 85,14 , 21698,28 , 21796,73 , 21869,14 , 823,3 , 836,3 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 17905,11 , 19,5 , 4,0 , 5949,11 , 5960,5 , 2, 1, 1, 6, 7 }, // Inari Sami/Latin/Finland + { 326, 7, 73, 44, 160, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 640,8 , 1798,18 , 254,4 , 258,9 , 21553,28 , 21581,70 , 85,14 , 21553,28 , 21651,73 , 21724,14 , 823,3 , 841,3 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 17824,11 , 19,5 , 4,0 , 5912,11 , 5923,5 , 2, 1, 1, 6, 7 }, // Inari Sami/Latin/Finland { 327, 7, 73, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Skolt Sami/Latin/Finland - { 328, 7, 13, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {65,85,68}, 340,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Warlpiri/Latin/Australia - { 339, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 316,9 , 325,8 , 269,6 , 10,17 , 18,7 , 25,12 , 4304,32 , 4336,53 , 4389,19 , 4304,32 , 4336,53 , 4389,19 , 68,2 , 65,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 17916,31 , 8,5 , 4,0 , 5965,6 , 2662,4 , 2, 1, 7, 7, 7 }, // Maithili/Devanagari/India - { 346, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 726,4 , 1258,39 , 22,23 , {73,82,82}, 342,3 , 17947,27 , 8,5 , 4,0 , 5971,7 , 3252,5 , 0, 0, 6, 5, 5 }, // Mazanderani/Arabic/Iran - { 349, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,82,82}, 0,0 , 0,7 , 8,5 , 4,0 , 5978,11 , 0,0 , 0, 0, 6, 5, 5 }, // Northern Luri/Arabic/Iran - { 349, 1, 103, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,81,68}, 44,5 , 0,7 , 8,5 , 4,0 , 5978,11 , 0,0 , 0, 0, 6, 5, 6 }, // Northern Luri/Arabic/Iraq - { 357, 6, 97, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 165,5 , 165,5 , 1058,5 , 1058,5 , 394,8 , 423,14 , 175,6 , 192,13 , 1980,28 , 1980,28 , 2008,14 , 1980,28 , 1980,28 , 2008,14 , 58,2 , 55,2 , 45,4 , 5,17 , 22,23 , {72,75,68}, 134,3 , 17974,11 , 4,4 , 13,6 , 5989,2 , 5991,14 , 2, 1, 7, 6, 7 }, // Cantonese/Traditional Han/Hong Kong - { 357, 5, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 165,5 , 165,5 , 1058,5 , 1058,5 , 394,8 , 402,13 , 175,6 , 181,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 45,4 , 5,17 , 22,23 , {67,78,89}, 243,1 , 3122,13 , 4,4 , 13,6 , 6005,2 , 6007,7 , 2, 1, 7, 6, 7 }, // Cantonese/Simplified Han/China + { 328, 7, 13, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {65,85,68}, 344,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Warlpiri/Latin/Australia + { 339, 13, 100, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 326,9 , 335,8 , 269,6 , 10,17 , 18,7 , 25,12 , 4304,32 , 4336,53 , 4389,19 , 4304,32 , 4336,53 , 4389,19 , 68,2 , 65,2 , 45,4 , 5,17 , 22,23 , {73,78,82}, 121,1 , 17835,31 , 8,5 , 4,0 , 5928,6 , 2666,4 , 2, 1, 7, 7, 7 }, // Maithili/Devanagari/India + { 346, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 171, 187, 8249, 8250, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 774,4 , 1327,39 , 22,23 , {73,82,82}, 346,3 , 17866,27 , 8,5 , 4,0 , 5934,7 , 3263,5 , 0, 0, 6, 5, 5 }, // Mazanderani/Arabic/Iran + { 349, 1, 102, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,82,82}, 0,0 , 0,7 , 8,5 , 4,0 , 5941,11 , 0,0 , 0, 0, 6, 5, 5 }, // Northern Luri/Arabic/Iran + { 349, 1, 103, 1643, 1644, 1563, 1642, 1776, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 18,7 , 25,12 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,81,68}, 44,5 , 0,7 , 8,5 , 4,0 , 5941,11 , 0,0 , 0, 0, 6, 5, 6 }, // Northern Luri/Arabic/Iraq + { 357, 6, 97, 46, 44, 59, 37, 48, 45, 43, 101, 12300, 12301, 12302, 12303, 166,5 , 166,5 , 1074,5 , 1074,5 , 394,8 , 423,14 , 209,6 , 226,13 , 1980,28 , 1980,28 , 2008,14 , 1980,28 , 1980,28 , 2008,14 , 58,2 , 55,2 , 45,4 , 5,17 , 22,23 , {72,75,68}, 134,3 , 17893,11 , 4,4 , 13,6 , 5952,2 , 5954,14 , 2, 1, 7, 6, 7 }, // Cantonese/Traditional Han/Hong Kong + { 357, 5, 44, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 166,5 , 166,5 , 1074,5 , 1074,5 , 394,8 , 402,13 , 209,6 , 215,11 , 1959,21 , 1980,28 , 2008,14 , 1959,21 , 1980,28 , 2008,14 , 58,2 , 55,2 , 45,4 , 5,17 , 22,23 , {67,78,89}, 247,1 , 3122,13 , 4,4 , 13,6 , 5968,2 , 5970,7 , 2, 1, 7, 6, 7 }, // Cantonese/Simplified Han/China { 358, 138, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Osage/Osage/United States { 360, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Ido/Latin/World { 361, 7, 260, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {0,0,0}, 0,0 , 2586,0 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Lojban/Latin/World { 362, 7, 106, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {69,85,82}, 14,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Sicilian/Latin/Italy { 363, 1, 102, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {73,82,82}, 0,0 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 0, 0, 6, 5, 5 }, // Southern Kurdish/Arabic/Iran { 364, 1, 163, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,75,82}, 176,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 0, 7, 6, 7 }, // Western Balochi/Arabic/Pakistan - { 365, 7, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 1063,9 , 1072,8 , 547,6 , 35,18 , 18,7 , 25,12 , 21883,28 , 21911,56 , 21967,14 , 21883,28 , 21911,56 , 21967,14 , 0,2 , 0,2 , 1297,8 , 5,17 , 22,23 , {80,72,80}, 179,1 , 17985,56 , 4,4 , 13,6 , 6014,8 , 4731,9 , 2, 1, 7, 6, 7 }, // Cebuano/Latin/Philippines + { 365, 7, 170, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 1079,9 , 1088,8 , 547,6 , 35,18 , 18,7 , 25,12 , 21738,28 , 21766,56 , 21822,14 , 21738,28 , 21766,56 , 21822,14 , 0,2 , 0,2 , 1366,8 , 5,17 , 22,23 , {80,72,80}, 179,1 , 17904,56 , 4,4 , 13,6 , 5977,8 , 4730,9 , 2, 1, 7, 6, 7 }, // Cebuano/Latin/Philippines { 366, 2, 178, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {82,85,66}, 123,1 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Erzya/Cyrillic/Russia { 367, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Chickasaw/Latin/United States { 368, 7, 225, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {85,83,68}, 159,3 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 7, 6, 7 }, // Muscogee/Latin/United States - { 369, 7, 172, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,76,78}, 273,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Silesian/Latin/Poland - { 370, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 1080,9 , 1089,8 , 119,10 , 10,17 , 37,5 , 8,10 , 21981,33 , 22014,52 , 85,14 , 21981,33 , 22014,52 , 85,14 , 826,9 , 839,8 , 1305,8 , 5,17 , 22,23 , {78,71,78}, 178,1 , 18041,50 , 4,4 , 4,0 , 6022,14 , 6036,8 , 2, 1, 1, 6, 7 }, // Nigerian Pidgin/Latin/Nigeria + { 369, 7, 172, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 0,6 , 0,6 , 53,10 , 63,17 , 37,5 , 8,10 , 0,28 , 0,28 , 85,14 , 0,28 , 0,28 , 85,14 , 0,2 , 0,2 , 45,4 , 5,17 , 22,23 , {80,76,78}, 277,2 , 0,7 , 8,5 , 4,0 , 0,0 , 0,0 , 2, 1, 1, 6, 7 }, // Silesian/Latin/Poland + { 370, 7, 157, 46, 44, 59, 37, 48, 45, 43, 101, 8220, 8221, 8216, 8217, 0,6 , 0,6 , 1096,9 , 1105,8 , 119,10 , 10,17 , 37,5 , 8,10 , 21836,33 , 21869,52 , 85,14 , 21836,33 , 21869,52 , 85,14 , 826,9 , 844,8 , 1374,8 , 5,17 , 22,23 , {78,71,78}, 178,1 , 17960,50 , 4,4 , 4,0 , 5985,14 , 5999,8 , 2, 1, 1, 6, 7 }, // Nigerian Pidgin/Latin/Nigeria { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, {0,0,0}, 0,0, 0,0, 0,0, 0,0, 0,0, 0,0, 0, 0, 0, 0, 0 } // trailing zeros }; @@ -1892,55 +1891,56 @@ 0x31, 0x20, 0x986, 0x9f0, 0x9c1, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0x259, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x65, 0x74, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x98f, 0x9ac, 0x982, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xf51, 0xf44, 0xf0b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x68, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x438, 0x20, 0x25, 0x32, 0x25, 0x31, -0x20, 0x25, 0x32, 0x25, 0x31, 0x1014, 0x103e, 0x1004, 0x1037, 0x103a, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x456, 0x20, 0x25, 0x32, -0x25, 0x31, 0x20, 0x1793, 0x17b7, 0x1784, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x1793, 0x17b7, 0x1784, 0x200b, 0x25, 0x32, 0x25, 0x31, -0x20, 0x69, 0x20, 0x25, 0x32, 0x25, 0x31, 0x3001, 0x25, 0x32, 0x25, 0x31, 0x548c, 0x25, 0x32, 0x25, 0x31, 0x53ca, 0x25, 0x32, -0x25, 0x31, 0x20, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6f, 0x67, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x61, -0x6e, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6b, 0x61, 0x6a, -0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6a, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x65, 0x74, 0x20, 0x25, 0x32, 0x25, -0x31, 0x20, 0x61, 0x67, 0x75, 0x73, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x10d3, -0x10d0, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x6e, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x3ba, 0x3b1, 0x3b9, 0x20, -0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x61, 0x6d, 0x6d, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xa85, 0xaa8, 0xac7, 0x20, -0x25, 0x32, 0x25, 0x31, 0x20, 0x64, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x5d5, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, -0x914, 0x930, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x914, 0x930, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xe9, 0x73, 0x20, 0x25, -0x32, 0x25, 0x31, 0x2c, 0x20, 0x64, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x64, 0x61, 0x6e, 0x20, 0x25, 0x32, -0x25, 0x31, 0x2c, 0x20, 0x61, 0x67, 0x75, 0x73, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x6c, 0x61, 0x6e, 0x20, 0x25, -0x32, 0x25, 0x31, 0x20, 0x6c, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0xcae, 0xca4, 0xccd, 0xca4, 0xcc1, 0x20, -0x25, 0x32, 0x25, 0x31, 0x20, 0xcae, 0xca4, 0xccd, 0xca4, 0xcc1, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x436, 0x4d9, 0x43d, 0x435, -0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x436, 0x430, 0x43d, 0x430, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xbc0f, 0x20, 0x25, 0x32, -0x25, 0x31, 0x20, 0xfb, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xec1, 0xea5, 0xeb0, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, -0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6d, 0x70, 0xe9, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x72, 0x20, 0x25, -0x32, 0x25, 0x31, 0x2c, 0x20, 0x25, 0x32, 0x20, 0xd0e, 0xd28, 0xd4d, 0xd28, 0xd3f, 0xd35, 0x25, 0x31, 0x20, 0xd15, 0xd42, 0xd1f, -0xd3e, 0xd24, 0xd46, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x75, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x20, 0x25, -0x32, 0x25, 0x31, 0x20, 0x906, 0x923, 0x93f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x25, 0x32, 0x25, 0x31, 0x20, 0x930, 0x20, -0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0xb13, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xb13, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, -0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x627, 0x648, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x627, 0x648, 0x20, 0x25, 0x32, -0x25, 0x31, 0x60c, 0x200f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x648, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x648, 0x20, -0x25, 0x32, 0x25, 0x31, 0x20, 0xa05, 0xa24, 0xa47, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x219, 0x69, 0x20, 0x25, 0x32, 0x25, -0x31, 0x20, 0x4d5, 0x43c, 0x4d5, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x6fd, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6fd, -0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0xdc3, 0xdc4, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xdc3, 0xdc4, 0x20, 0x25, 0x32, -0x25, 0x31, 0x20, 0x61, 0xa0, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x79, -0x6f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x79, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x73, 0x61, 0x72, 0x65, 0x6e, -0x67, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x73, 0x61, 0x72, 0x65, 0x6e, 0x67, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6e, -0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6f, 0x63, 0x68, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xbae, 0xbb1, 0xbcd, 0xbb1, -0xbc1, 0xbae, 0xbcd, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x4bb, 0x4d9, 0x43c, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xc2e, 0xc30, -0xc3f, 0xc2f, 0xc41, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xe41, 0xe25, 0xe30, 0x25, 0x32, 0x25, 0x31, 0xe41, 0xe25, 0xe30, 0x25, -0x32, 0x25, 0x31, 0x20, 0x6d, 0x6f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, -0x77, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x627, 0x648, 0x631, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x627, 0x648, -0x631, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0xe0, 0x20, 0x25, 0x32, -0x25, 0x31, 0x2c, 0x20, 0x61, 0x28, 0x63, 0x29, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x28, 0x63, 0x29, 0x20, 0x25, -0x32, 0x25, 0x31, 0x20, 0x5d0, 0x5d5, 0x5df, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x6e, 0x65, 0x2d, 0x25, 0x32, 0x25, -0x31, 0x20, 0x6e, 0x65, 0x2d, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x6e, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, -0x6b, 0x70, 0x6c, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6b, 0x70, 0x6c, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, -0x20, 0x61, 0x74, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x74, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x61, 0x6b, -0x6b, 0x65, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x6b, 0x6b, 0x65, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, -0x20, 0x13a0, 0x13b4, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x13a0, 0x13b4, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x438, 0x486, 0x20, -0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x28, 0x6e, 0x29, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x443, 0x43e, 0x43d, 0x43d, 0x430, -0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x14b, 0x301, 0x67, 0x25b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x1e3f, 0x62, -0x25b, 0x6e, 0x20, 0x14b, 0x301, 0x67, 0x25b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x70, 0x254, 0x70, 0x20, 0x25, 0x32, 0x25, -0x31, 0x20, 0x985, 0x9ae, 0x9b8, 0x9c1, 0x982, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x62, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, -0x540c, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x75, 0x67, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x67, 0x20, 0x25, 0x32, -0x25, 0x31, 0x2c, 0x20, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x6e, 0x20, 0x25, 0x32 +0x104a, 0x20, 0x25, 0x32, 0x25, 0x31, 0x1014, 0x103e, 0x1004, 0x1037, 0x103a, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x456, 0x20, 0x25, +0x32, 0x25, 0x31, 0x20, 0x1793, 0x17b7, 0x1784, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x1793, 0x17b7, 0x1784, 0x200b, 0x25, 0x32, 0x25, +0x31, 0x20, 0x69, 0x20, 0x25, 0x32, 0x25, 0x31, 0x3001, 0x25, 0x32, 0x25, 0x31, 0x548c, 0x25, 0x32, 0x25, 0x31, 0x53ca, 0x25, +0x32, 0x25, 0x31, 0x20, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6f, 0x67, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, +0x61, 0x6e, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6b, 0x61, +0x6a, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6a, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x65, 0x74, 0x20, 0x25, 0x32, +0x25, 0x31, 0x20, 0x61, 0x67, 0x75, 0x73, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, +0x10d3, 0x10d0, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x6e, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x3ba, 0x3b1, 0x3b9, +0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x61, 0x6d, 0x6d, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xa85, 0xaa8, 0xac7, +0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x64, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x64, 0x61, 0x20, 0x25, 0x32, +0x25, 0x31, 0x20, 0x5d5, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x914, 0x930, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x914, 0x930, +0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xe9, 0x73, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x64, 0x61, 0x6e, 0x20, 0x25, +0x32, 0x25, 0x31, 0x20, 0x64, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x6c, 0x61, 0x6e, 0x20, 0x25, 0x32, +0x25, 0x31, 0x20, 0x6c, 0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0xcae, 0xca4, 0xccd, 0xca4, 0xcc1, 0x20, 0x25, +0x32, 0x25, 0x31, 0x20, 0xcae, 0xca4, 0xccd, 0xca4, 0xcc1, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x436, 0x4d9, 0x43d, 0x435, 0x20, +0x25, 0x32, 0x25, 0x31, 0x20, 0x436, 0x430, 0x43d, 0x430, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xbc0f, 0x20, 0x25, 0x32, 0x25, +0x31, 0x20, 0xfb, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xec1, 0xea5, 0xeb0, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x6e, +0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6d, 0x70, 0xe9, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x72, 0x20, 0x25, 0x32, +0x25, 0x31, 0x2c, 0x20, 0x25, 0x32, 0x20, 0xd0e, 0xd28, 0xd4d, 0xd28, 0xd3f, 0xd35, 0x25, 0x31, 0x20, 0xd15, 0xd42, 0xd1f, 0xd3e, +0xd24, 0xd46, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x75, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x20, 0x25, 0x32, +0x25, 0x31, 0x20, 0x906, 0x923, 0x93f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x25, 0x32, 0x25, 0x31, 0x20, 0x930, 0x20, 0x25, +0x32, 0x25, 0x31, 0x2c, 0x20, 0xb13, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xb13, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, +0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x627, 0x648, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x627, 0x648, 0x20, 0x25, 0x32, 0x25, +0x31, 0x60c, 0x200f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x648, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x648, 0x20, 0x25, +0x32, 0x25, 0x31, 0x20, 0xa05, 0xa24, 0xa47, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x219, 0x69, 0x20, 0x25, 0x32, 0x25, 0x31, +0x2c, 0x20, 0x924, 0x925, 0x93e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x924, 0x925, 0x93e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, +0x4d5, 0x43c, 0x4d5, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x6fd, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6fd, 0x20, 0x25, +0x32, 0x25, 0x31, 0x2c, 0x20, 0xdc3, 0xdc4, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xdc3, 0xdc4, 0x20, 0x25, 0x32, 0x25, 0x31, +0x20, 0x61, 0xa0, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x69, 0x79, 0x6f, 0x20, +0x25, 0x32, 0x25, 0x31, 0x20, 0x79, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x73, 0x61, 0x72, 0x65, 0x6e, 0x67, 0x20, +0x25, 0x32, 0x25, 0x31, 0x20, 0x73, 0x61, 0x72, 0x65, 0x6e, 0x67, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6e, 0x61, 0x20, +0x25, 0x32, 0x25, 0x31, 0x20, 0x6f, 0x63, 0x68, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xbae, 0xbb1, 0xbcd, 0xbb1, 0xbc1, 0xbae, +0xbcd, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x4bb, 0x4d9, 0x43c, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xc2e, 0xc30, 0xc3f, 0xc2f, +0xc41, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0xe41, 0xe25, 0xe30, 0x25, 0x32, 0x25, 0x31, 0xe41, +0xe25, 0xe30, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6d, 0x6f, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0x65, 0x20, 0x25, 0x32, +0x25, 0x31, 0x20, 0x77, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x60c, 0x20, 0x627, 0x648, 0x631, 0x20, 0x25, 0x32, 0x25, 0x31, +0x20, 0x627, 0x648, 0x631, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0x61, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x76, 0xe0, +0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x61, 0x28, 0x63, 0x29, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x28, 0x63, +0x29, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x5d0, 0x5d5, 0x5df, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x6e, 0x65, 0x2d, +0x25, 0x32, 0x25, 0x31, 0x20, 0x6e, 0x65, 0x2d, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x6e, 0x61, 0x20, 0x25, 0x32, 0x25, +0x31, 0x2c, 0x20, 0x6b, 0x70, 0x6c, 0x65, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x6b, 0x70, 0x6c, 0x65, 0x20, 0x25, 0x32, +0x25, 0x31, 0x2c, 0x20, 0x61, 0x74, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x74, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, +0x20, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x64, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x13a0, 0x13b4, 0x20, 0x25, +0x32, 0x25, 0x31, 0x20, 0x13a0, 0x13b4, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x28, 0x6e, 0x29, 0x20, 0x25, 0x32, 0x25, +0x31, 0x20, 0x443, 0x43e, 0x43d, 0x43d, 0x430, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x14b, 0x301, 0x67, 0x25b, 0x20, 0x25, +0x32, 0x25, 0x31, 0x2c, 0x20, 0x1e3f, 0x62, 0x25b, 0x6e, 0x20, 0x14b, 0x301, 0x67, 0x25b, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, +0x70, 0x254, 0x70, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, 0x924, 0x947, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x924, 0x947, +0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x985, 0x9ae, 0x9b8, 0x9c1, 0x982, 0x20, 0x25, 0x32, 0x25, 0x31, 0x540c, 0x25, 0x32, 0x25, +0x31, 0x2c, 0x20, 0x75, 0x67, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x75, 0x67, 0x20, 0x25, 0x32, 0x25, 0x31, 0x2c, 0x20, +0x61, 0x6e, 0x20, 0x25, 0x32, 0x25, 0x31, 0x20, 0x61, 0x6e, 0x20, 0x25, 0x32 }; static const ushort date_format_data[] = { @@ -2017,27 +2017,24 @@ 0x440, 0x27, 0x2e, 0x64, 0x64, 0x64, 0x64, 0x60c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x60c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x2d, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x20, 0x646, 0x686, 0x6cc, 0x20, 0x6cc, 0x6cc, 0x644, 0x20, 0x64, 0x20, 0x646, 0x686, 0x6cc, 0x20, 0x4d, 0x4d, -0x4d, 0x4d, 0x20, 0x64, 0x64, 0x64, 0x64, 0x20, 0x6a9, 0x648, 0x646, 0x6cc, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d, -0x4d, 0x27, 0x61, 0x27, 0x20, 0x27, 0x64, 0x27, 0x2e, 0x20, 0x64, 0x27, 0x69, 0x64, 0x27, 0x64, 0x64, 0x64, 0x64, 0x2c, -0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x5d8, -0x5df, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, -0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x2e, 0x20, 0x4d, 0x2e, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x79, 0x79, -0x2f, 0x4d, 0x4d, 0x2f, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d, -0x4d, 0x20, 0x64, 0x64, 0x64, 0x2d, 0x4d, 0x2d, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x20, 0x27, 0x64, 0x69, -0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x61, 0x6c, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, -0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x20, 0x27, 0x6c, 0x69, 0x61, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, -0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, -0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x27, 0x64, 0x69, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, -0x20, 0x27, 0x64, 0x69, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x27, 0x64, 0xe4, 0x27, -0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, -0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x43b, 0x27, 0x2e, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x79, 0x79, 0x79, 0x79, -0x20, 0x27, 0x441, 0x44b, 0x43b, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x20, 0x27, 0x43a, 0x4af, 0x43d, 0x44d, 0x27, -0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2f, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, -0x20, 0x2c, 0x20, 0x27, 0x6c, 0x79, 0x25b, 0x27, 0x30c, 0x2bc, 0x20, 0x64, 0x20, 0x27, 0x6e, 0x61, 0x27, 0x20, 0x4d, 0x4d, -0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, -0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x6d, 0x65, -0x74, 0x74, 0x61, 0x73, 0x27, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x4d, -0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2e, 0x20, 0x79, 0x79, 0x79, 0x79 +0x4d, 0x4d, 0x20, 0x64, 0x64, 0x64, 0x64, 0x20, 0x6a9, 0x648, 0x646, 0x6cc, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, +0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x5d8, 0x5df, 0x20, 0x4d, +0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x4d, 0x4d, 0x4d, 0x20, +0x79, 0x79, 0x79, 0x79, 0x64, 0x2e, 0x20, 0x4d, 0x2e, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2e, 0x79, 0x79, 0x2f, 0x4d, 0x4d, +0x2f, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, +0x64, 0x64, 0x2d, 0x4d, 0x2d, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x64, 0x20, 0x27, 0x64, 0x69, 0x27, 0x20, 0x4d, +0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, 0x61, 0x6c, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, +0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x20, 0x27, 0x6c, 0x69, 0x61, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, +0x64, 0x2c, 0x20, 0x27, 0x64, 0x65, 0x27, 0x20, 0x64, 0x2e, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, +0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x20, 0x27, 0x64, 0x69, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x27, 0x64, +0x69, 0x27, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x27, 0x64, 0xe4, 0x27, 0x20, 0x64, 0x2e, +0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x79, 0x20, 0x27, 0x441, 0x44b, 0x43b, 0x27, +0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x20, 0x27, 0x43a, 0x4af, 0x43d, 0x44d, 0x27, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, +0x64, 0x64, 0x2f, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x20, 0x2c, 0x20, 0x27, 0x6c, 0x79, +0x25b, 0x27, 0x30c, 0x2bc, 0x20, 0x64, 0x20, 0x27, 0x6e, 0x61, 0x27, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x2c, 0x20, 0x79, 0x79, +0x79, 0x79, 0x64, 0x64, 0x64, 0x64, 0x2c, 0x20, 0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x79, 0x79, 0x79, 0x79, +0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2c, 0x20, 0x79, 0x79, 0x79, 0x79, 0x2c, 0x20, 0x64, 0x64, 0x64, 0x64, 0x64, 0x64, +0x64, 0x64, 0x2c, 0x20, 0x4d, 0x4d, 0x4d, 0x4d, 0x20, 0x64, 0x2e, 0x20, 0x79, 0x79, 0x79, 0x79 }; static const ushort time_format_data[] = { @@ -2048,27 +2045,28 @@ 0x6d, 0x6d, 0x2e, 0x73, 0x73, 0x20, 0x74, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x28, 0x74, 0x29, 0xf46, 0xf74, 0xf0b, 0xf5a, 0xf7c, 0xf51, 0xf0b, 0x20, 0x68, 0x20, 0xf66, 0xf90, 0xf62, 0xf0b, 0xf58, 0xf0b, 0x20, 0x6d, 0x6d, 0x20, 0x41, 0x50, 0xf46, 0xf74, 0xf0b, 0xf5a, 0xf7c, 0xf51, 0xf0b, 0x20, 0x68, 0x20, 0xf66, 0xf90, 0xf62, 0xf0b, 0xf58, 0xf0b, 0x20, 0x6d, 0x6d, -0x3a, 0x73, 0x73, 0x20, 0x41, 0x50, 0x20, 0x74, 0x42, 0x20, 0x48, 0x3a, 0x6d, 0x6d, 0x74, 0x20, 0x48, 0x48, 0x3a, 0x6d, -0x6d, 0x3a, 0x73, 0x73, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x2c, 0x20, 0x74, 0x41, 0x50, 0x68, 0x3a, 0x6d, -0x6d, 0x74, 0x20, 0x41, 0x50, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x41, 0x50, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, -0x73, 0x20, 0x5b, 0x74, 0x5d, 0x48, 0x48, 0x2e, 0x6d, 0x6d, 0x48, 0x48, 0x2e, 0x6d, 0x6d, 0x2e, 0x73, 0x73, 0x20, 0x74, -0x48, 0x2e, 0x6d, 0x6d, 0x48, 0x2e, 0x6d, 0x6d, 0x2e, 0x73, 0x73, 0x20, 0x74, 0x48, 0x2d, 0x27, 0x61, 0x27, 0x20, 0x27, -0x68, 0x6f, 0x72, 0x6f, 0x27, 0x20, 0x27, 0x6b, 0x61, 0x6a, 0x27, 0x20, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x48, 0x20, -0x27, 0x68, 0x27, 0x20, 0x6d, 0x6d, 0x20, 0x27, 0x6d, 0x69, 0x6e, 0x27, 0x20, 0x73, 0x73, 0x20, 0x27, 0x73, 0x27, 0x20, -0x74, 0x48, 0x48, 0x20, 0x27, 0x68, 0x27, 0x20, 0x6d, 0x6d, 0x48, 0x48, 0x20, 0x27, 0x68, 0x27, 0x20, 0x6d, 0x6d, 0x20, -0x27, 0x6d, 0x69, 0x6e, 0x27, 0x20, 0x73, 0x73, 0x20, 0x27, 0x73, 0x27, 0x20, 0x74, 0x48, 0x48, 0x2e, 0x6d, 0x6d, 0x3a, -0x73, 0x73, 0x20, 0x27, 0x68, 0x27, 0x20, 0x74, 0x68, 0x68, 0x3a, 0x6d, 0x6d, 0x20, 0x41, 0x50, 0x68, 0x68, 0x3a, 0x6d, -0x6d, 0x3a, 0x73, 0x73, 0x20, 0x41, 0x50, 0x20, 0x74, 0x48, 0x6642, 0x6d, 0x6d, 0x5206, 0x73, 0x73, 0x79d2, 0x20, 0x74, 0x41, -0x50, 0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x41, 0x50, 0x20, 0x68, 0xc2dc, 0x20, 0x6d, 0xbd84, 0x20, 0x73, 0xcd08, 0x20, 0x74, 0x48, -0x20, 0xec2, 0xea1, 0xe87, 0x20, 0x6d, 0x20, 0xe99, 0xeb2, 0xe97, 0xeb5, 0x20, 0x73, 0x73, 0x20, 0xea7, 0xeb4, 0xe99, 0xeb2, 0xe97, -0xeb5, 0x20, 0x74, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x28, 0x74, 0x29, 0x41, 0x50, 0x20, 0x68, 0x3a, 0x6d, -0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x27, 0x6b, 0x6c, 0x27, 0x2e, 0x20, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, -0x20, 0x74, 0x48, 0x20, 0xe19, 0xe32, 0xe2c, 0xe34, 0xe01, 0xe32, 0x20, 0x6d, 0x6d, 0x20, 0xe19, 0xe32, 0xe17, 0xe35, 0x20, 0x73, -0x73, 0x20, 0xe27, 0xe34, 0xe19, 0xe32, 0xe17, 0xe35, 0x20, 0x74, 0x48, 0x3a, 0x6d, 0x41, 0x50, 0x20, 0x27, 0x67, 0x61, 0x27, -0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x41, 0x50, 0x20, 0x27, 0x67, 0x61, 0x27, 0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, -0x20, 0x74, 0x27, 0x4b, 0x6c, 0x27, 0x2e, 0x20, 0x48, 0x2e, 0x6d, 0x6d, 0x27, 0x4b, 0x6c, 0x6f, 0x63, 0x6b, 0x27, 0x20, -0x48, 0x2e, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x28, 0x74, 0x29, 0x74, 0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, -0x20, 0x41, 0x50, 0x48, 0x3a, 0x6d, 0x6d, 0x20, 0x27, 0x68, 0x6f, 0x64, 0x17a, 0x27, 0x2e +0x3a, 0x73, 0x73, 0x20, 0x41, 0x50, 0x20, 0x74, 0x48, 0x3a, 0x6d, 0x6d, 0x20, 0x27, 0x447, 0x27, 0x2e, 0x48, 0x3a, 0x6d, +0x6d, 0x3a, 0x73, 0x73, 0x20, 0x27, 0x447, 0x27, 0x2e, 0x20, 0x74, 0x42, 0x20, 0x48, 0x3a, 0x6d, 0x6d, 0x74, 0x20, 0x48, +0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x2c, 0x20, 0x74, 0x48, 0x3a, +0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x28, 0x74, 0x29, 0x41, 0x50, 0x68, 0x3a, 0x6d, 0x6d, 0x74, 0x20, 0x41, 0x50, 0x68, +0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x41, 0x50, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x5b, 0x74, 0x5d, 0x48, +0x48, 0x2e, 0x6d, 0x6d, 0x48, 0x48, 0x2e, 0x6d, 0x6d, 0x2e, 0x73, 0x73, 0x20, 0x74, 0x48, 0x2e, 0x6d, 0x6d, 0x48, 0x2e, +0x6d, 0x6d, 0x2e, 0x73, 0x73, 0x20, 0x74, 0x48, 0x2d, 0x27, 0x61, 0x27, 0x20, 0x27, 0x68, 0x6f, 0x72, 0x6f, 0x27, 0x20, +0x27, 0x6b, 0x61, 0x6a, 0x27, 0x20, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x48, 0x20, 0x27, 0x68, 0x27, 0x20, 0x6d, 0x6d, +0x20, 0x27, 0x6d, 0x69, 0x6e, 0x27, 0x20, 0x73, 0x73, 0x20, 0x27, 0x73, 0x27, 0x20, 0x74, 0x48, 0x48, 0x20, 0x27, 0x68, +0x27, 0x20, 0x6d, 0x6d, 0x48, 0x48, 0x20, 0x27, 0x68, 0x27, 0x20, 0x6d, 0x6d, 0x20, 0x27, 0x6d, 0x69, 0x6e, 0x27, 0x20, +0x73, 0x73, 0x20, 0x27, 0x73, 0x27, 0x20, 0x74, 0x48, 0x48, 0x2e, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x27, 0x68, 0x27, +0x20, 0x74, 0x68, 0x68, 0x3a, 0x6d, 0x6d, 0x20, 0x41, 0x50, 0x68, 0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x41, +0x50, 0x20, 0x74, 0x48, 0x6642, 0x6d, 0x6d, 0x5206, 0x73, 0x73, 0x79d2, 0x20, 0x74, 0x41, 0x50, 0x20, 0x68, 0x3a, 0x6d, 0x6d, +0x41, 0x50, 0x20, 0x68, 0xc2dc, 0x20, 0x6d, 0xbd84, 0x20, 0x73, 0xcd08, 0x20, 0x74, 0x48, 0x20, 0xec2, 0xea1, 0xe87, 0x20, 0x6d, +0x20, 0xe99, 0xeb2, 0xe97, 0xeb5, 0x20, 0x73, 0x73, 0x20, 0xea7, 0xeb4, 0xe99, 0xeb2, 0xe97, 0xeb5, 0x20, 0x74, 0x41, 0x50, 0x20, +0x68, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x48, 0x20, 0xe19, 0xe32, 0xe2c, 0xe34, 0xe01, 0xe32, 0x20, 0x6d, 0x6d, +0x20, 0xe19, 0xe32, 0xe17, 0xe35, 0x20, 0x73, 0x73, 0x20, 0xe27, 0xe34, 0xe19, 0xe32, 0xe17, 0xe35, 0x20, 0x74, 0x48, 0x3a, 0x6d, +0x27, 0x6b, 0x6c, 0x27, 0x2e, 0x20, 0x48, 0x48, 0x3a, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x74, 0x41, 0x50, 0x20, 0x27, +0x67, 0x61, 0x27, 0x20, 0x68, 0x3a, 0x6d, 0x6d, 0x41, 0x50, 0x20, 0x27, 0x67, 0x61, 0x27, 0x20, 0x68, 0x3a, 0x6d, 0x6d, +0x3a, 0x73, 0x73, 0x20, 0x74, 0x27, 0x4b, 0x6c, 0x27, 0x2e, 0x20, 0x48, 0x2e, 0x6d, 0x6d, 0x27, 0x4b, 0x6c, 0x6f, 0x63, +0x6b, 0x27, 0x20, 0x48, 0x2e, 0x6d, 0x6d, 0x3a, 0x73, 0x73, 0x20, 0x28, 0x74, 0x29, 0x74, 0x20, 0x68, 0x3a, 0x6d, 0x6d, +0x3a, 0x73, 0x73, 0x20, 0x41, 0x50, 0x48, 0x3a, 0x6d, 0x6d, 0x20, 0x27, 0x68, 0x6f, 0x64, 0x17a, 0x27, 0x2e }; static const ushort days_data[] = { @@ -2513,669 +2511,662 @@ 0x75, 0x61, 0x2d, 0xfb, 0x73, 0x65, 0x3b, 0x42, 0xef, 0x6b, 0x75, 0x61, 0x2d, 0x70, 0x74, 0xe2, 0x3b, 0x42, 0xef, 0x6b, 0x75, 0x61, 0x2d, 0x75, 0x73, 0xef, 0xf6, 0x3b, 0x42, 0xef, 0x6b, 0x75, 0x61, 0x2d, 0x6f, 0x6b, 0xfc, 0x3b, 0x4c, 0xe2, 0x70, 0xf4, 0x73, 0xf6, 0x3b, 0x4c, 0xe2, 0x79, 0x65, 0x6e, 0x67, 0x61, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x53, -0x3b, 0x4b, 0x3b, 0x50, 0x3b, 0x59, 0x3b, 0x43d, 0x435, 0x434, 0x3b, 0x43f, 0x43e, 0x43d, 0x3b, 0x443, 0x442, 0x43e, 0x3b, 0x441, -0x440, 0x435, 0x3b, 0x447, 0x435, 0x442, 0x3b, 0x43f, 0x435, 0x442, 0x3b, 0x441, 0x443, 0x431, 0x3b, 0x43d, 0x435, 0x434, 0x435, 0x459, -0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, 0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, -0x440, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x430, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430, 0x43a, 0x3b, -0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x43d, 0x3b, 0x43f, 0x3b, 0x443, 0x3b, 0x441, 0x3b, 0x447, 0x3b, 0x43f, 0x3b, 0x441, -0x3b, 0x6e, 0x65, 0x64, 0x3b, 0x70, 0x6f, 0x6e, 0x3b, 0x75, 0x74, 0x3b, 0x73, 0x72, 0x3b, 0x10d, 0x65, 0x74, 0x3b, 0x70, -0x65, 0x74, 0x3b, 0x73, 0x75, 0x62, 0x3b, 0x6e, 0x65, 0x64, 0x6a, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x65, -0x64, 0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x6b, 0x3b, 0x73, 0x72, 0x69, 0x6a, 0x65, 0x64, -0x61, 0x3b, 0x10d, 0x65, 0x74, 0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61, 0x6b, 0x3b, 0x73, 0x75, 0x62, -0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x65, 0x64, 0x3b, 0x70, 0x6f, 0x6e, 0x3b, 0x75, 0x74, 0x6f, 0x3b, 0x73, 0x72, 0x65, 0x3b, -0x10d, 0x65, 0x74, 0x3b, 0x70, 0x65, 0x74, 0x3b, 0x73, 0x75, 0x62, 0x3b, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x3b, -0x70, 0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x6b, 0x3b, 0x73, 0x72, -0x65, 0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61, 0x6b, 0x3b, 0x73, -0x75, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x43d, 0x435, 0x434, 0x3b, 0x43f, 0x43e, 0x43d, 0x3b, 0x443, 0x442, 0x3b, 0x441, 0x440, 0x3b, -0x447, 0x435, 0x442, 0x3b, 0x43f, 0x435, 0x442, 0x3b, 0x441, 0x443, 0x431, 0x3b, 0x43d, 0x435, 0x434, 0x458, 0x435, 0x459, 0x430, 0x3b, -0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, 0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, 0x440, 0x438, -0x458, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x430, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430, 0x43a, 0x3b, -0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x425, 0x446, 0x431, 0x3b, 0x41a, 0x440, 0x441, 0x3b, 0x414, 0x446, 0x433, 0x3b, 0x4d4, -0x440, 0x442, 0x3b, 0x426, 0x43f, 0x440, 0x3b, 0x41c, 0x440, 0x431, 0x3b, 0x421, 0x431, 0x442, 0x3b, 0x425, 0x443, 0x44b, 0x446, 0x430, -0x443, 0x431, 0x43e, 0x43d, 0x3b, 0x41a, 0x44a, 0x443, 0x44b, 0x440, 0x438, 0x441, 0x4d5, 0x440, 0x3b, 0x414, 0x44b, 0x446, 0x446, 0x4d5, -0x433, 0x3b, 0x4d4, 0x440, 0x442, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x426, 0x44b, 0x43f, 0x43f, 0x4d5, 0x440, 0x4d5, 0x43c, 0x3b, -0x41c, 0x430, 0x439, 0x440, 0x4d5, 0x43c, 0x431, 0x43e, 0x43d, 0x3b, 0x421, 0x430, 0x431, 0x430, 0x442, 0x3b, 0x425, 0x3b, 0x41a, 0x3b, -0x414, 0x3b, 0x4d4, 0x3b, 0x426, 0x3b, 0x41c, 0x3b, 0x421, 0x3b, 0x445, 0x446, 0x431, 0x3b, 0x43a, 0x440, 0x441, 0x3b, 0x434, 0x446, -0x433, 0x3b, 0x4d5, 0x440, 0x442, 0x3b, 0x446, 0x43f, 0x440, 0x3b, 0x43c, 0x440, 0x431, 0x3b, 0x441, 0x431, 0x442, 0x3b, 0x445, 0x443, -0x44b, 0x446, 0x430, 0x443, 0x431, 0x43e, 0x43d, 0x3b, 0x43a, 0x44a, 0x443, 0x44b, 0x440, 0x438, 0x441, 0x4d5, 0x440, 0x3b, 0x434, 0x44b, -0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x4d5, 0x440, 0x442, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x446, 0x44b, 0x43f, 0x43f, 0x4d5, 0x440, -0x4d5, 0x43c, 0x3b, 0x43c, 0x430, 0x439, 0x440, 0x4d5, 0x43c, 0x431, 0x43e, 0x43d, 0x3b, 0x441, 0x430, 0x431, 0x430, 0x442, 0x3b, 0x53, -0x76, 0x6f, 0x3b, 0x4d, 0x75, 0x76, 0x3b, 0x43, 0x68, 0x70, 0x3b, 0x43, 0x68, 0x74, 0x3b, 0x43, 0x68, 0x6e, 0x3b, 0x43, -0x68, 0x73, 0x3b, 0x4d, 0x75, 0x67, 0x3b, 0x53, 0x76, 0x6f, 0x6e, 0x64, 0x6f, 0x3b, 0x4d, 0x75, 0x76, 0x68, 0x75, 0x72, -0x6f, 0x3b, 0x43, 0x68, 0x69, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x43, 0x68, -0x69, 0x6e, 0x61, 0x3b, 0x43, 0x68, 0x69, 0x73, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x75, 0x67, 0x6f, 0x76, 0x65, 0x72, -0x61, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x4d, 0x3b, 0x622, 0x686, 0x631, 0x3b, -0x633, 0x648, 0x645, 0x631, 0x3b, 0x627, 0x6b1, 0x627, 0x631, 0x648, 0x3b, 0x627, 0x631, 0x628, 0x639, 0x3b, 0x62e, 0x645, 0x64a, 0x633, -0x3b, 0x62c, 0x645, 0x639, 0x648, 0x3b, 0x687, 0x646, 0x687, 0x631, 0x3b, 0x622, 0x686, 0x631, 0x3b, 0x633, 0x648, 0x3b, 0x627, 0x6b1, -0x627, 0x631, 0x648, 0x3b, 0x627, 0x631, 0x628, 0x639, 0x3b, 0x62e, 0x645, 0x3b, 0x62c, 0x645, 0x639, 0x648, 0x3b, 0x687, 0x646, 0x687, -0x631, 0x3b, 0x906, 0x3b, 0x938, 0x942, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x927, 0x3b, 0x935, 0x93f, 0x938, 0x94d, 0x3b, 0x91c, -0x941, 0x92e, 0x3b, 0x91b, 0x902, 0x91b, 0x3b, 0x906, 0x930, 0x94d, 0x924, 0x3b, 0x938, 0x942, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, -0x927, 0x3b, 0x935, 0x93f, 0x938, 0x3b, 0x91c, 0x941, 0x92e, 0x3b, 0x91b, 0x902, 0x91b, 0x3b, 0x906, 0x3b, 0x938, 0x942, 0x3b, 0x92e, -0x902, 0x3b, 0x92c, 0x941, 0x3b, 0x935, 0x93f, 0x3b, 0x936, 0x941, 0x3b, 0x91b, 0x902, 0x3b, 0x906, 0x930, 0x94d, 0x924, 0x3b, 0x938, -0x942, 0x3b, 0x92e, 0x902, 0x917, 0x3b, 0x92c, 0x941, 0x927, 0x3b, 0x935, 0x93f, 0x938, 0x3b, 0x91c, 0x941, 0x92e, 0x3b, 0x91b, 0x902, -0x91b, 0x3b, 0x906, 0x930, 0x94d, 0x924, 0x935, 0x93e, 0x930, 0x3b, 0x938, 0x942, 0x92e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x941, -0x3b, 0x92c, 0x941, 0x927, 0x930, 0x3b, 0x935, 0x93f, 0x938, 0x94d, 0x92a, 0x924, 0x3b, 0x91c, 0x941, 0x92e, 0x913, 0x3b, 0x91b, 0x902, -0x91b, 0x930, 0x3b, 0x906, 0x3b, 0x92e, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x3b, 0x935, 0x93f, 0x3b, 0x936, 0x941, 0x3b, 0x91b, -0x902, 0x3b, 0xd89, 0xdbb, 0xdd2, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdb3, 0xdd4, 0xdaf, 0xdcf, 0x3b, 0xd85, 0xd9f, 0xdc4, 0x3b, 0xdb6, 0xdaf, -0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0xdc4, 0xdc3, 0xdca, 0x3b, 0xdc3, 0xdd2, 0xd9a, 0xdd4, 0x3b, 0xdc3, 0xdd9, 0xdb1, -0x3b, 0xd89, 0xdbb, 0xdd2, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdb3, 0xdd4, 0xdaf, 0xdcf, 0x3b, 0xd85, 0xd9f, 0xdc4, 0xdbb, 0xdd4, 0xdc0, 0xdcf, -0xdaf, 0xdcf, 0x3b, 0xdb6, 0xdaf, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0xdc4, 0xdc3, 0xdca, 0xdb4, 0xdad, 0xdd2, 0xdb1, -0xdca, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdd2, 0xd9a, 0xdd4, 0xdbb, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdd9, 0xdb1, 0xdc3, 0xdd4, 0xdbb, 0xdcf, -0xdaf, 0xdcf, 0x3b, 0xd89, 0x3b, 0xdc3, 0x3b, 0xd85, 0x3b, 0xdb6, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0x3b, 0xdc3, 0xdd2, 0x3b, 0xdc3, -0xdd9, 0x3b, 0x6e, 0x65, 0x3b, 0x70, 0x6f, 0x3b, 0x75, 0x74, 0x3b, 0x73, 0x74, 0x3b, 0x161, 0x74, 0x3b, 0x70, 0x69, 0x3b, -0x73, 0x6f, 0x3b, 0x6e, 0x65, 0x64, 0x65, 0x13e, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x6c, 0x6f, 0x6b, 0x3b, 0x75, -0x74, 0x6f, 0x72, 0x6f, 0x6b, 0x3b, 0x73, 0x74, 0x72, 0x65, 0x64, 0x61, 0x3b, 0x161, 0x74, 0x76, 0x72, 0x74, 0x6f, 0x6b, -0x3b, 0x70, 0x69, 0x61, 0x74, 0x6f, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, 0x75, -0x3b, 0x73, 0x3b, 0x161, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x6e, 0x65, 0x64, 0x2e, 0x3b, 0x70, 0x6f, 0x6e, 0x2e, 0x3b, 0x74, -0x6f, 0x72, 0x2e, 0x3b, 0x73, 0x72, 0x65, 0x2e, 0x3b, 0x10d, 0x65, 0x74, 0x2e, 0x3b, 0x70, 0x65, 0x74, 0x2e, 0x3b, 0x73, -0x6f, 0x62, 0x2e, 0x3b, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, -0x65, 0x6b, 0x3b, 0x74, 0x6f, 0x72, 0x65, 0x6b, 0x3b, 0x73, 0x72, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x72, 0x74, -0x65, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, -0x74, 0x3b, 0x73, 0x3b, 0x10d, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x41, 0x78, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x3b, 0x54, 0x6c, -0x64, 0x6f, 0x3b, 0x41, 0x72, 0x62, 0x63, 0x3b, 0x4b, 0x68, 0x6d, 0x73, 0x3b, 0x4a, 0x6d, 0x63, 0x3b, 0x53, 0x62, 0x74, -0x69, 0x3b, 0x41, 0x78, 0x61, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x69, 0x69, 0x6e, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x61, 0x64, -0x6f, 0x3b, 0x41, 0x72, 0x62, 0x61, 0x63, 0x6f, 0x3b, 0x4b, 0x68, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x3b, 0x4a, 0x69, 0x6d, -0x63, 0x6f, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x69, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x4b, 0x68, 0x3b, -0x4a, 0x3b, 0x53, 0x3b, 0x64, 0x6f, 0x6d, 0x2e, 0x3b, 0x6c, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, -0x69, 0xe9, 0x2e, 0x3b, 0x6a, 0x75, 0x65, 0x2e, 0x3b, 0x76, 0x69, 0x65, 0x2e, 0x3b, 0x73, 0xe1, 0x62, 0x2e, 0x3b, 0x64, -0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x6c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, -0x6d, 0x69, 0xe9, 0x72, 0x63, 0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x6a, 0x75, 0x65, 0x76, 0x65, 0x73, 0x3b, 0x76, 0x69, 0x65, -0x72, 0x6e, 0x65, 0x73, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x4d, 0x6e, 0x67, 0x3b, 0x53, 0x65, 0x6e, 0x3b, -0x53, 0x61, 0x6c, 0x3b, 0x52, 0x65, 0x62, 0x3b, 0x4b, 0x61, 0x6d, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x53, 0x61, 0x70, 0x3b, -0x4d, 0x69, 0x6e, 0x67, 0x67, 0x75, 0x3b, 0x53, 0x65, 0x6e, 0xe9, 0x6e, 0x3b, 0x53, 0x61, 0x6c, 0x61, 0x73, 0x61, 0x3b, -0x52, 0x65, 0x62, 0x6f, 0x3b, 0x4b, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x68, 0x3b, 0x53, 0x61, -0x70, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, -0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, -0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, -0x6f, 0x73, 0x69, 0x3b, 0x73, 0xf6, 0x6e, 0x3b, 0x6d, 0xe5, 0x6e, 0x3b, 0x74, 0x69, 0x73, 0x3b, 0x6f, 0x6e, 0x73, 0x3b, -0x74, 0x6f, 0x72, 0x73, 0x3b, 0x66, 0x72, 0x65, 0x3b, 0x6c, 0xf6, 0x72, 0x3b, 0x73, 0xf6, 0x6e, 0x64, 0x61, 0x67, 0x3b, -0x6d, 0xe5, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x69, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x6f, 0x6e, 0x73, 0x64, 0x61, 0x67, -0x3b, 0x74, 0x6f, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x66, 0x72, 0x65, 0x64, 0x61, 0x67, 0x3b, 0x6c, 0xf6, 0x72, 0x64, -0x61, 0x67, 0x3b, 0x42f, 0x448, 0x431, 0x3b, 0x414, 0x448, 0x431, 0x3b, 0x421, 0x448, 0x431, 0x3b, 0x427, 0x448, 0x431, 0x3b, 0x41f, -0x448, 0x431, 0x3b, 0x4b6, 0x43c, 0x44a, 0x3b, 0x428, 0x43d, 0x431, 0x3b, 0x42f, 0x43a, 0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x414, -0x443, 0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x421, 0x435, 0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x427, 0x43e, 0x440, 0x448, 0x430, -0x43d, 0x431, 0x435, 0x3b, 0x41f, 0x430, 0x43d, 0x4b7, 0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x4b6, 0x443, 0x43c, 0x44a, 0x430, 0x3b, -0x428, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x42f, 0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x4b6, 0x3b, 0x428, 0x3b, -0xb9e, 0xbbe, 0xbaf, 0xbbf, 0x2e, 0x3b, 0xba4, 0xbbf, 0xb99, 0xbcd, 0x2e, 0x3b, 0xb9a, 0xbc6, 0xbb5, 0xbcd, 0x2e, 0x3b, 0xbaa, 0xbc1, -0xba4, 0x2e, 0x3b, 0xbb5, 0xbbf, 0xbaf, 0xbbe, 0x2e, 0x3b, 0xbb5, 0xbc6, 0xbb3, 0xbcd, 0x2e, 0x3b, 0xb9a, 0xba9, 0xbbf, 0x3b, 0xb9e, -0xbbe, 0xbaf, 0xbbf, 0xbb1, 0xbc1, 0x3b, 0xba4, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, 0xb9a, 0xbc6, 0xbb5, 0xbcd, 0xbb5, 0xbbe, -0xbaf, 0xbcd, 0x3b, 0xbaa, 0xbc1, 0xba4, 0xba9, 0xbcd, 0x3b, 0xbb5, 0xbbf, 0xbaf, 0xbbe, 0xbb4, 0xba9, 0xbcd, 0x3b, 0xbb5, 0xbc6, 0xbb3, -0xbcd, 0xbb3, 0xbbf, 0x3b, 0xb9a, 0xba9, 0xbbf, 0x3b, 0xb9e, 0xbbe, 0x3b, 0xba4, 0xbbf, 0x3b, 0xb9a, 0xbc6, 0x3b, 0xbaa, 0xbc1, 0x3b, -0xbb5, 0xbbf, 0x3b, 0xbb5, 0xbc6, 0x3b, 0xb9a, 0x3b, 0x44f, 0x43a, 0x448, 0x2e, 0x3b, 0x434, 0x4af, 0x448, 0x2e, 0x3b, 0x441, 0x438, -0x448, 0x2e, 0x3b, 0x447, 0x4d9, 0x440, 0x2e, 0x3b, 0x43f, 0x4d9, 0x43d, 0x497, 0x2e, 0x3b, 0x497, 0x43e, 0x43c, 0x2e, 0x3b, 0x448, -0x438, 0x43c, 0x2e, 0x3b, 0x44f, 0x43a, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x434, 0x4af, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, -0x441, 0x438, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x447, 0x4d9, 0x440, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x43f, 0x4d9, 0x43d, -0x497, 0x435, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x497, 0x43e, 0x43c, 0x433, 0x430, 0x3b, 0x448, 0x438, 0x43c, 0x431, 0x4d9, 0x3b, -0x42f, 0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x496, 0x3b, 0x428, 0x3b, 0xc06, 0xc26, 0xc3f, 0x3b, 0xc38, 0xc4b, -0xc2e, 0x3b, 0xc2e, 0xc02, 0xc17, 0xc33, 0x3b, 0xc2c, 0xc41, 0xc27, 0x3b, 0xc17, 0xc41, 0xc30, 0xc41, 0x3b, 0xc36, 0xc41, 0xc15, 0xc4d, -0xc30, 0x3b, 0xc36, 0xc28, 0xc3f, 0x3b, 0xc06, 0xc26, 0xc3f, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc38, 0xc4b, 0xc2e, 0xc35, 0xc3e, 0xc30, -0xc02, 0x3b, 0xc2e, 0xc02, 0xc17, 0xc33, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc2c, 0xc41, 0xc27, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc17, -0xc41, 0xc30, 0xc41, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc36, 0xc41, 0xc15, 0xc4d, 0xc30, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc36, 0xc28, -0xc3f, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc06, 0x3b, 0xc38, 0xc4b, 0x3b, 0xc2e, 0x3b, 0xc2c, 0xc41, 0x3b, 0xc17, 0xc41, 0x3b, 0xc36, -0xc41, 0x3b, 0xc36, 0x3b, 0xe2d, 0xe32, 0x2e, 0x3b, 0xe08, 0x2e, 0x3b, 0xe2d, 0x2e, 0x3b, 0xe1e, 0x2e, 0x3b, 0xe1e, 0xe24, 0x2e, -0x3b, 0xe28, 0x2e, 0x3b, 0xe2a, 0x2e, 0x3b, 0xe27, 0xe31, 0xe19, 0xe2d, 0xe32, 0xe17, 0xe34, 0xe15, 0xe22, 0xe4c, 0x3b, 0xe27, 0xe31, -0xe19, 0xe08, 0xe31, 0xe19, 0xe17, 0xe23, 0xe4c, 0x3b, 0xe27, 0xe31, 0xe19, 0xe2d, 0xe31, 0xe07, 0xe04, 0xe32, 0xe23, 0x3b, 0xe27, 0xe31, -0xe19, 0xe1e, 0xe38, 0xe18, 0x3b, 0xe27, 0xe31, 0xe19, 0xe1e, 0xe24, 0xe2b, 0xe31, 0xe2a, 0xe1a, 0xe14, 0xe35, 0x3b, 0xe27, 0xe31, 0xe19, -0xe28, 0xe38, 0xe01, 0xe23, 0xe4c, 0x3b, 0xe27, 0xe31, 0xe19, 0xe40, 0xe2a, 0xe32, 0xe23, 0xe4c, 0x3b, 0xe2d, 0xe32, 0x3b, 0xe08, 0x3b, -0xe2d, 0x3b, 0xe1e, 0x3b, 0xe1e, 0xe24, 0x3b, 0xe28, 0x3b, 0xe2a, 0x3b, 0xf49, 0xf72, 0xf0b, 0xf58, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, -0xf56, 0xf0b, 0x3b, 0xf58, 0xf72, 0xf42, 0xf0b, 0xf51, 0xf58, 0xf62, 0xf0b, 0x3b, 0xf63, 0xfb7, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf55, -0xf74, 0xf62, 0xf0b, 0xf56, 0xf74, 0xf0b, 0x3b, 0xf54, 0xf0b, 0xf66, 0xf44, 0xf66, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0xf54, -0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf49, 0xf72, 0xf0b, 0xf58, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, -0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf58, 0xf72, 0xf42, 0xf0b, 0xf51, 0xf58, 0xf62, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf63, -0xfb7, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf55, 0xf74, 0xf62, 0xf0b, 0xf56, 0xf74, 0xf0b, 0x3b, 0xf42, 0xf5f, -0xf60, 0xf0b, 0xf54, 0xf0b, 0xf66, 0xf44, 0xf66, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0xf54, 0xf0b, -0x3b, 0xf49, 0xf72, 0x3b, 0xf5f, 0xfb3, 0x3b, 0xf58, 0xf72, 0xf42, 0x3b, 0xf63, 0xfb7, 0xf42, 0x3b, 0xf55, 0xf74, 0xf62, 0x3b, 0xf66, -0xf44, 0xf66, 0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0x3b, 0x1230, 0x1295, 0x3b, 0x1230, 0x1291, 0x3b, 0x1230, 0x1209, 0x3b, 0x1228, 0x1261, 0x3b, -0x1213, 0x1219, 0x3b, 0x12d3, 0x122d, 0x3b, 0x1240, 0x12f3, 0x3b, 0x1230, 0x1295, 0x1260, 0x1275, 0x3b, 0x1230, 0x1291, 0x12ed, 0x3b, 0x1220, 0x1209, -0x1235, 0x3b, 0x1228, 0x1261, 0x12d5, 0x3b, 0x1283, 0x1219, 0x1235, 0x3b, 0x12d3, 0x122d, 0x1262, 0x3b, 0x1240, 0x12f3, 0x121d, 0x3b, 0x1230, 0x3b, -0x1230, 0x3b, 0x1220, 0x3b, 0x1228, 0x3b, 0x1213, 0x3b, 0x12d3, 0x3b, 0x1240, 0x3b, 0x1230, 0x3b, 0x1230, 0x3b, 0x1230, 0x3b, 0x1228, 0x3b, -0x1213, 0x3b, 0x12d3, 0x3b, 0x1240, 0x3b, 0x53, 0x101, 0x70, 0x3b, 0x4d, 0x14d, 0x6e, 0x3b, 0x54, 0x16b, 0x73, 0x3b, 0x50, 0x75, -0x6c, 0x3b, 0x54, 0x75, 0x2bb, 0x61, 0x3b, 0x46, 0x61, 0x6c, 0x3b, 0x54, 0x6f, 0x6b, 0x3b, 0x53, 0x101, 0x70, 0x61, 0x74, -0x65, 0x3b, 0x4d, 0x14d, 0x6e, 0x69, 0x74, 0x65, 0x3b, 0x54, 0x16b, 0x73, 0x69, 0x74, 0x65, 0x3b, 0x50, 0x75, 0x6c, 0x65, -0x6c, 0x75, 0x6c, 0x75, 0x3b, 0x54, 0x75, 0x2bb, 0x61, 0x70, 0x75, 0x6c, 0x65, 0x6c, 0x75, 0x6c, 0x75, 0x3b, 0x46, 0x61, -0x6c, 0x61, 0x69, 0x74, 0x65, 0x3b, 0x54, 0x6f, 0x6b, 0x6f, 0x6e, 0x61, 0x6b, 0x69, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x54, -0x3b, 0x50, 0x3b, 0x54, 0x3b, 0x46, 0x3b, 0x54, 0x3b, 0x50, 0x61, 0x7a, 0x3b, 0x50, 0x7a, 0x74, 0x3b, 0x53, 0x61, 0x6c, -0x3b, 0xc7, 0x61, 0x72, 0x3b, 0x50, 0x65, 0x72, 0x3b, 0x43, 0x75, 0x6d, 0x3b, 0x43, 0x6d, 0x74, 0x3b, 0x50, 0x61, 0x7a, -0x61, 0x72, 0x3b, 0x50, 0x61, 0x7a, 0x61, 0x72, 0x74, 0x65, 0x73, 0x69, 0x3b, 0x53, 0x61, 0x6c, 0x131, 0x3b, 0xc7, 0x61, -0x72, 0x15f, 0x61, 0x6d, 0x62, 0x61, 0x3b, 0x50, 0x65, 0x72, 0x15f, 0x65, 0x6d, 0x62, 0x65, 0x3b, 0x43, 0x75, 0x6d, 0x61, -0x3b, 0x43, 0x75, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x69, 0x3b, 0x50, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0xc7, 0x3b, 0x50, -0x3b, 0x43, 0x3b, 0x43, 0x3b, 0xdd, 0x65, 0x6b, 0x3b, 0x44, 0x75, 0x15f, 0x3b, 0x53, 0x69, 0x15f, 0x3b, 0xc7, 0x61, 0x72, -0x3b, 0x50, 0x65, 0x6e, 0x3b, 0x41, 0x6e, 0x6e, 0x3b, 0x15e, 0x65, 0x6e, 0x3b, 0xdd, 0x65, 0x6b, 0x15f, 0x65, 0x6e, 0x62, -0x65, 0x3b, 0x44, 0x75, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x53, 0x69, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0xc7, 0x61, -0x72, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x50, 0x65, 0x6e, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x41, 0x6e, 0x6e, 0x61, -0x3b, 0x15e, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0xdd, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0xc7, 0x3b, 0x50, 0x3b, 0x41, 0x3b, 0x15e, -0x3b, 0xfd, 0x65, 0x6b, 0x3b, 0x64, 0x75, 0x15f, 0x3b, 0x73, 0x69, 0x15f, 0x3b, 0xe7, 0x61, 0x72, 0x3b, 0x70, 0x65, 0x6e, -0x3b, 0x61, 0x6e, 0x6e, 0x3b, 0x15f, 0x65, 0x6e, 0x3b, 0xfd, 0x65, 0x6b, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x64, 0x75, -0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x73, 0x69, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0xe7, 0x61, 0x72, 0x15f, 0x65, 0x6e, -0x62, 0x65, 0x3b, 0x70, 0x65, 0x6e, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x61, 0x6e, 0x6e, 0x61, 0x3b, 0x15f, 0x65, 0x6e, -0x62, 0x65, 0x3b, 0x64a, 0x6d5, 0x3b, 0x62f, 0x6c8, 0x3b, 0x633, 0x6d5, 0x3b, 0x686, 0x627, 0x3b, 0x67e, 0x6d5, 0x3b, 0x62c, 0x6c8, -0x3b, 0x634, 0x6d5, 0x3b, 0x64a, 0x6d5, 0x643, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x62f, 0x6c8, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, -0x3b, 0x633, 0x6d5, 0x64a, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x686, 0x627, 0x631, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x67e, -0x6d5, 0x64a, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x62c, 0x6c8, 0x645, 0x6d5, 0x3b, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x64a, -0x3b, 0x62f, 0x3b, 0x633, 0x3b, 0x686, 0x3b, 0x67e, 0x3b, 0x62c, 0x3b, 0x634, 0x3b, 0x43d, 0x435, 0x434, 0x456, 0x43b, 0x44f, 0x3b, -0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x456, 0x43b, 0x43e, 0x43a, 0x3b, 0x432, 0x456, 0x432, 0x442, 0x43e, 0x440, 0x43e, 0x43a, 0x3b, 0x441, -0x435, 0x440, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x435, 0x440, 0x3b, 0x43f, 0x2bc, 0x44f, 0x442, 0x43d, 0x438, 0x446, -0x44f, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x41d, 0x3b, 0x41f, 0x3b, 0x412, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, -0x3b, 0x421, 0x3b, 0x627, 0x62a, 0x648, 0x627, 0x631, 0x3b, 0x67e, 0x6cc, 0x631, 0x3b, 0x645, 0x646, 0x6af, 0x644, 0x3b, 0x628, 0x62f, -0x6be, 0x3b, 0x62c, 0x645, 0x639, 0x631, 0x627, 0x62a, 0x3b, 0x62c, 0x645, 0x639, 0x6c1, 0x3b, 0x6c1, 0x641, 0x62a, 0x6c1, 0x3b, 0x59, -0x61, 0x6b, 0x3b, 0x44, 0x75, 0x73, 0x68, 0x3b, 0x53, 0x65, 0x73, 0x68, 0x3b, 0x43, 0x68, 0x6f, 0x72, 0x3b, 0x50, 0x61, -0x79, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x53, 0x68, 0x61, 0x6e, 0x3b, 0x79, 0x61, 0x6b, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, -0x3b, 0x64, 0x75, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x73, 0x65, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x63, -0x68, 0x6f, 0x72, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x70, 0x61, 0x79, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, -0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x59, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x43, 0x3b, -0x50, 0x3b, 0x4a, 0x3b, 0x53, 0x3b, 0x6cc, 0x2e, 0x3b, 0x62f, 0x2e, 0x3b, 0x633, 0x2e, 0x3b, 0x686, 0x2e, 0x3b, 0x67e, 0x2e, -0x3b, 0x62c, 0x2e, 0x3b, 0x634, 0x2e, 0x3b, 0x44f, 0x43a, 0x448, 0x3b, 0x434, 0x443, 0x448, 0x3b, 0x441, 0x435, 0x448, 0x3b, 0x447, -0x43e, 0x440, 0x3b, 0x43f, 0x430, 0x439, 0x3b, 0x436, 0x443, 0x43c, 0x3b, 0x448, 0x430, 0x43d, 0x3b, 0x44f, 0x43a, 0x448, 0x430, 0x43d, -0x431, 0x430, 0x3b, 0x434, 0x443, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x441, 0x435, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x447, -0x43e, 0x440, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x43f, 0x430, 0x439, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x436, 0x443, 0x43c, -0x430, 0x3b, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x42f, 0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x416, 0x3b, -0x428, 0x3b, 0x43, 0x4e, 0x3b, 0x54, 0x68, 0x20, 0x32, 0x3b, 0x54, 0x68, 0x20, 0x33, 0x3b, 0x54, 0x68, 0x20, 0x34, 0x3b, -0x54, 0x68, 0x20, 0x35, 0x3b, 0x54, 0x68, 0x20, 0x36, 0x3b, 0x54, 0x68, 0x20, 0x37, 0x3b, 0x43, 0x68, 0x1ee7, 0x20, 0x4e, -0x68, 0x1ead, 0x74, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x48, 0x61, 0x69, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x42, 0x61, 0x3b, 0x54, -0x68, 0x1ee9, 0x20, 0x54, 0x1b0, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x4e, 0x103, 0x6d, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x53, 0xe1, -0x75, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x42, 0x1ea3, 0x79, 0x3b, 0x43, 0x4e, 0x3b, 0x54, 0x32, 0x3b, 0x54, 0x33, 0x3b, 0x54, -0x34, 0x3b, 0x54, 0x35, 0x3b, 0x54, 0x36, 0x3b, 0x54, 0x37, 0x3b, 0x53, 0x75, 0x3b, 0x4d, 0x75, 0x3b, 0x54, 0x75, 0x3b, -0x56, 0x65, 0x3b, 0x44, 0xf6, 0x3b, 0x46, 0x72, 0x3b, 0x5a, 0xe4, 0x3b, 0x73, 0x75, 0x64, 0x65, 0x6c, 0x3b, 0x6d, 0x75, -0x64, 0x65, 0x6c, 0x3b, 0x74, 0x75, 0x64, 0x65, 0x6c, 0x3b, 0x76, 0x65, 0x64, 0x65, 0x6c, 0x3b, 0x64, 0xf6, 0x64, 0x65, -0x6c, 0x3b, 0x66, 0x72, 0x69, 0x64, 0x65, 0x6c, 0x3b, 0x7a, 0xe4, 0x64, 0x65, 0x6c, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x54, -0x3b, 0x56, 0x3b, 0x44, 0x3b, 0x46, 0x3b, 0x5a, 0x3b, 0x73, 0x75, 0x2e, 0x3b, 0x6d, 0x75, 0x2e, 0x3b, 0x74, 0x75, 0x2e, -0x3b, 0x76, 0x65, 0x2e, 0x3b, 0x64, 0xf6, 0x2e, 0x3b, 0x66, 0x72, 0x2e, 0x3b, 0x7a, 0xe4, 0x2e, 0x3b, 0x53, 0x75, 0x6c, -0x3b, 0x4c, 0x6c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x4d, 0x65, 0x72, 0x3b, 0x49, 0x61, 0x75, 0x3b, 0x47, 0x77, -0x65, 0x3b, 0x53, 0x61, 0x64, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x53, 0x75, 0x6c, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, -0x4c, 0x6c, 0x75, 0x6e, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x4d, 0x61, 0x77, 0x72, 0x74, 0x68, 0x3b, 0x44, 0x79, 0x64, -0x64, 0x20, 0x4d, 0x65, 0x72, 0x63, 0x68, 0x65, 0x72, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x49, 0x61, 0x75, 0x3b, 0x44, -0x79, 0x64, 0x64, 0x20, 0x47, 0x77, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x53, 0x61, 0x64, 0x77, -0x72, 0x6e, 0x3b, 0x53, 0x3b, 0x4c, 0x6c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x47, 0x3b, 0x53, 0x3b, 0x53, 0x75, +0x3b, 0x4b, 0x3b, 0x50, 0x3b, 0x59, 0x3b, 0x930, 0x935, 0x93f, 0x935, 0x93e, 0x938, 0x930, 0x903, 0x3b, 0x938, 0x94b, 0x92e, 0x935, +0x93e, 0x938, 0x930, 0x903, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x935, 0x93e, 0x938, 0x930, 0x903, 0x3b, 0x92c, 0x941, 0x927, 0x935, 0x93e, +0x938, 0x930, 0x903, 0x3b, 0x917, 0x941, 0x930, 0x941, 0x935, 0x93e, 0x938, 0x930, 0x3a, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x935, +0x93e, 0x938, 0x930, 0x903, 0x3b, 0x936, 0x928, 0x93f, 0x935, 0x93e, 0x938, 0x930, 0x903, 0x3b, 0x43d, 0x435, 0x434, 0x3b, 0x43f, 0x43e, +0x43d, 0x3b, 0x443, 0x442, 0x43e, 0x3b, 0x441, 0x440, 0x435, 0x3b, 0x447, 0x435, 0x442, 0x3b, 0x43f, 0x435, 0x442, 0x3b, 0x441, 0x443, +0x431, 0x3b, 0x43d, 0x435, 0x434, 0x435, 0x459, 0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, +0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, 0x440, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x430, 0x43a, +0x3b, 0x43f, 0x435, 0x442, 0x430, 0x43a, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x43d, 0x3b, 0x43f, 0x3b, 0x443, 0x3b, +0x441, 0x3b, 0x447, 0x3b, 0x43f, 0x3b, 0x441, 0x3b, 0x6e, 0x65, 0x64, 0x3b, 0x70, 0x6f, 0x6e, 0x3b, 0x75, 0x74, 0x6f, 0x3b, +0x73, 0x72, 0x65, 0x3b, 0x10d, 0x65, 0x74, 0x3b, 0x70, 0x65, 0x74, 0x3b, 0x73, 0x75, 0x62, 0x3b, 0x6e, 0x65, 0x64, 0x6a, +0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, +0x61, 0x6b, 0x3b, 0x73, 0x72, 0x69, 0x6a, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, +0x70, 0x65, 0x74, 0x61, 0x6b, 0x3b, 0x73, 0x75, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, +0x3b, 0x70, 0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x6b, 0x3b, 0x73, +0x72, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61, 0x6b, 0x3b, +0x73, 0x75, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x43d, 0x435, 0x434, 0x3b, 0x43f, 0x43e, 0x43d, 0x3b, 0x443, 0x442, 0x43e, 0x3b, 0x441, +0x440, 0x438, 0x3b, 0x447, 0x435, 0x442, 0x3b, 0x43f, 0x435, 0x442, 0x3b, 0x441, 0x443, 0x431, 0x3b, 0x43d, 0x435, 0x434, 0x458, 0x435, +0x459, 0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x458, 0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, 0x442, 0x43e, 0x440, 0x430, 0x43a, +0x3b, 0x441, 0x440, 0x438, 0x458, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x430, 0x43a, 0x3b, 0x43f, 0x435, +0x442, 0x430, 0x43a, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x43d, 0x435, 0x434, 0x458, 0x435, 0x459, 0x430, 0x3b, 0x43f, +0x43e, 0x43d, 0x435, 0x434, 0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, 0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, 0x440, 0x438, 0x458, +0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, 0x430, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430, 0x43a, 0x3b, 0x441, +0x443, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x425, 0x446, 0x431, 0x3b, 0x41a, 0x440, 0x441, 0x3b, 0x414, 0x446, 0x433, 0x3b, 0x4d4, 0x440, +0x442, 0x3b, 0x426, 0x43f, 0x440, 0x3b, 0x41c, 0x440, 0x431, 0x3b, 0x421, 0x431, 0x442, 0x3b, 0x425, 0x443, 0x44b, 0x446, 0x430, 0x443, +0x431, 0x43e, 0x43d, 0x3b, 0x41a, 0x44a, 0x443, 0x44b, 0x440, 0x438, 0x441, 0x4d5, 0x440, 0x3b, 0x414, 0x44b, 0x446, 0x446, 0x4d5, 0x433, +0x3b, 0x4d4, 0x440, 0x442, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x426, 0x44b, 0x43f, 0x43f, 0x4d5, 0x440, 0x4d5, 0x43c, 0x3b, 0x41c, +0x430, 0x439, 0x440, 0x4d5, 0x43c, 0x431, 0x43e, 0x43d, 0x3b, 0x421, 0x430, 0x431, 0x430, 0x442, 0x3b, 0x425, 0x3b, 0x41a, 0x3b, 0x414, +0x3b, 0x4d4, 0x3b, 0x426, 0x3b, 0x41c, 0x3b, 0x421, 0x3b, 0x445, 0x446, 0x431, 0x3b, 0x43a, 0x440, 0x441, 0x3b, 0x434, 0x446, 0x433, +0x3b, 0x4d5, 0x440, 0x442, 0x3b, 0x446, 0x43f, 0x440, 0x3b, 0x43c, 0x440, 0x431, 0x3b, 0x441, 0x431, 0x442, 0x3b, 0x445, 0x443, 0x44b, +0x446, 0x430, 0x443, 0x431, 0x43e, 0x43d, 0x3b, 0x43a, 0x44a, 0x443, 0x44b, 0x440, 0x438, 0x441, 0x4d5, 0x440, 0x3b, 0x434, 0x44b, 0x446, +0x446, 0x4d5, 0x433, 0x3b, 0x4d5, 0x440, 0x442, 0x44b, 0x446, 0x446, 0x4d5, 0x433, 0x3b, 0x446, 0x44b, 0x43f, 0x43f, 0x4d5, 0x440, 0x4d5, +0x43c, 0x3b, 0x43c, 0x430, 0x439, 0x440, 0x4d5, 0x43c, 0x431, 0x43e, 0x43d, 0x3b, 0x441, 0x430, 0x431, 0x430, 0x442, 0x3b, 0x53, 0x76, +0x6f, 0x3b, 0x4d, 0x75, 0x76, 0x3b, 0x43, 0x68, 0x70, 0x3b, 0x43, 0x68, 0x74, 0x3b, 0x43, 0x68, 0x6e, 0x3b, 0x43, 0x68, +0x73, 0x3b, 0x4d, 0x75, 0x67, 0x3b, 0x53, 0x76, 0x6f, 0x6e, 0x64, 0x6f, 0x3b, 0x4d, 0x75, 0x76, 0x68, 0x75, 0x72, 0x6f, +0x3b, 0x43, 0x68, 0x69, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x43, 0x68, 0x69, +0x6e, 0x61, 0x3b, 0x43, 0x68, 0x69, 0x73, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x75, 0x67, 0x6f, 0x76, 0x65, 0x72, 0x61, +0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x4d, 0x3b, 0x622, 0x686, 0x631, 0x3b, 0x633, +0x648, 0x645, 0x631, 0x3b, 0x627, 0x6b1, 0x627, 0x631, 0x648, 0x3b, 0x627, 0x631, 0x628, 0x639, 0x3b, 0x62e, 0x645, 0x64a, 0x633, 0x3b, +0x62c, 0x645, 0x639, 0x648, 0x3b, 0x687, 0x646, 0x687, 0x631, 0x3b, 0x622, 0x686, 0x631, 0x3b, 0x633, 0x648, 0x3b, 0x627, 0x6b1, 0x627, +0x631, 0x648, 0x3b, 0x627, 0x631, 0x628, 0x639, 0x3b, 0x62e, 0x645, 0x3b, 0x62c, 0x645, 0x639, 0x648, 0x3b, 0x687, 0x646, 0x687, 0x631, +0x3b, 0x906, 0x3b, 0x938, 0x942, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x927, 0x3b, 0x935, 0x93f, 0x938, 0x94d, 0x3b, 0x91c, 0x941, +0x92e, 0x3b, 0x91b, 0x902, 0x91b, 0x3b, 0x906, 0x930, 0x94d, 0x924, 0x3b, 0x938, 0x942, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x927, +0x3b, 0x935, 0x93f, 0x938, 0x3b, 0x91c, 0x941, 0x92e, 0x3b, 0x91b, 0x902, 0x91b, 0x3b, 0x906, 0x3b, 0x938, 0x942, 0x3b, 0x92e, 0x902, +0x3b, 0x92c, 0x941, 0x3b, 0x935, 0x93f, 0x3b, 0x936, 0x941, 0x3b, 0x91b, 0x902, 0x3b, 0x906, 0x930, 0x94d, 0x924, 0x3b, 0x938, 0x942, +0x3b, 0x92e, 0x902, 0x917, 0x3b, 0x92c, 0x941, 0x927, 0x3b, 0x935, 0x93f, 0x938, 0x3b, 0x91c, 0x941, 0x92e, 0x3b, 0x91b, 0x902, 0x91b, +0x3b, 0x906, 0x930, 0x94d, 0x924, 0x935, 0x93e, 0x930, 0x3b, 0x938, 0x942, 0x92e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x941, 0x3b, +0x92c, 0x941, 0x927, 0x930, 0x3b, 0x935, 0x93f, 0x938, 0x94d, 0x92a, 0x924, 0x3b, 0x91c, 0x941, 0x92e, 0x913, 0x3b, 0x91b, 0x902, 0x91b, +0x930, 0x3b, 0x906, 0x3b, 0x92e, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x3b, 0x935, 0x93f, 0x3b, 0x936, 0x941, 0x3b, 0x91b, 0x902, +0x3b, 0xd89, 0xdbb, 0xdd2, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdb3, 0xdd4, 0xdaf, 0xdcf, 0x3b, 0xd85, 0xd9f, 0xdc4, 0x3b, 0xdb6, 0xdaf, 0xdcf, +0xdaf, 0xdcf, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0xdc4, 0xdc3, 0xdca, 0x3b, 0xdc3, 0xdd2, 0xd9a, 0xdd4, 0x3b, 0xdc3, 0xdd9, 0xdb1, 0x3b, +0xd89, 0xdbb, 0xdd2, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdb3, 0xdd4, 0xdaf, 0xdcf, 0x3b, 0xd85, 0xd9f, 0xdc4, 0xdbb, 0xdd4, 0xdc0, 0xdcf, 0xdaf, +0xdcf, 0x3b, 0xdb6, 0xdaf, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0xdc4, 0xdc3, 0xdca, 0xdb4, 0xdad, 0xdd2, 0xdb1, 0xdca, +0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdd2, 0xd9a, 0xdd4, 0xdbb, 0xdcf, 0xdaf, 0xdcf, 0x3b, 0xdc3, 0xdd9, 0xdb1, 0xdc3, 0xdd4, 0xdbb, 0xdcf, 0xdaf, +0xdcf, 0x3b, 0xd89, 0x3b, 0xdc3, 0x3b, 0xd85, 0x3b, 0xdb6, 0x3b, 0xdb6, 0xdca, 0x200d, 0xdbb, 0x3b, 0xdc3, 0xdd2, 0x3b, 0xdc3, 0xdd9, +0x3b, 0x6e, 0x65, 0x3b, 0x70, 0x6f, 0x3b, 0x75, 0x74, 0x3b, 0x73, 0x74, 0x3b, 0x161, 0x74, 0x3b, 0x70, 0x69, 0x3b, 0x73, +0x6f, 0x3b, 0x6e, 0x65, 0x64, 0x65, 0x13e, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x64, 0x65, 0x6c, 0x6f, 0x6b, 0x3b, 0x75, 0x74, +0x6f, 0x72, 0x6f, 0x6b, 0x3b, 0x73, 0x74, 0x72, 0x65, 0x64, 0x61, 0x3b, 0x161, 0x74, 0x76, 0x72, 0x74, 0x6f, 0x6b, 0x3b, +0x70, 0x69, 0x61, 0x74, 0x6f, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, 0x75, 0x3b, +0x73, 0x3b, 0x161, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x6e, 0x65, 0x64, 0x2e, 0x3b, 0x70, 0x6f, 0x6e, 0x2e, 0x3b, 0x74, 0x6f, +0x72, 0x2e, 0x3b, 0x73, 0x72, 0x65, 0x2e, 0x3b, 0x10d, 0x65, 0x74, 0x2e, 0x3b, 0x70, 0x65, 0x74, 0x2e, 0x3b, 0x73, 0x6f, +0x62, 0x2e, 0x3b, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x65, +0x6b, 0x3b, 0x74, 0x6f, 0x72, 0x65, 0x6b, 0x3b, 0x73, 0x72, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x72, 0x74, 0x65, +0x6b, 0x3b, 0x70, 0x65, 0x74, 0x65, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, 0x74, +0x3b, 0x73, 0x3b, 0x10d, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x41, 0x78, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x3b, 0x54, 0x6c, 0x64, +0x6f, 0x3b, 0x41, 0x72, 0x62, 0x63, 0x3b, 0x4b, 0x68, 0x6d, 0x73, 0x3b, 0x4a, 0x6d, 0x63, 0x3b, 0x53, 0x62, 0x74, 0x69, +0x3b, 0x41, 0x78, 0x61, 0x64, 0x3b, 0x49, 0x73, 0x6e, 0x69, 0x69, 0x6e, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x61, 0x64, 0x6f, +0x3b, 0x41, 0x72, 0x62, 0x61, 0x63, 0x6f, 0x3b, 0x4b, 0x68, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x3b, 0x4a, 0x69, 0x6d, 0x63, +0x6f, 0x3b, 0x53, 0x61, 0x62, 0x74, 0x69, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x4b, 0x68, 0x3b, 0x4a, +0x3b, 0x53, 0x3b, 0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x69, 0xe9, 0x3b, 0x6a, +0x75, 0x65, 0x3b, 0x76, 0x69, 0x65, 0x3b, 0x73, 0xe1, 0x62, 0x3b, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x6c, +0x75, 0x6e, 0x65, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x6d, 0x69, 0xe9, 0x72, 0x63, 0x6f, 0x6c, 0x65, +0x73, 0x3b, 0x6a, 0x75, 0x65, 0x76, 0x65, 0x73, 0x3b, 0x76, 0x69, 0x65, 0x72, 0x6e, 0x65, 0x73, 0x3b, 0x73, 0xe1, 0x62, +0x61, 0x64, 0x6f, 0x3b, 0x64, 0x6f, 0x6d, 0x2e, 0x3b, 0x6c, 0x75, 0x6e, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x6d, +0x69, 0xe9, 0x2e, 0x3b, 0x6a, 0x75, 0x65, 0x2e, 0x3b, 0x76, 0x69, 0x65, 0x2e, 0x3b, 0x73, 0xe1, 0x62, 0x2e, 0x3b, 0x4d, +0x6e, 0x67, 0x3b, 0x53, 0x65, 0x6e, 0x3b, 0x53, 0x61, 0x6c, 0x3b, 0x52, 0x65, 0x62, 0x3b, 0x4b, 0x65, 0x6d, 0x3b, 0x4a, +0x75, 0x6d, 0x3b, 0x53, 0x61, 0x70, 0x3b, 0x4d, 0x69, 0x6e, 0x67, 0x67, 0x75, 0x3b, 0x53, 0x65, 0x6e, 0xe9, 0x6e, 0x3b, +0x53, 0x61, 0x6c, 0x61, 0x73, 0x61, 0x3b, 0x52, 0x65, 0x62, 0x6f, 0x3b, 0x4b, 0x65, 0x6d, 0x69, 0x73, 0x3b, 0x4a, 0x75, +0x6d, 0x61, 0x61, 0x68, 0x3b, 0x53, 0x61, 0x70, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x69, 0x3b, +0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, +0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, +0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x73, 0xf6, 0x6e, 0x3b, 0x6d, 0xe5, 0x6e, 0x3b, 0x74, +0x69, 0x73, 0x3b, 0x6f, 0x6e, 0x73, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x3b, 0x66, 0x72, 0x65, 0x3b, 0x6c, 0xf6, 0x72, 0x3b, +0x73, 0xf6, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x6d, 0xe5, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x69, 0x73, 0x64, 0x61, 0x67, +0x3b, 0x6f, 0x6e, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x66, 0x72, 0x65, 0x64, +0x61, 0x67, 0x3b, 0x6c, 0xf6, 0x72, 0x64, 0x61, 0x67, 0x3b, 0x42f, 0x448, 0x431, 0x3b, 0x414, 0x448, 0x431, 0x3b, 0x421, 0x448, +0x431, 0x3b, 0x427, 0x448, 0x431, 0x3b, 0x41f, 0x448, 0x431, 0x3b, 0x4b6, 0x43c, 0x44a, 0x3b, 0x428, 0x43d, 0x431, 0x3b, 0x42f, 0x43a, +0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x414, 0x443, 0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x421, 0x435, 0x448, 0x430, 0x43d, 0x431, +0x435, 0x3b, 0x427, 0x43e, 0x440, 0x448, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x41f, 0x430, 0x43d, 0x4b7, 0x448, 0x430, 0x43d, 0x431, 0x435, +0x3b, 0x4b6, 0x443, 0x43c, 0x44a, 0x430, 0x3b, 0x428, 0x430, 0x43d, 0x431, 0x435, 0x3b, 0x42f, 0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x427, +0x3b, 0x41f, 0x3b, 0x4b6, 0x3b, 0x428, 0x3b, 0xb9e, 0xbbe, 0xbaf, 0xbbf, 0x2e, 0x3b, 0xba4, 0xbbf, 0xb99, 0xbcd, 0x2e, 0x3b, 0xb9a, +0xbc6, 0xbb5, 0xbcd, 0x2e, 0x3b, 0xbaa, 0xbc1, 0xba4, 0x2e, 0x3b, 0xbb5, 0xbbf, 0xbaf, 0xbbe, 0x2e, 0x3b, 0xbb5, 0xbc6, 0xbb3, 0xbcd, +0x2e, 0x3b, 0xb9a, 0xba9, 0xbbf, 0x3b, 0xb9e, 0xbbe, 0xbaf, 0xbbf, 0xbb1, 0xbc1, 0x3b, 0xba4, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbb3, 0xbcd, +0x3b, 0xb9a, 0xbc6, 0xbb5, 0xbcd, 0xbb5, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0xbaa, 0xbc1, 0xba4, 0xba9, 0xbcd, 0x3b, 0xbb5, 0xbbf, 0xbaf, 0xbbe, +0xbb4, 0xba9, 0xbcd, 0x3b, 0xbb5, 0xbc6, 0xbb3, 0xbcd, 0xbb3, 0xbbf, 0x3b, 0xb9a, 0xba9, 0xbbf, 0x3b, 0xb9e, 0xbbe, 0x3b, 0xba4, 0xbbf, +0x3b, 0xb9a, 0xbc6, 0x3b, 0xbaa, 0xbc1, 0x3b, 0xbb5, 0xbbf, 0x3b, 0xbb5, 0xbc6, 0x3b, 0xb9a, 0x3b, 0x44f, 0x43a, 0x448, 0x2e, 0x3b, +0x434, 0x4af, 0x448, 0x2e, 0x3b, 0x441, 0x438, 0x448, 0x2e, 0x3b, 0x447, 0x4d9, 0x440, 0x2e, 0x3b, 0x43f, 0x4d9, 0x43d, 0x497, 0x2e, +0x3b, 0x497, 0x43e, 0x43c, 0x2e, 0x3b, 0x448, 0x438, 0x43c, 0x2e, 0x3b, 0x44f, 0x43a, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x434, +0x4af, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x441, 0x438, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x447, 0x4d9, 0x440, 0x448, 0x4d9, +0x43c, 0x431, 0x435, 0x3b, 0x43f, 0x4d9, 0x43d, 0x497, 0x435, 0x448, 0x4d9, 0x43c, 0x431, 0x435, 0x3b, 0x497, 0x43e, 0x43c, 0x433, 0x430, +0x3b, 0x448, 0x438, 0x43c, 0x431, 0x4d9, 0x3b, 0x42f, 0x3b, 0x414, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x496, 0x3b, 0x428, +0x3b, 0xc06, 0xc26, 0xc3f, 0x3b, 0xc38, 0xc4b, 0xc2e, 0x3b, 0xc2e, 0xc02, 0xc17, 0xc33, 0x3b, 0xc2c, 0xc41, 0xc27, 0x3b, 0xc17, 0xc41, +0xc30, 0xc41, 0x3b, 0xc36, 0xc41, 0xc15, 0xc4d, 0xc30, 0x3b, 0xc36, 0xc28, 0xc3f, 0x3b, 0xc06, 0xc26, 0xc3f, 0xc35, 0xc3e, 0xc30, 0xc02, +0x3b, 0xc38, 0xc4b, 0xc2e, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc2e, 0xc02, 0xc17, 0xc33, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc2c, 0xc41, +0xc27, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc17, 0xc41, 0xc30, 0xc41, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc36, 0xc41, 0xc15, 0xc4d, 0xc30, +0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc36, 0xc28, 0xc3f, 0xc35, 0xc3e, 0xc30, 0xc02, 0x3b, 0xc06, 0x3b, 0xc38, 0xc4b, 0x3b, 0xc2e, 0x3b, +0xc2c, 0xc41, 0x3b, 0xc17, 0xc41, 0x3b, 0xc36, 0xc41, 0x3b, 0xc36, 0x3b, 0xe2d, 0xe32, 0x2e, 0x3b, 0xe08, 0x2e, 0x3b, 0xe2d, 0x2e, +0x3b, 0xe1e, 0x2e, 0x3b, 0xe1e, 0xe24, 0x2e, 0x3b, 0xe28, 0x2e, 0x3b, 0xe2a, 0x2e, 0x3b, 0xe27, 0xe31, 0xe19, 0xe2d, 0xe32, 0xe17, +0xe34, 0xe15, 0xe22, 0xe4c, 0x3b, 0xe27, 0xe31, 0xe19, 0xe08, 0xe31, 0xe19, 0xe17, 0xe23, 0xe4c, 0x3b, 0xe27, 0xe31, 0xe19, 0xe2d, 0xe31, +0xe07, 0xe04, 0xe32, 0xe23, 0x3b, 0xe27, 0xe31, 0xe19, 0xe1e, 0xe38, 0xe18, 0x3b, 0xe27, 0xe31, 0xe19, 0xe1e, 0xe24, 0xe2b, 0xe31, 0xe2a, +0xe1a, 0xe14, 0xe35, 0x3b, 0xe27, 0xe31, 0xe19, 0xe28, 0xe38, 0xe01, 0xe23, 0xe4c, 0x3b, 0xe27, 0xe31, 0xe19, 0xe40, 0xe2a, 0xe32, 0xe23, +0xe4c, 0x3b, 0xe2d, 0xe32, 0x3b, 0xe08, 0x3b, 0xe2d, 0x3b, 0xe1e, 0x3b, 0xe1e, 0xe24, 0x3b, 0xe28, 0x3b, 0xe2a, 0x3b, 0xf49, 0xf72, +0xf0b, 0xf58, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0x3b, 0xf58, 0xf72, 0xf42, 0xf0b, 0xf51, 0xf58, 0xf62, 0xf0b, 0x3b, 0xf63, +0xfb7, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf55, 0xf74, 0xf62, 0xf0b, 0xf56, 0xf74, 0xf0b, 0x3b, 0xf54, 0xf0b, 0xf66, 0xf44, 0xf66, 0xf0b, +0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf49, 0xf72, 0xf0b, 0xf58, 0xf0b, 0x3b, 0xf42, +0xf5f, 0xf60, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf58, 0xf72, 0xf42, 0xf0b, 0xf51, 0xf58, 0xf62, +0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf63, 0xfb7, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf55, 0xf74, 0xf62, +0xf0b, 0xf56, 0xf74, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, 0xf54, 0xf0b, 0xf66, 0xf44, 0xf66, 0xf0b, 0x3b, 0xf42, 0xf5f, 0xf60, 0xf0b, +0xf66, 0xfa4, 0xf7a, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf49, 0xf72, 0x3b, 0xf5f, 0xfb3, 0x3b, 0xf58, 0xf72, 0xf42, 0x3b, 0xf63, 0xfb7, +0xf42, 0x3b, 0xf55, 0xf74, 0xf62, 0x3b, 0xf66, 0xf44, 0xf66, 0x3b, 0xf66, 0xfa4, 0xf7a, 0xf53, 0x3b, 0x1230, 0x1295, 0x3b, 0x1230, 0x1291, +0x3b, 0x1230, 0x1209, 0x3b, 0x1228, 0x1261, 0x3b, 0x1213, 0x1219, 0x3b, 0x12d3, 0x122d, 0x3b, 0x1240, 0x12f3, 0x3b, 0x1230, 0x1295, 0x1260, 0x1275, +0x3b, 0x1230, 0x1291, 0x12ed, 0x3b, 0x1220, 0x1209, 0x1235, 0x3b, 0x1228, 0x1261, 0x12d5, 0x3b, 0x1283, 0x1219, 0x1235, 0x3b, 0x12d3, 0x122d, 0x1262, +0x3b, 0x1240, 0x12f3, 0x121d, 0x3b, 0x1230, 0x3b, 0x1230, 0x3b, 0x1220, 0x3b, 0x1228, 0x3b, 0x1213, 0x3b, 0x12d3, 0x3b, 0x1240, 0x3b, 0x1230, +0x3b, 0x1230, 0x3b, 0x1230, 0x3b, 0x1228, 0x3b, 0x1213, 0x3b, 0x12d3, 0x3b, 0x1240, 0x3b, 0x53, 0x101, 0x70, 0x3b, 0x4d, 0x14d, 0x6e, +0x3b, 0x54, 0x16b, 0x73, 0x3b, 0x50, 0x75, 0x6c, 0x3b, 0x54, 0x75, 0x2bb, 0x61, 0x3b, 0x46, 0x61, 0x6c, 0x3b, 0x54, 0x6f, +0x6b, 0x3b, 0x53, 0x101, 0x70, 0x61, 0x74, 0x65, 0x3b, 0x4d, 0x14d, 0x6e, 0x69, 0x74, 0x65, 0x3b, 0x54, 0x16b, 0x73, 0x69, +0x74, 0x65, 0x3b, 0x50, 0x75, 0x6c, 0x65, 0x6c, 0x75, 0x6c, 0x75, 0x3b, 0x54, 0x75, 0x2bb, 0x61, 0x70, 0x75, 0x6c, 0x65, +0x6c, 0x75, 0x6c, 0x75, 0x3b, 0x46, 0x61, 0x6c, 0x61, 0x69, 0x74, 0x65, 0x3b, 0x54, 0x6f, 0x6b, 0x6f, 0x6e, 0x61, 0x6b, +0x69, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x54, 0x3b, 0x50, 0x3b, 0x54, 0x3b, 0x46, 0x3b, 0x54, 0x3b, 0x50, 0x61, 0x7a, 0x3b, +0x50, 0x7a, 0x74, 0x3b, 0x53, 0x61, 0x6c, 0x3b, 0xc7, 0x61, 0x72, 0x3b, 0x50, 0x65, 0x72, 0x3b, 0x43, 0x75, 0x6d, 0x3b, +0x43, 0x6d, 0x74, 0x3b, 0x50, 0x61, 0x7a, 0x61, 0x72, 0x3b, 0x50, 0x61, 0x7a, 0x61, 0x72, 0x74, 0x65, 0x73, 0x69, 0x3b, +0x53, 0x61, 0x6c, 0x131, 0x3b, 0xc7, 0x61, 0x72, 0x15f, 0x61, 0x6d, 0x62, 0x61, 0x3b, 0x50, 0x65, 0x72, 0x15f, 0x65, 0x6d, +0x62, 0x65, 0x3b, 0x43, 0x75, 0x6d, 0x61, 0x3b, 0x43, 0x75, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x69, 0x3b, 0x50, 0x3b, +0x50, 0x3b, 0x53, 0x3b, 0xc7, 0x3b, 0x50, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0xdd, 0x65, 0x6b, 0x3b, 0x44, 0x75, 0x15f, 0x3b, +0x53, 0x69, 0x15f, 0x3b, 0xc7, 0x61, 0x72, 0x3b, 0x50, 0x65, 0x6e, 0x3b, 0x41, 0x6e, 0x6e, 0x3b, 0x15e, 0x65, 0x6e, 0x3b, +0xdd, 0x65, 0x6b, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x44, 0x75, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x53, 0x69, 0x15f, +0x65, 0x6e, 0x62, 0x65, 0x3b, 0xc7, 0x61, 0x72, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x50, 0x65, 0x6e, 0x15f, 0x65, 0x6e, +0x62, 0x65, 0x3b, 0x41, 0x6e, 0x6e, 0x61, 0x3b, 0x15e, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0xdd, 0x3b, 0x44, 0x3b, 0x53, 0x3b, +0xc7, 0x3b, 0x50, 0x3b, 0x41, 0x3b, 0x15e, 0x3b, 0xfd, 0x65, 0x6b, 0x3b, 0x64, 0x75, 0x15f, 0x3b, 0x73, 0x69, 0x15f, 0x3b, +0xe7, 0x61, 0x72, 0x3b, 0x70, 0x65, 0x6e, 0x3b, 0x61, 0x6e, 0x6e, 0x3b, 0x15f, 0x65, 0x6e, 0x3b, 0xfd, 0x65, 0x6b, 0x15f, +0x65, 0x6e, 0x62, 0x65, 0x3b, 0x64, 0x75, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x73, 0x69, 0x15f, 0x65, 0x6e, 0x62, 0x65, +0x3b, 0xe7, 0x61, 0x72, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x70, 0x65, 0x6e, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x61, +0x6e, 0x6e, 0x61, 0x3b, 0x15f, 0x65, 0x6e, 0x62, 0x65, 0x3b, 0x64a, 0x6d5, 0x3b, 0x62f, 0x6c8, 0x3b, 0x633, 0x6d5, 0x3b, 0x686, +0x627, 0x3b, 0x67e, 0x6d5, 0x3b, 0x62c, 0x6c8, 0x3b, 0x634, 0x6d5, 0x3b, 0x64a, 0x6d5, 0x643, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, +0x62f, 0x6c8, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x633, 0x6d5, 0x64a, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x686, 0x627, 0x631, +0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x67e, 0x6d5, 0x64a, 0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x62c, 0x6c8, 0x645, 0x6d5, 0x3b, +0x634, 0x6d5, 0x646, 0x628, 0x6d5, 0x3b, 0x64a, 0x3b, 0x62f, 0x3b, 0x633, 0x3b, 0x686, 0x3b, 0x67e, 0x3b, 0x62c, 0x3b, 0x634, 0x3b, +0x43d, 0x435, 0x434, 0x456, 0x43b, 0x44f, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x456, 0x43b, 0x43e, 0x43a, 0x3b, 0x432, 0x456, 0x432, +0x442, 0x43e, 0x440, 0x43e, 0x43a, 0x3b, 0x441, 0x435, 0x440, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x435, 0x440, 0x3b, +0x43f, 0x2bc, 0x44f, 0x442, 0x43d, 0x438, 0x446, 0x44f, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x41d, 0x3b, 0x41f, 0x3b, +0x412, 0x3b, 0x421, 0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x421, 0x3b, 0x627, 0x62a, 0x648, 0x627, 0x631, 0x3b, 0x67e, 0x6cc, 0x631, 0x3b, +0x645, 0x646, 0x6af, 0x644, 0x3b, 0x628, 0x62f, 0x6be, 0x3b, 0x62c, 0x645, 0x639, 0x631, 0x627, 0x62a, 0x3b, 0x62c, 0x645, 0x639, 0x6c1, +0x3b, 0x6c1, 0x641, 0x62a, 0x6c1, 0x3b, 0x59, 0x61, 0x6b, 0x3b, 0x44, 0x75, 0x73, 0x68, 0x3b, 0x53, 0x65, 0x73, 0x68, 0x3b, +0x43, 0x68, 0x6f, 0x72, 0x3b, 0x50, 0x61, 0x79, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x53, 0x68, 0x61, 0x6e, 0x3b, 0x79, 0x61, +0x6b, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x64, 0x75, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x73, 0x65, 0x73, +0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x63, 0x68, 0x6f, 0x72, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x70, 0x61, 0x79, +0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x73, 0x68, 0x61, 0x6e, 0x62, 0x61, 0x3b, 0x59, +0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x43, 0x3b, 0x50, 0x3b, 0x4a, 0x3b, 0x53, 0x3b, 0x6cc, 0x2e, 0x3b, 0x62f, 0x2e, 0x3b, 0x633, +0x2e, 0x3b, 0x686, 0x2e, 0x3b, 0x67e, 0x2e, 0x3b, 0x62c, 0x2e, 0x3b, 0x634, 0x2e, 0x3b, 0x44f, 0x43a, 0x448, 0x3b, 0x434, 0x443, +0x448, 0x3b, 0x441, 0x435, 0x448, 0x3b, 0x447, 0x43e, 0x440, 0x3b, 0x43f, 0x430, 0x439, 0x3b, 0x436, 0x443, 0x43c, 0x3b, 0x448, 0x430, +0x43d, 0x3b, 0x44f, 0x43a, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x434, 0x443, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x441, 0x435, +0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x447, 0x43e, 0x440, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x43f, 0x430, 0x439, 0x448, 0x430, +0x43d, 0x431, 0x430, 0x3b, 0x436, 0x443, 0x43c, 0x430, 0x3b, 0x448, 0x430, 0x43d, 0x431, 0x430, 0x3b, 0x42f, 0x3b, 0x414, 0x3b, 0x421, +0x3b, 0x427, 0x3b, 0x41f, 0x3b, 0x416, 0x3b, 0x428, 0x3b, 0x43, 0x4e, 0x3b, 0x54, 0x68, 0x20, 0x32, 0x3b, 0x54, 0x68, 0x20, +0x33, 0x3b, 0x54, 0x68, 0x20, 0x34, 0x3b, 0x54, 0x68, 0x20, 0x35, 0x3b, 0x54, 0x68, 0x20, 0x36, 0x3b, 0x54, 0x68, 0x20, +0x37, 0x3b, 0x43, 0x68, 0x1ee7, 0x20, 0x4e, 0x68, 0x1ead, 0x74, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x48, 0x61, 0x69, 0x3b, 0x54, +0x68, 0x1ee9, 0x20, 0x42, 0x61, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x54, 0x1b0, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x4e, 0x103, 0x6d, +0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x53, 0xe1, 0x75, 0x3b, 0x54, 0x68, 0x1ee9, 0x20, 0x42, 0x1ea3, 0x79, 0x3b, 0x43, 0x4e, 0x3b, +0x54, 0x32, 0x3b, 0x54, 0x33, 0x3b, 0x54, 0x34, 0x3b, 0x54, 0x35, 0x3b, 0x54, 0x36, 0x3b, 0x54, 0x37, 0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x6c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x4d, 0x65, 0x72, 0x3b, 0x49, 0x61, 0x75, 0x3b, 0x47, -0x77, 0x65, 0x6e, 0x3b, 0x53, 0x61, 0x64, 0x3b, 0x44, 0x69, 0x62, 0x3b, 0x41, 0x6c, 0x74, 0x3b, 0x54, 0x61, 0x6c, 0x3b, -0xc0, 0x6c, 0x61, 0x3b, 0x41, 0x6c, 0x78, 0x3b, 0xc0, 0x6a, 0x6a, 0x3b, 0x41, 0x73, 0x65, 0x3b, 0x44, 0x69, 0x62, 0xe9, -0x65, 0x72, 0x3b, 0x41, 0x6c, 0x74, 0x69, 0x6e, 0x65, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x61, 0x74, 0x61, 0x3b, 0xc0, 0x6c, -0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x78, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0xc0, 0x6a, 0x6a, 0x75, 0x6d, 0x61, 0x3b, -0x41, 0x73, 0x65, 0x65, 0x72, 0x3b, 0x43, 0x61, 0x77, 0x3b, 0x4d, 0x76, 0x75, 0x3b, 0x42, 0x69, 0x6e, 0x3b, 0x54, 0x68, -0x61, 0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x48, 0x6c, 0x61, 0x3b, 0x4d, 0x67, 0x71, 0x3b, 0x43, 0x61, 0x77, 0x65, 0x3b, 0x4d, -0x76, 0x75, 0x6c, 0x6f, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x62, 0x69, 0x6e, 0x69, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, -0x74, 0x68, 0x61, 0x74, 0x68, 0x75, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x6e, 0x65, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, -0x68, 0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x67, 0x71, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x3b, 0x5d6, 0x5d5, 0x5e0, 0x5d8, 0x5d9, -0x5e7, 0x3b, 0x5de, 0x5d0, 0x5b8, 0x5e0, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5d3, 0x5d9, 0x5e0, 0x5e1, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5de, 0x5d9, -0x5d8, 0x5d5, 0x5d5, 0x5d0, 0x5da, 0x3b, 0x5d3, 0x5d0, 0x5e0, 0x5e2, 0x5e8, 0x5e9, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5e4, 0x5bf, 0x5e8, 0x5f2, -0x5b7, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5e9, 0x5d1, 0x5ea, 0x3b, 0xc0, 0xec, 0x6b, 0x3b, 0x41, 0x6a, 0x3b, 0xcc, 0x73, 0x1eb9, 0x301, -0x67, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x72, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x62, 0x3b, 0x1eb8, 0x74, 0x3b, 0xc0, 0x62, 0xe1, -0x6d, 0x3b, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x41, 0x6a, 0xe9, 0x3b, 0xcc, 0x73, 0x1eb9, 0x301, 0x67, 0x75, 0x6e, 0x3b, 0x1ecc, -0x6a, 0x1ecd, 0x301, 0x72, 0xfa, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x62, 0x1ecd, 0x3b, 0x1eb8, 0x74, 0xec, 0x3b, 0xc0, 0x62, 0xe1, -0x6d, 0x1eb9, 0x301, 0x74, 0x61, 0x3b, 0xc0, 0x3b, 0x41, 0x3b, 0xcc, 0x3b, 0x1ecc, 0x3b, 0x1ecc, 0x3b, 0x1eb8, 0x3b, 0xc0, 0x3b, -0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0x41, 0x6a, 0xe9, 0x3b, 0x1ecc, -0x6a, 0x1ecd, 0x301, 0x20, 0xcc, 0x73, 0x1eb9, 0x301, 0x67, 0x75, 0x6e, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x72, 0xfa, 0x3b, 0x1ecc, -0x6a, 0x1ecd, 0x301, 0x62, 0x1ecd, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0x1eb8, 0x74, 0xec, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, -0xc0, 0x62, 0xe1, 0x6d, 0x1eb9, 0x301, 0x74, 0x61, 0x3b, 0xc0, 0xec, 0x6b, 0x3b, 0x41, 0x6a, 0x3b, 0xcc, 0x73, 0x25b, 0x301, -0x67, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x72, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x62, 0x3b, 0x190, 0x74, 0x3b, 0xc0, 0x62, 0xe1, -0x6d, 0x3b, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x41, 0x6a, 0xe9, 0x3b, 0xcc, 0x73, 0x25b, 0x301, 0x67, 0x75, 0x6e, 0x3b, 0x186, -0x6a, 0x254, 0x301, 0x72, 0xfa, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x62, 0x254, 0x3b, 0x190, 0x74, 0xec, 0x3b, 0xc0, 0x62, 0xe1, -0x6d, 0x25b, 0x301, 0x74, 0x61, 0x3b, 0xc0, 0x3b, 0x41, 0x3b, 0xcc, 0x3b, 0x186, 0x3b, 0x186, 0x3b, 0x190, 0x3b, 0xc0, 0x3b, -0x186, 0x6a, 0x254, 0x301, 0x20, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0x41, 0x6a, 0xe9, 0x3b, 0x186, -0x6a, 0x254, 0x301, 0x20, 0xcc, 0x73, 0x25b, 0x301, 0x67, 0x75, 0x6e, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x72, 0xfa, 0x3b, 0x186, -0x6a, 0x254, 0x301, 0x62, 0x254, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0x190, 0x74, 0xec, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, -0xc0, 0x62, 0xe1, 0x6d, 0x25b, 0x301, 0x74, 0x61, 0x3b, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0x73, 0x6f, 0x3b, 0x42, 0x69, 0x6c, -0x3b, 0x54, 0x68, 0x61, 0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x48, 0x6c, 0x61, 0x3b, 0x4d, 0x67, 0x71, 0x3b, 0x49, 0x53, 0x6f, -0x6e, 0x74, 0x6f, 0x3b, 0x55, 0x4d, 0x73, 0x6f, 0x6d, 0x62, 0x75, 0x6c, 0x75, 0x6b, 0x6f, 0x3b, 0x55, 0x4c, 0x77, 0x65, -0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x55, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x74, 0x68, 0x61, 0x74, 0x68, 0x75, 0x3b, -0x55, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x6e, 0x65, 0x3b, 0x55, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, -0x3b, 0x55, 0x4d, 0x67, 0x71, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x42, 0x3b, 0x54, 0x3b, 0x53, -0x3b, 0x48, 0x3b, 0x4d, 0x3b, 0x73, 0xf8, 0x6e, 0x3b, 0x6d, 0xe5, 0x6e, 0x3b, 0x74, 0x79, 0x73, 0x3b, 0x6f, 0x6e, 0x73, -0x3b, 0x74, 0x6f, 0x72, 0x3b, 0x66, 0x72, 0x65, 0x3b, 0x6c, 0x61, 0x75, 0x3b, 0x73, 0xf8, 0x6e, 0x64, 0x61, 0x67, 0x3b, -0x6d, 0xe5, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x79, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x6f, 0x6e, 0x73, 0x64, 0x61, 0x67, -0x3b, 0x74, 0x6f, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x66, 0x72, 0x65, 0x64, 0x61, 0x67, 0x3b, 0x6c, 0x61, 0x75, 0x72, -0x64, 0x61, 0x67, 0x3b, 0x73, 0xf8, 0x2e, 0x3b, 0x6d, 0xe5, 0x2e, 0x3b, 0x74, 0x79, 0x2e, 0x3b, 0x6f, 0x6e, 0x2e, 0x3b, -0x74, 0x6f, 0x2e, 0x3b, 0x66, 0x72, 0x2e, 0x3b, 0x6c, 0x61, 0x2e, 0x3b, 0x43d, 0x435, 0x434, 0x3b, 0x43f, 0x43e, 0x43d, 0x3b, -0x443, 0x442, 0x43e, 0x3b, 0x441, 0x440, 0x438, 0x3b, 0x447, 0x435, 0x442, 0x3b, 0x43f, 0x435, 0x442, 0x3b, 0x441, 0x443, 0x431, 0x3b, -0x43d, 0x435, 0x434, 0x458, 0x435, 0x459, 0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x458, 0x435, 0x459, 0x430, 0x43a, 0x3b, 0x443, -0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, 0x440, 0x438, 0x458, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432, 0x440, 0x442, -0x430, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430, 0x43a, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x3b, 0x4a, 0x65, 0x64, 0x3b, -0x4a, 0x65, 0x6c, 0x3b, 0x4a, 0x65, 0x6d, 0x3b, 0x4a, 0x65, 0x72, 0x63, 0x3b, 0x4a, 0x65, 0x72, 0x64, 0x3b, 0x4a, 0x65, -0x68, 0x3b, 0x4a, 0x65, 0x73, 0x3b, 0x4a, 0x65, 0x64, 0x6f, 0x6f, 0x6e, 0x65, 0x65, 0x3b, 0x4a, 0x65, 0x6c, 0x68, 0x65, -0x69, 0x6e, 0x3b, 0x4a, 0x65, 0x6d, 0x61, 0x79, 0x72, 0x74, 0x3b, 0x4a, 0x65, 0x72, 0x63, 0x65, 0x61, 0x6e, 0x3b, 0x4a, -0x65, 0x72, 0x64, 0x65, 0x69, 0x6e, 0x3b, 0x4a, 0x65, 0x68, 0x65, 0x69, 0x6e, 0x65, 0x79, 0x3b, 0x4a, 0x65, 0x73, 0x61, -0x72, 0x6e, 0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x74, 0x68, 0x3b, 0x4d, 0x68, 0x72, 0x3b, 0x59, -0x6f, 0x77, 0x3b, 0x47, 0x77, 0x65, 0x3b, 0x53, 0x61, 0x64, 0x3b, 0x64, 0x79, 0x20, 0x53, 0x75, 0x6c, 0x3b, 0x64, 0x79, -0x20, 0x4c, 0x75, 0x6e, 0x3b, 0x64, 0x79, 0x20, 0x4d, 0x65, 0x75, 0x72, 0x74, 0x68, 0x3b, 0x64, 0x79, 0x20, 0x4d, 0x65, -0x72, 0x68, 0x65, 0x72, 0x3b, 0x64, 0x79, 0x20, 0x59, 0x6f, 0x77, 0x3b, 0x64, 0x79, 0x20, 0x47, 0x77, 0x65, 0x6e, 0x65, -0x72, 0x3b, 0x64, 0x79, 0x20, 0x53, 0x61, 0x64, 0x6f, 0x72, 0x6e, 0x3b, 0x4b, 0x77, 0x65, 0x3b, 0x44, 0x77, 0x6f, 0x3b, -0x42, 0x65, 0x6e, 0x3b, 0x57, 0x75, 0x6b, 0x3b, 0x59, 0x61, 0x77, 0x3b, 0x46, 0x69, 0x61, 0x3b, 0x4d, 0x65, 0x6d, 0x3b, -0x4b, 0x77, 0x65, 0x73, 0x69, 0x64, 0x61, 0x3b, 0x44, 0x77, 0x6f, 0x77, 0x64, 0x61, 0x3b, 0x42, 0x65, 0x6e, 0x61, 0x64, -0x61, 0x3b, 0x57, 0x75, 0x6b, 0x75, 0x64, 0x61, 0x3b, 0x59, 0x61, 0x77, 0x64, 0x61, 0x3b, 0x46, 0x69, 0x64, 0x61, 0x3b, -0x4d, 0x65, 0x6d, 0x65, 0x6e, 0x65, 0x64, 0x61, 0x3b, 0x4b, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x57, 0x3b, 0x59, 0x3b, 0x46, -0x3b, 0x4d, 0x3b, 0x906, 0x92f, 0x924, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x933, 0x93e, -0x930, 0x3b, 0x92c, 0x941, 0x927, 0x935, 0x93e, 0x930, 0x3b, 0x92c, 0x93f, 0x930, 0x947, 0x938, 0x94d, 0x924, 0x93e, 0x930, 0x3b, 0x936, -0x941, 0x915, 0x94d, 0x930, 0x93e, 0x930, 0x3b, 0x936, 0x947, 0x928, 0x935, 0x93e, 0x930, 0x3b, 0x906, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, -0x902, 0x3b, 0x92c, 0x941, 0x3b, 0x92c, 0x3b, 0x936, 0x941, 0x3b, 0x936, 0x947, 0x3b, 0x906, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x902, -0x3b, 0x92c, 0x941, 0x3b, 0x92c, 0x93f, 0x3b, 0x936, 0x941, 0x3b, 0x936, 0x947, 0x3b, 0x1ee4, 0x6b, 0x61, 0x3b, 0x4d, 0x1ecd, 0x6e, -0x3b, 0x54, 0x69, 0x75, 0x3b, 0x57, 0x65, 0x6e, 0x3b, 0x54, 0x1ecd, 0x1ecd, 0x3b, 0x46, 0x72, 0x61, 0x1ecb, 0x3b, 0x53, 0x61, -0x74, 0x3b, 0x53, 0x1ecd, 0x6e, 0x64, 0x65, 0x65, 0x3b, 0x4d, 0x1ecd, 0x6e, 0x64, 0x65, 0x3b, 0x54, 0x69, 0x75, 0x7a, 0x64, -0x65, 0x65, 0x3b, 0x57, 0x65, 0x6e, 0x65, 0x7a, 0x64, 0x65, 0x65, 0x3b, 0x54, 0x1ecd, 0x1ecd, 0x7a, 0x64, 0x65, 0x65, 0x3b, -0x46, 0x72, 0x61, 0x1ecb, 0x64, 0x65, 0x65, 0x3b, 0x53, 0x61, 0x74, 0x1ecd, 0x64, 0x65, 0x65, 0x3b, 0x57, 0x6b, 0x79, 0x3b, -0x57, 0x6b, 0x77, 0x3b, 0x57, 0x6b, 0x6c, 0x3b, 0x57, 0x74, 0x169, 0x3b, 0x57, 0x6b, 0x6e, 0x3b, 0x57, 0x74, 0x6e, 0x3b, -0x57, 0x74, 0x68, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x79, 0x75, 0x6d, 0x77, 0x61, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x77, 0x61, -0x6d, 0x62, 0x129, 0x6c, 0x129, 0x6c, 0x79, 0x61, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x65, 0x6c, 0x129, 0x3b, 0x57, 0x61, 0x20, -0x6b, 0x61, 0x74, 0x61, 0x74, 0x169, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x61, -0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x57, 0x61, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x74, 0x68, 0x61, 0x74, 0x169, 0x3b, 0x59, 0x3b, -0x57, 0x3b, 0x45, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x3b, -0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x69, 0x65, 0x3b, 0x6a, 0x6f, 0x69, 0x3b, 0x76, 0x69, 0x6e, 0x3b, 0x73, 0x61, 0x62, 0x3b, -0x64, 0x6f, 0x6d, 0x65, 0x6e, 0x69, 0x65, 0x3b, 0x6c, 0x75, 0x6e, 0x69, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x61, 0x72, -0x73, 0x3b, 0x6d, 0x69, 0x65, 0x72, 0x63, 0x75, 0x73, 0x3b, 0x6a, 0x6f, 0x69, 0x62, 0x65, 0x3b, 0x76, 0x69, 0x6e, 0x61, -0x72, 0x73, 0x3b, 0x73, 0x61, 0x62, 0x69, 0x64, 0x65, 0x3b, 0x6b, 0x254, 0x73, 0x3b, 0x64, 0x7a, 0x6f, 0x3b, 0x62, 0x6c, -0x61, 0x3b, 0x6b, 0x75, 0x256, 0x3b, 0x79, 0x61, 0x77, 0x3b, 0x66, 0x69, 0x256, 0x3b, 0x6d, 0x65, 0x6d, 0x3b, 0x6b, 0x254, -0x73, 0x69, 0x256, 0x61, 0x3b, 0x64, 0x7a, 0x6f, 0x256, 0x61, 0x3b, 0x62, 0x6c, 0x61, 0x256, 0x61, 0x3b, 0x6b, 0x75, 0x256, -0x61, 0x3b, 0x79, 0x61, 0x77, 0x6f, 0x256, 0x61, 0x3b, 0x66, 0x69, 0x256, 0x61, 0x3b, 0x6d, 0x65, 0x6d, 0x6c, 0x65, 0x256, -0x61, 0x3b, 0x6b, 0x3b, 0x64, 0x3b, 0x62, 0x3b, 0x6b, 0x3b, 0x79, 0x3b, 0x66, 0x3b, 0x6d, 0x3b, 0x4c, 0x50, 0x3b, 0x50, -0x31, 0x3b, 0x50, 0x32, 0x3b, 0x50, 0x33, 0x3b, 0x50, 0x34, 0x3b, 0x50, 0x35, 0x3b, 0x50, 0x36, 0x3b, 0x4c, 0x101, 0x70, -0x75, 0x6c, 0x65, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6b, 0x61, 0x68, 0x69, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6c, 0x75, 0x61, -0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6b, 0x6f, 0x6c, 0x75, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x68, 0x101, 0x3b, 0x50, 0x6f, 0x2bb, -0x61, 0x6c, 0x69, 0x6d, 0x61, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6f, 0x6e, 0x6f, 0x3b, 0x4c, 0x69, 0x6e, 0x3b, 0x4c, 0x75, -0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4d, 0x69, 0x79, 0x3b, 0x48, 0x75, 0x77, 0x3b, 0x42, 0x69, 0x79, 0x3b, 0x53, 0x61, -0x62, 0x3b, 0x4c, 0x69, 0x6e, 0x67, 0x67, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, -0x73, 0x3b, 0x4d, 0x69, 0x79, 0x65, 0x72, 0x6b, 0x75, 0x6c, 0x65, 0x73, 0x3b, 0x48, 0x75, 0x77, 0x65, 0x62, 0x65, 0x73, -0x3b, 0x42, 0x69, 0x79, 0x65, 0x72, 0x6e, 0x65, 0x73, 0x3b, 0x53, 0x61, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x53, 0x75, 0x2e, -0x3b, 0x4d, 0xe4, 0x2e, 0x3b, 0x5a, 0x69, 0x2e, 0x3b, 0x4d, 0x69, 0x2e, 0x3b, 0x44, 0x75, 0x2e, 0x3b, 0x46, 0x72, 0x2e, -0x3b, 0x53, 0x61, 0x2e, 0x3b, 0x53, 0x75, 0x6e, 0x6e, 0x74, 0x69, 0x67, 0x3b, 0x4d, 0xe4, 0xe4, 0x6e, 0x74, 0x69, 0x67, -0x3b, 0x5a, 0x69, 0x69, 0x73, 0x63, 0x68, 0x74, 0x69, 0x67, 0x3b, 0x4d, 0x69, 0x74, 0x74, 0x77, 0x75, 0x63, 0x68, 0x3b, -0x44, 0x75, 0x6e, 0x73, 0x63, 0x68, 0x74, 0x69, 0x67, 0x3b, 0x46, 0x72, 0x69, 0x69, 0x74, 0x69, 0x67, 0x3b, 0x53, 0x61, -0x6d, 0x73, 0x63, 0x68, 0x74, 0x69, 0x67, 0x3b, 0xa46d, 0xa18f, 0x3b, 0xa18f, 0xa2cd, 0x3b, 0xa18f, 0xa44d, 0x3b, 0xa18f, 0xa315, 0x3b, -0xa18f, 0xa1d6, 0x3b, 0xa18f, 0xa26c, 0x3b, 0xa18f, 0xa0d8, 0x3b, 0xa46d, 0xa18f, 0xa44d, 0x3b, 0xa18f, 0xa282, 0xa2cd, 0x3b, 0xa18f, 0xa282, 0xa44d, -0x3b, 0xa18f, 0xa282, 0xa315, 0x3b, 0xa18f, 0xa282, 0xa1d6, 0x3b, 0xa18f, 0xa282, 0xa26c, 0x3b, 0xa18f, 0xa282, 0xa0d8, 0x3b, 0xa18f, 0x3b, 0xa2cd, -0x3b, 0xa44d, 0x3b, 0xa315, 0x3b, 0xa1d6, 0x3b, 0xa26c, 0x3b, 0xa0d8, 0x3b, 0x53, 0xfc, 0x2e, 0x3b, 0x4d, 0x61, 0x2e, 0x3b, 0x44, -0x69, 0x2e, 0x3b, 0x4d, 0x69, 0x2e, 0x3b, 0x44, 0x75, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x3b, 0x53, -0xfc, 0x6e, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x4d, 0x61, 0x61, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x44, 0x69, 0x6e, 0x67, 0x73, -0x64, 0x61, 0x67, 0x3b, 0x4d, 0x69, 0x64, 0x64, 0x65, 0x77, 0x65, 0x6b, 0x65, 0x6e, 0x3b, 0x44, 0x75, 0x6e, 0x6e, 0x65, -0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x46, 0x72, 0x65, 0x65, 0x64, 0x61, 0x67, 0x3b, 0x53, 0xfc, 0x6e, 0x6e, 0x61, 0x76, -0x65, 0x6e, 0x64, 0x3b, 0x73, 0x6f, 0x74, 0x6e, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x3b, 0x6d, 0x61, 0x14b, 0x3b, 0x67, 0x61, -0x73, 0x6b, 0x3b, 0x64, 0x75, 0x6f, 0x72, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x3b, 0x6c, 0xe1, 0x76, 0x3b, 0x73, 0x6f, 0x74, -0x6e, 0x61, 0x62, 0x65, 0x61, 0x69, 0x76, 0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0xe1, 0x72, 0x67, 0x61, 0x3b, 0x6d, -0x61, 0x14b, 0x14b, 0x65, 0x62, 0xe1, 0x72, 0x67, 0x61, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x61, 0x76, 0x61, 0x68, 0x6b, 0x6b, -0x75, 0x3b, 0x64, 0x75, 0x6f, 0x72, 0x61, 0x73, 0x64, 0x61, 0x74, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x6a, 0x61, 0x64, 0x61, -0x74, 0x3b, 0x6c, 0xe1, 0x76, 0x76, 0x61, 0x72, 0x64, 0x61, 0x74, 0x3b, 0x53, 0x3b, 0x56, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, -0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x73, 0x6f, 0x3b, 0x6d, 0xe1, 0x3b, 0x64, 0x69, 0x3b, 0x67, 0x61, 0x3b, 0x64, 0x75, -0x3b, 0x62, 0x65, 0x3b, 0x6c, 0xe1, 0x3b, 0x73, 0x6f, 0x74, 0x6e, 0x61, 0x62, 0x65, 0x61, 0x69, 0x76, 0x69, 0x3b, 0x6d, -0xe1, 0x6e, 0x6e, 0x6f, 0x64, 0x61, 0x74, 0x3b, 0x64, 0x69, 0x73, 0x64, 0x61, 0x74, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x61, -0x76, 0x61, 0x68, 0x6b, 0x6b, 0x75, 0x3b, 0x64, 0x75, 0x6f, 0x72, 0x61, 0x73, 0x74, 0x61, 0x74, 0x3b, 0x62, 0x65, 0x61, -0x72, 0x6a, 0x61, 0x64, 0x61, 0x74, 0x3b, 0x6c, 0xe1, 0x76, 0x76, 0x6f, 0x72, 0x64, 0x61, 0x74, 0x3b, 0x53, 0x3b, 0x4d, -0x3b, 0x44, 0x3b, 0x47, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x43, 0x70, 0x72, 0x3b, 0x43, 0x74, 0x74, 0x3b, 0x43, -0x6d, 0x6e, 0x3b, 0x43, 0x6d, 0x74, 0x3b, 0x41, 0x72, 0x73, 0x3b, 0x49, 0x63, 0x6d, 0x3b, 0x45, 0x73, 0x74, 0x3b, 0x43, -0x68, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x6f, 0x3b, 0x43, -0x68, 0x75, 0x6d, 0x61, 0x69, 0x6e, 0x65, 0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x72, -0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x63, 0x68, 0x75, 0x6d, 0x61, 0x3b, 0x45, 0x73, 0x61, 0x62, 0x61, 0x74, 0x6f, -0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x45, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x4a, -0x69, 0x6d, 0x3b, 0x4b, 0x61, 0x77, 0x3b, 0x4b, 0x61, 0x64, 0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x4b, 0x61, 0x73, 0x3b, 0x4e, -0x67, 0x75, 0x3b, 0x49, 0x74, 0x75, 0x6b, 0x75, 0x20, 0x6a, 0x61, 0x20, 0x6a, 0x75, 0x6d, 0x77, 0x61, 0x3b, 0x4b, 0x75, -0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6a, 0x69, 0x6d, 0x77, 0x65, 0x72, 0x69, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, -0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x77, 0x69, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, -0x64, 0x61, 0x64, 0x75, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4b, -0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x73, 0x61, 0x6e, 0x75, 0x3b, 0x4b, 0x69, 0x66, 0x75, 0x6c, -0x61, 0x20, 0x6e, 0x67, 0x75, 0x77, 0x6f, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, -0x4e, 0x3b, 0x64, 0x65, 0x77, 0x3b, 0x61, 0x61, 0x253, 0x3b, 0x6d, 0x61, 0x77, 0x3b, 0x6e, 0x6a, 0x65, 0x3b, 0x6e, 0x61, -0x61, 0x3b, 0x6d, 0x77, 0x64, 0x3b, 0x68, 0x62, 0x69, 0x3b, 0x64, 0x65, 0x77, 0x6f, 0x3b, 0x61, 0x61, 0x253, 0x6e, 0x64, -0x65, 0x3b, 0x6d, 0x61, 0x77, 0x62, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x6e, 0x6a, 0x65, 0x73, 0x6c, 0x61, 0x61, 0x72, 0x65, -0x3b, 0x6e, 0x61, 0x61, 0x73, 0x61, 0x61, 0x6e, 0x64, 0x65, 0x3b, 0x6d, 0x61, 0x77, 0x6e, 0x64, 0x65, 0x3b, 0x68, 0x6f, -0x6f, 0x72, 0x65, 0x2d, 0x62, 0x69, 0x69, 0x72, 0x3b, 0x64, 0x3b, 0x61, 0x3b, 0x6d, 0x3b, 0x6e, 0x3b, 0x6e, 0x3b, 0x6d, -0x3b, 0x68, 0x3b, 0x4b, 0x4d, 0x41, 0x3b, 0x4e, 0x54, 0x54, 0x3b, 0x4e, 0x4d, 0x4e, 0x3b, 0x4e, 0x4d, 0x54, 0x3b, 0x41, -0x52, 0x54, 0x3b, 0x4e, 0x4d, 0x41, 0x3b, 0x4e, 0x4d, 0x4d, 0x3b, 0x4b, 0x69, 0x75, 0x6d, 0x69, 0x61, 0x3b, 0x4e, 0x6a, -0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x169, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x69, 0x6e, 0x65, 0x3b, 0x4e, 0x6a, 0x75, -0x6d, 0x61, 0x74, 0x61, 0x6e, 0x61, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x74, 0x68, 0x69, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, -0x61, 0x61, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x74, 0x68, 0x69, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, -0x4e, 0x3b, 0x41, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, 0x72, 0x65, 0x3b, 0x4b, 0x75, 0x6e, 0x3b, 0x4f, 0x6e, 0x67, 0x3b, -0x49, 0x6e, 0x65, 0x3b, 0x49, 0x6c, 0x65, 0x3b, 0x53, 0x61, 0x70, 0x3b, 0x4b, 0x77, 0x65, 0x3b, 0x4d, 0x64, 0x65, 0x72, -0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x61, 0x72, 0x65, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, -0x6b, 0x75, 0x6e, 0x69, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x6f, 0x6e, 0x67, 0x2019, 0x77, -0x61, 0x6e, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x69, 0x6e, 0x65, 0x74, 0x3b, 0x4d, 0x64, -0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x69, 0x6c, 0x65, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, -0x65, 0x20, 0x73, 0x61, 0x70, 0x61, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x6b, 0x77, 0x65, -0x3b, 0x41, 0x3b, 0x4b, 0x3b, 0x4f, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x44, 0x69, 0x6d, 0x3b, 0x50, -0x6f, 0x73, 0x3b, 0x50, 0x69, 0x72, 0x3b, 0x54, 0x61, 0x74, 0x3b, 0x4e, 0x61, 0x69, 0x3b, 0x53, 0x68, 0x61, 0x3b, 0x53, -0x61, 0x62, 0x3b, 0x44, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x43, 0x68, 0x69, 0x70, 0x6f, 0x73, 0x69, 0x3b, 0x43, -0x68, 0x69, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x43, 0x68, 0x69, 0x6e, 0x61, -0x69, 0x3b, 0x43, 0x68, 0x69, 0x73, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x53, 0x61, 0x62, 0x75, 0x64, 0x75, 0x3b, 0x44, 0x3b, -0x50, 0x3b, 0x43, 0x3b, 0x54, 0x3b, 0x4e, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0x76, 0x75, 0x3b, -0x53, 0x69, 0x62, 0x3b, 0x53, 0x69, 0x74, 0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x53, 0x69, 0x68, 0x3b, 0x4d, 0x67, 0x71, 0x3b, -0x53, 0x6f, 0x6e, 0x74, 0x6f, 0x3b, 0x4d, 0x76, 0x75, 0x6c, 0x6f, 0x3b, 0x53, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x53, -0x69, 0x74, 0x68, 0x61, 0x74, 0x68, 0x75, 0x3b, 0x53, 0x69, 0x6e, 0x65, 0x3b, 0x53, 0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, -0x3b, 0x4d, 0x67, 0x71, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x3b, -0x53, 0x3b, 0x4d, 0x3b, 0x49, 0x6a, 0x70, 0x3b, 0x49, 0x6a, 0x74, 0x3b, 0x49, 0x6a, 0x6e, 0x3b, 0x49, 0x6a, 0x74, 0x6e, -0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x49, 0x6a, 0x6d, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x70, 0x69, -0x6c, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, -0x65, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, -0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x32, 0x3b, -0x33, 0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x36, 0x3b, 0x37, 0x3b, 0x31, 0x3b, 0x2d30, 0x2d59, 0x2d30, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x3b, -0x2d30, 0x2d59, 0x2d49, 0x3b, 0x2d30, 0x2d3d, 0x2d55, 0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4e, 0x3b, 0x2d30, 0x2d59, 0x2d49, -0x2d39, 0x3b, 0x2d30, 0x2d59, 0x2d30, 0x2d4e, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4f, 0x2d30, -0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d55, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d59, 0x2d49, 0x2d4e, 0x2d61, 0x2d30, 0x2d59, -0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d39, 0x2d62, 0x2d30, 0x2d59, 0x3b, 0x61, 0x73, 0x61, 0x3b, 0x61, 0x79, 0x6e, 0x3b, 0x61, 0x73, 0x69, -0x3b, 0x61, 0x6b, 0x1e5b, 0x3b, 0x61, 0x6b, 0x77, 0x3b, 0x61, 0x73, 0x69, 0x6d, 0x3b, 0x61, 0x73, 0x69, 0x1e0d, 0x3b, 0x61, -0x73, 0x61, 0x6d, 0x61, 0x73, 0x3b, 0x61, 0x79, 0x6e, 0x61, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x61, -0x6b, 0x1e5b, 0x61, 0x73, 0x3b, 0x61, 0x6b, 0x77, 0x61, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x6d, 0x77, 0x61, 0x73, 0x3b, 0x61, -0x73, 0x69, 0x1e0d, 0x79, 0x61, 0x73, 0x3b, 0x41, 0x63, 0x65, 0x3b, 0x41, 0x72, 0x69, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x41, -0x68, 0x61, 0x3b, 0x41, 0x6d, 0x68, 0x3b, 0x53, 0x65, 0x6d, 0x3b, 0x53, 0x65, 0x64, 0x3b, 0x41, 0x63, 0x65, 0x72, 0x3b, -0x41, 0x72, 0x69, 0x6d, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x3b, 0x41, 0x68, 0x61, 0x64, 0x3b, 0x41, 0x6d, 0x68, 0x61, 0x64, -0x3b, 0x53, 0x65, 0x6d, 0x3b, 0x53, 0x65, 0x64, 0x3b, 0x59, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x53, -0x3b, 0x53, 0x3b, 0x59, 0x61, 0x6e, 0x3b, 0x53, 0x61, 0x6e, 0x3b, 0x4b, 0x72, 0x61, 0x1e0d, 0x3b, 0x4b, 0x75, 0x1e93, 0x3b, -0x53, 0x61, 0x6d, 0x3b, 0x53, 0x1e0d, 0x69, 0x73, 0x3b, 0x53, 0x61, 0x79, 0x3b, 0x59, 0x61, 0x6e, 0x61, 0x73, 0x73, 0x3b, -0x53, 0x61, 0x6e, 0x61, 0x73, 0x73, 0x3b, 0x4b, 0x72, 0x61, 0x1e0d, 0x61, 0x73, 0x73, 0x3b, 0x4b, 0x75, 0x1e93, 0x61, 0x73, -0x73, 0x3b, 0x53, 0x61, 0x6d, 0x61, 0x73, 0x73, 0x3b, 0x53, 0x1e0d, 0x69, 0x73, 0x61, 0x73, 0x73, 0x3b, 0x53, 0x61, 0x79, -0x61, 0x73, 0x73, 0x3b, 0x43, 0x3b, 0x52, 0x3b, 0x41, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x44, 0x3b, 0x53, 0x41, -0x4e, 0x3b, 0x4f, 0x52, 0x4b, 0x3b, 0x4f, 0x4b, 0x42, 0x3b, 0x4f, 0x4b, 0x53, 0x3b, 0x4f, 0x4b, 0x4e, 0x3b, 0x4f, 0x4b, -0x54, 0x3b, 0x4f, 0x4d, 0x4b, 0x3b, 0x53, 0x61, 0x6e, 0x64, 0x65, 0x3b, 0x4f, 0x72, 0x77, 0x6f, 0x6b, 0x75, 0x62, 0x61, -0x6e, 0x7a, 0x61, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, -0x61, 0x73, 0x68, 0x61, 0x74, 0x75, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4f, 0x72, 0x77, 0x61, -0x6b, 0x61, 0x74, 0x61, 0x61, 0x6e, 0x6f, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67, 0x61, 0x3b, -0x53, 0x3b, 0x4b, 0x3b, 0x52, 0x3b, 0x53, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x4d, 0x3b, 0x4d, 0x75, 0x6c, 0x3b, 0x56, 0x69, -0x6c, 0x3b, 0x48, 0x69, 0x76, 0x3b, 0x48, 0x69, 0x64, 0x3b, 0x48, 0x69, 0x74, 0x3b, 0x48, 0x69, 0x68, 0x3b, 0x4c, 0x65, -0x6d, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x73, 0x68, 0x61, 0x68, -0x75, 0x76, 0x69, 0x6c, 0x75, 0x68, 0x61, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x76, 0x69, 0x6c, 0x69, 0x3b, 0x70, 0x61, -0x20, 0x68, 0x69, 0x64, 0x61, 0x74, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x74, 0x61, 0x79, 0x69, 0x3b, 0x70, 0x61, -0x20, 0x68, 0x69, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x73, 0x68, 0x61, 0x68, 0x75, 0x6c, 0x65, 0x6d, 0x62, -0x65, 0x6c, 0x61, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x48, 0x3b, 0x48, 0x3b, 0x48, 0x3b, 0x57, 0x3b, 0x4a, 0x3b, 0x4a, 0x70, -0x69, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, -0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x79, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, -0x74, 0x61, 0x74, 0x75, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, -0x6e, 0x75, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, -0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x49, 0x3b, -0x4a, 0x3b, 0x6b, 0x61, 0x72, 0x3b, 0x6e, 0x74, 0x25b, 0x3b, 0x74, 0x61, 0x72, 0x3b, 0x61, 0x72, 0x61, 0x3b, 0x61, 0x6c, -0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x3b, 0x73, 0x69, 0x62, 0x3b, 0x6b, 0x61, 0x72, 0x69, 0x3b, 0x6e, 0x74, 0x25b, 0x6e, 0x25b, -0x3b, 0x74, 0x61, 0x72, 0x61, 0x74, 0x61, 0x3b, 0x61, 0x72, 0x61, 0x62, 0x61, 0x3b, 0x61, 0x6c, 0x61, 0x6d, 0x69, 0x73, -0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x73, 0x69, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, -0x41, 0x3b, 0x41, 0x3b, 0x4a, 0x3b, 0x53, 0x3b, 0x4b, 0x6d, 0x61, 0x3b, 0x54, 0x61, 0x74, 0x3b, 0x49, 0x6e, 0x65, 0x3b, -0x54, 0x61, 0x6e, 0x3b, 0x41, 0x72, 0x6d, 0x3b, 0x4d, 0x61, 0x61, 0x3b, 0x4e, 0x4d, 0x4d, 0x3b, 0x4b, 0x69, 0x75, 0x6d, -0x69, 0x61, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x69, 0x6e, -0x65, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x74, 0x68, 0x69, -0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4e, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x74, 0x68, 0x69, 0x69, 0x3b, -0x4b, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x13c6, 0x13cd, 0x13ac, 0x3b, 0x13c9, 0x13c5, -0x13af, 0x3b, 0x13d4, 0x13b5, 0x13c1, 0x3b, 0x13e6, 0x13a2, 0x13c1, 0x3b, 0x13c5, 0x13a9, 0x13c1, 0x3b, 0x13e7, 0x13be, 0x13a9, 0x3b, 0x13c8, 0x13d5, -0x13be, 0x3b, 0x13a4, 0x13be, 0x13d9, 0x13d3, 0x13c6, 0x13cd, 0x13ac, 0x3b, 0x13a4, 0x13be, 0x13d9, 0x13d3, 0x13c9, 0x13c5, 0x13af, 0x3b, 0x13d4, 0x13b5, -0x13c1, 0x13a2, 0x13a6, 0x3b, 0x13e6, 0x13a2, 0x13c1, 0x13a2, 0x13a6, 0x3b, 0x13c5, 0x13a9, 0x13c1, 0x13a2, 0x13a6, 0x3b, 0x13e7, 0x13be, 0x13a9, 0x13b6, -0x13cd, 0x13d7, 0x3b, 0x13a4, 0x13be, 0x13d9, 0x13d3, 0x13c8, 0x13d5, 0x13be, 0x3b, 0x13c6, 0x3b, 0x13c9, 0x3b, 0x13d4, 0x3b, 0x13e6, 0x3b, 0x13c5, -0x3b, 0x13e7, 0x3b, 0x13a4, 0x3b, 0x64, 0x69, 0x6d, 0x3b, 0x6c, 0x69, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x65, 0x72, -0x3b, 0x7a, 0x65, 0x3b, 0x76, 0x61, 0x6e, 0x3b, 0x73, 0x61, 0x6d, 0x3b, 0x64, 0x69, 0x6d, 0x61, 0x6e, 0x73, 0x3b, 0x6c, -0x69, 0x6e, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x65, 0x72, 0x6b, 0x72, 0x65, 0x64, 0x69, 0x3b, -0x7a, 0x65, 0x64, 0x69, 0x3b, 0x76, 0x61, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x69, 0x3b, 0x73, 0x61, 0x6d, 0x64, 0x69, 0x3b, -0x64, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x7a, 0x3b, 0x76, 0x3b, 0x73, 0x3b, 0x4c, 0x6c, 0x32, 0x3b, 0x4c, 0x6c, -0x33, 0x3b, 0x4c, 0x6c, 0x34, 0x3b, 0x4c, 0x6c, 0x35, 0x3b, 0x4c, 0x6c, 0x36, 0x3b, 0x4c, 0x6c, 0x37, 0x3b, 0x4c, 0x6c, -0x31, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x70, 0x69, 0x6c, 0x69, 0x3b, 0x4c, 0x69, 0x64, -0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, -0x79, 0x61, 0x6e, 0x63, 0x68, 0x65, 0x63, 0x68, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, -0x6e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x6e, 0x6e, 0x79, -0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x6c, 0x69, 0x6e, 0x6a, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, -0x6c, 0x79, 0x61, 0x6e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x76, 0x69, 0x6c, 0x69, 0x3b, -0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x69, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x3b, 0x50, 0xed, 0x69, 0x6c, 0x69, -0x3b, 0x54, 0xe1, 0x61, 0x74, 0x75, 0x3b, 0xcd, 0x6e, 0x65, 0x3b, 0x54, 0xe1, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, -0x3b, 0x49, 0x6a, 0x6d, 0x3b, 0x4d, 0xf3, 0x6f, 0x73, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0xed, 0x69, 0x72, 0x69, -0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0xed, 0x6e, 0x65, 0x3b, 0x4a, 0x75, -0x6d, 0x61, 0x74, 0xe1, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x61, 0x6d, 0xed, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, -0x6d, 0xe1, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0xf3, 0x6f, 0x73, 0x69, 0x3b, 0x50, 0x3b, 0x54, 0x3b, 0x45, 0x3b, -0x4f, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4d, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x42, 0x61, 0x6c, 0x3b, 0x4c, 0x77, 0x32, 0x3b, -0x4c, 0x77, 0x33, 0x3b, 0x4c, 0x77, 0x34, 0x3b, 0x4c, 0x77, 0x35, 0x3b, 0x4c, 0x77, 0x36, 0x3b, 0x53, 0x61, 0x62, 0x62, -0x69, 0x69, 0x74, 0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x7a, 0x61, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x62, 0x69, 0x72, -0x69, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x73, 0x61, 0x74, 0x75, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x6e, 0x61, 0x3b, -0x4c, 0x77, 0x61, 0x6b, 0x75, 0x74, 0x61, 0x61, 0x6e, 0x6f, 0x3b, 0x4c, 0x77, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67, -0x61, 0x3b, 0x53, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x50, 0x61, 0x20, 0x4d, -0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x6d, 0x6f, 0x3b, 0x50, 0x61, 0x6c, -0x69, 0x63, 0x68, 0x69, 0x62, 0x75, 0x6c, 0x69, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, -0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x73, 0x61, -0x6e, 0x6f, 0x3b, 0x50, 0x61, 0x63, 0x68, 0x69, 0x62, 0x65, 0x6c, 0x75, 0x73, 0x68, 0x69, 0x3b, 0x64, 0x75, 0x6d, 0x3b, -0x73, 0x69, 0x67, 0x3b, 0x74, 0x65, 0x72, 0x3b, 0x6b, 0x75, 0x61, 0x3b, 0x6b, 0x69, 0x6e, 0x3b, 0x73, 0x65, 0x73, 0x3b, -0x73, 0x61, 0x62, 0x3b, 0x64, 0x75, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x73, 0x69, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d, -0x66, 0x65, 0x72, 0x61, 0x3b, 0x74, 0x65, 0x72, 0x73, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x6b, 0x75, 0x61, 0x72, -0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x6b, 0x69, 0x6e, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x73, -0x65, 0x73, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x75, 0x3b, 0x44, 0x3b, 0x53, -0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x64, 0x75, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x73, -0x69, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x74, 0x65, 0x72, 0x73, 0x61, 0x2d, 0x66, 0x65, -0x72, 0x61, 0x3b, 0x6b, 0x75, 0x61, 0x72, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x6b, 0x69, 0x6e, 0x74, 0x61, -0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x73, 0x65, 0x73, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x73, 0x61, 0x62, -0x61, 0x64, 0x75, 0x3b, 0x4b, 0x49, 0x55, 0x3b, 0x4d, 0x52, 0x41, 0x3b, 0x57, 0x41, 0x49, 0x3b, 0x57, 0x45, 0x54, 0x3b, -0x57, 0x45, 0x4e, 0x3b, 0x57, 0x54, 0x4e, 0x3b, 0x4a, 0x55, 0x4d, 0x3b, 0x4b, 0x69, 0x75, 0x6d, 0x69, 0x61, 0x3b, 0x4d, -0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x6f, 0x3b, 0x57, 0x61, 0x69, 0x72, 0x69, 0x3b, 0x57, 0x65, 0x74, 0x68, 0x61, 0x74, -0x75, 0x3b, 0x57, 0x65, 0x6e, 0x61, 0x3b, 0x57, 0x65, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, -0x73, 0x69, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x4a, 0x3b, 0x4b, 0x74, 0x73, -0x3b, 0x4b, 0x6f, 0x74, 0x3b, 0x4b, 0x6f, 0x6f, 0x3b, 0x4b, 0x6f, 0x73, 0x3b, 0x4b, 0x6f, 0x61, 0x3b, 0x4b, 0x6f, 0x6d, -0x3b, 0x4b, 0x6f, 0x6c, 0x3b, 0x4b, 0x6f, 0x74, 0x69, 0x73, 0x61, 0x70, 0x3b, 0x4b, 0x6f, 0x74, 0x61, 0x61, 0x69, 0x3b, -0x4b, 0x6f, 0x61, 0x65, 0x6e, 0x67, 0x2019, 0x3b, 0x4b, 0x6f, 0x73, 0x6f, 0x6d, 0x6f, 0x6b, 0x3b, 0x4b, 0x6f, 0x61, 0x6e, -0x67, 0x2019, 0x77, 0x61, 0x6e, 0x3b, 0x4b, 0x6f, 0x6d, 0x75, 0x75, 0x74, 0x3b, 0x4b, 0x6f, 0x6c, 0x6f, 0x3b, 0x54, 0x3b, -0x54, 0x3b, 0x4f, 0x3b, 0x53, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4c, 0x3b, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0x61, 0x3b, 0x44, -0x65, 0x3b, 0x57, 0x75, 0x3b, 0x44, 0x6f, 0x3b, 0x46, 0x72, 0x3b, 0x53, 0x61, 0x74, 0x3b, 0x53, 0x6f, 0x6e, 0x74, 0x61, -0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x6e, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x44, -0x65, 0x6e, 0x73, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x57, 0x75, 0x6e, 0x73, 0x74, 0x61, 0x78, 0x74, -0x73, 0x65, 0x65, 0x73, 0x3b, 0x44, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, -0x46, 0x72, 0x61, 0x69, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x53, 0x61, 0x74, 0x65, 0x72, 0x74, 0x61, -0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x57, 0x3b, 0x44, 0x3b, 0x46, 0x3b, 0x41, -0x3b, 0x53, 0x75, 0x2e, 0x3b, 0x4d, 0x6f, 0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b, 0x4d, 0x65, 0x2e, 0x3b, 0x44, 0x75, 0x2e, -0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x3b, 0x53, 0x75, 0x6e, 0x6e, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x4d, -0x6f, 0x68, 0x6e, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x44, 0x69, 0x6e, 0x6e, 0x73, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, -0x4d, 0x65, 0x74, 0x77, 0x6f, 0x63, 0x68, 0x3b, 0x44, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x64, 0x61, 0x61, 0x63, 0x68, -0x3b, 0x46, 0x72, 0x69, 0x69, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x64, 0x61, 0x61, 0x63, 0x68, -0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0xed, 0x6c, 0xed, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x74, 0x75, 0x3b, 0x4a, -0x75, 0x6d, 0x61, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x6e, 0x254, 0x3b, 0x41, 0x6c, 0x61, 0xe1, 0x6d, -0x69, 0x73, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0xe1, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0xf3, 0x73, 0x69, 0x3b, 0x53, -0x61, 0x62, 0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x3b, 0x4b, 0x75, 0x62, 0x69, 0x3b, 0x4b, 0x75, 0x73, 0x61, 0x3b, 0x4b, -0x75, 0x6e, 0x61, 0x3b, 0x4b, 0x75, 0x74, 0x61, 0x3b, 0x4d, 0x75, 0x6b, 0x61, 0x3b, 0x53, 0x61, 0x62, 0x69, 0x69, 0x74, -0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x7a, 0x61, 0x3b, 0x4f, 0x77, 0x6f, 0x6b, 0x75, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x4f, -0x77, 0x6f, 0x6b, 0x75, 0x73, 0x61, 0x74, 0x75, 0x3b, 0x4f, 0x6c, 0x6f, 0x6b, 0x75, 0x6e, 0x61, 0x3b, 0x4f, 0x6c, 0x6f, -0x6b, 0x75, 0x74, 0x61, 0x61, 0x6e, 0x75, 0x3b, 0x4f, 0x6c, 0x6f, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67, 0x61, 0x3b, 0x53, -0x3b, 0x42, 0x3b, 0x42, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x4a, 0x32, 0x3b, 0x4a, 0x33, 0x3b, 0x4a, -0x34, 0x3b, 0x4a, 0x35, 0x3b, 0x41, 0x6c, 0x3b, 0x49, 0x6a, 0x3b, 0x4a, 0x31, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69, -0x72, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, -0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, 0x75, 0x72, 0x77, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x61, -0x6e, 0x6e, 0x65, 0x3b, 0x4d, 0x75, 0x72, 0x77, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, -0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x4a, 0x70, 0x69, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, -0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x6d, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, -0x3b, 0x42, 0x61, 0x72, 0x3b, 0x41, 0x61, 0x72, 0x3b, 0x55, 0x6e, 0x69, 0x3b, 0x55, 0x6e, 0x67, 0x3b, 0x4b, 0x61, 0x6e, -0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x65, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x65, -0x62, 0x61, 0x72, 0x61, 0x73, 0x61, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x75, -0x6e, 0x69, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x75, 0x6e, 0x67, 0x2019, 0x6f, 0x6e, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x6b, 0x61, -0x6e, 0x79, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x73, 0x61, 0x62, 0x69, 0x74, 0x69, 0x3b, 0x4a, 0x3b, 0x42, 0x3b, 0x41, 0x3b, -0x55, 0x3b, 0x55, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x41, 0x74, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x3b, -0x41, 0x6c, 0x61, 0x3b, 0x41, 0x6c, 0x6d, 0x3b, 0x41, 0x6c, 0x6a, 0x3b, 0x41, 0x73, 0x73, 0x3b, 0x41, 0x6c, 0x68, 0x61, -0x64, 0x69, 0x3b, 0x41, 0x74, 0x69, 0x6e, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, -0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x61, 0x3b, 0x41, 0x6c, 0x6a, 0x75, 0x6d, 0x61, -0x3b, 0x41, 0x73, 0x73, 0x61, 0x62, 0x64, 0x75, 0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, -0x3b, 0x53, 0x3b, 0x4a, 0x4d, 0x50, 0x3b, 0x57, 0x55, 0x54, 0x3b, 0x54, 0x41, 0x52, 0x3b, 0x54, 0x41, 0x44, 0x3b, 0x54, -0x41, 0x4e, 0x3b, 0x54, 0x41, 0x42, 0x3b, 0x4e, 0x47, 0x53, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x3b, 0x57, -0x75, 0x6f, 0x6b, 0x20, 0x54, 0x69, 0x63, 0x68, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x72, 0x69, 0x79, 0x6f, 0x3b, -0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x64, 0x65, 0x6b, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x6e, 0x67, 0x2019, 0x77, -0x65, 0x6e, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x62, 0x69, 0x63, 0x68, 0x3b, 0x4e, 0x67, 0x65, 0x73, 0x6f, 0x3b, -0x4a, 0x3b, 0x57, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4e, 0x3b, 0x41, 0x73, 0x61, 0x3b, 0x41, 0x79, -0x6e, 0x3b, 0x41, 0x73, 0x6e, 0x3b, 0x41, 0x6b, 0x72, 0x3b, 0x41, 0x6b, 0x77, 0x3b, 0x41, 0x73, 0x6d, 0x3b, 0x41, 0x73, -0x1e0d, 0x3b, 0x41, 0x73, 0x61, 0x6d, 0x61, 0x73, 0x3b, 0x41, 0x79, 0x6e, 0x61, 0x73, 0x3b, 0x41, 0x73, 0x69, 0x6e, 0x61, -0x73, 0x3b, 0x41, 0x6b, 0x72, 0x61, 0x73, 0x3b, 0x41, 0x6b, 0x77, 0x61, 0x73, 0x3b, 0x41, 0x73, 0x69, 0x6d, 0x77, 0x61, -0x73, 0x3b, 0x41, 0x73, 0x69, 0x1e0d, 0x79, 0x61, 0x73, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, -0x41, 0x3b, 0x41, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x41, 0x74, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x3b, -0x41, 0x6c, 0x6d, 0x3b, 0x41, 0x6c, 0x7a, 0x3b, 0x41, 0x73, 0x69, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x41, -0x74, 0x69, 0x6e, 0x6e, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c, 0x61, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, -0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x61, 0x3b, 0x41, 0x6c, 0x7a, 0x75, 0x6d, 0x61, 0x3b, 0x41, -0x73, 0x69, 0x62, 0x74, 0x69, 0x3b, 0x4a, 0x70, 0x69, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6d, 0x6e, 0x3b, 0x4a, 0x74, -0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x70, -0x69, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x6e, 0x65, -0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, -0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x32, 0x3b, 0x33, -0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x31, 0x3b, 0x930, 0x92c, 0x93f, 0x3b, 0x938, 0x92e, 0x3b, 0x92e, 0x902, -0x917, 0x932, 0x3b, 0x92c, 0x941, 0x926, 0x3b, 0x92c, 0x93f, 0x938, 0x925, 0x93f, 0x3b, 0x938, 0x941, 0x916, 0x941, 0x930, 0x3b, 0x938, -0x941, 0x928, 0x93f, 0x3b, 0x930, 0x92c, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x92e, 0x92c, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, -0x932, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x926, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x93f, 0x938, 0x925, 0x93f, 0x92c, 0x93e, 0x930, -0x3b, 0x938, 0x941, 0x916, 0x941, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x941, 0x928, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x930, 0x3b, -0x938, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x3b, 0x92c, 0x93f, 0x3b, 0x938, 0x941, 0x3b, 0x938, 0x941, 0x3b, 0x43a, 0x4c0, 0x438, -0x3b, 0x43e, 0x440, 0x3b, 0x448, 0x438, 0x3b, 0x43a, 0x445, 0x430, 0x3b, 0x435, 0x430, 0x3b, 0x43f, 0x4c0, 0x435, 0x3b, 0x448, 0x443, -0x43e, 0x3b, 0x43a, 0x4c0, 0x438, 0x440, 0x430, 0x3b, 0x43e, 0x440, 0x448, 0x43e, 0x442, 0x3b, 0x448, 0x438, 0x43d, 0x430, 0x440, 0x430, -0x3b, 0x43a, 0x445, 0x430, 0x430, 0x440, 0x430, 0x3b, 0x435, 0x430, 0x440, 0x430, 0x3b, 0x43f, 0x4c0, 0x435, 0x440, 0x430, 0x441, 0x43a, -0x430, 0x3b, 0x448, 0x443, 0x43e, 0x442, 0x3b, 0x43a, 0x4c0, 0x3b, 0x43e, 0x3b, 0x448, 0x3b, 0x43a, 0x445, 0x3b, 0x435, 0x3b, 0x43f, -0x4c0, 0x3b, 0x448, 0x3b, 0x43d, 0x434, 0x2de7, 0x487, 0x467, 0x3b, 0x43f, 0x43d, 0x2de3, 0x435, 0x3b, 0x432, 0x442, 0x43e, 0x2dec, 0x487, -0x3b, 0x441, 0x440, 0x2de3, 0x435, 0x3b, 0x447, 0x435, 0x2de6, 0x487, 0x3b, 0x43f, 0x467, 0x2de6, 0x487, 0x3b, 0x441, 0xa64b, 0x2de0, 0x487, -0x3b, 0x43d, 0x435, 0x434, 0x463, 0x301, 0x43b, 0x467, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x463, 0x301, 0x43b, 0x44c, 0x43d, 0x438, -0x43a, 0x44a, 0x3b, 0x432, 0x442, 0x43e, 0x301, 0x440, 0x43d, 0x438, 0x43a, 0x44a, 0x3b, 0x441, 0x440, 0x435, 0x434, 0x430, 0x300, 0x3b, -0x447, 0x435, 0x442, 0x432, 0x435, 0x440, 0x442, 0x43e, 0x301, 0x43a, 0x44a, 0x3b, 0x43f, 0x467, 0x442, 0x43e, 0x301, 0x43a, 0x44a, 0x3b, -0x441, 0xa64b, 0x431, 0x431, 0x461, 0x301, 0x442, 0x430, 0x3b, 0x4c, 0x75, 0x6d, 0x3b, 0x4e, 0x6b, 0x6f, 0x3b, 0x4e, 0x64, 0x79, -0x3b, 0x4e, 0x64, 0x67, 0x3b, 0x4e, 0x6a, 0x77, 0x3b, 0x4e, 0x67, 0x76, 0x3b, 0x4c, 0x75, 0x62, 0x3b, 0x4c, 0x75, 0x6d, -0x69, 0x6e, 0x67, 0x75, 0x3b, 0x4e, 0x6b, 0x6f, 0x64, 0x79, 0x61, 0x3b, 0x4e, 0x64, 0xe0, 0x61, 0x79, 0xe0, 0x3b, 0x4e, -0x64, 0x61, 0x6e, 0x67, 0xf9, 0x3b, 0x4e, 0x6a, 0xf2, 0x77, 0x61, 0x3b, 0x4e, 0x67, 0xf2, 0x76, 0x79, 0x61, 0x3b, 0x4c, -0x75, 0x62, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x4c, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4c, -0x3b, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0xe9, 0x69, 0x3b, 0x44, 0xeb, 0x6e, 0x3b, 0x4d, 0xeb, 0x74, 0x3b, 0x44, 0x6f, 0x6e, -0x3b, 0x46, 0x72, 0x65, 0x3b, 0x53, 0x61, 0x6d, 0x3b, 0x53, 0x6f, 0x6e, 0x6e, 0x64, 0x65, 0x67, 0x3b, 0x4d, 0xe9, 0x69, -0x6e, 0x64, 0x65, 0x67, 0x3b, 0x44, 0xeb, 0x6e, 0x73, 0x63, 0x68, 0x64, 0x65, 0x67, 0x3b, 0x4d, 0xeb, 0x74, 0x74, 0x77, -0x6f, 0x63, 0x68, 0x3b, 0x44, 0x6f, 0x6e, 0x6e, 0x65, 0x73, 0x63, 0x68, 0x64, 0x65, 0x67, 0x3b, 0x46, 0x72, 0x65, 0x69, -0x64, 0x65, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x63, 0x68, 0x64, 0x65, 0x67, 0x3b, 0x53, 0x6f, 0x6e, 0x2e, 0x3b, 0x4d, -0xe9, 0x69, 0x2e, 0x3b, 0x44, 0xeb, 0x6e, 0x2e, 0x3b, 0x4d, 0xeb, 0x74, 0x2e, 0x3b, 0x44, 0x6f, 0x6e, 0x2e, 0x3b, 0x46, -0x72, 0x65, 0x2e, 0x3b, 0x53, 0x61, 0x6d, 0x2e, 0x3b, 0x6e, 0x74, 0x73, 0x3b, 0x6b, 0x70, 0x61, 0x3b, 0x67, 0x68, 0x254, -0x3b, 0x74, 0x254, 0x6d, 0x3b, 0x75, 0x6d, 0x65, 0x3b, 0x67, 0x68, 0x268, 0x3b, 0x64, 0x7a, 0x6b, 0x3b, 0x74, 0x73, 0x75, -0x294, 0x6e, 0x74, 0x73, 0x268, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x6b, 0x70, 0xe0, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, -0x67, 0x68, 0x254, 0x65, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x74, 0x254, 0x300, 0x6d, 0x6c, 0xf2, 0x3b, 0x74, 0x73, 0x75, -0x294, 0x75, 0x6d, 0xe8, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x67, 0x68, 0x268, 0x302, 0x6d, 0x3b, 0x74, 0x73, 0x75, 0x294, -0x6e, 0x64, 0x7a, 0x268, 0x6b, 0x254, 0x294, 0x254, 0x3b, 0x6e, 0x3b, 0x6b, 0x3b, 0x67, 0x3b, 0x74, 0x3b, 0x75, 0x3b, 0x67, -0x3b, 0x64, 0x3b, 0x6e, 0x254, 0x79, 0x3b, 0x6e, 0x6a, 0x61, 0x3b, 0x75, 0x75, 0x6d, 0x3b, 0x14b, 0x67, 0x65, 0x3b, 0x6d, -0x62, 0x254, 0x3b, 0x6b, 0x254, 0x254, 0x3b, 0x6a, 0x6f, 0x6e, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6e, 0x254, 0x302, 0x79, -0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6e, 0x6a, 0x61, 0x14b, 0x67, 0x75, 0x6d, 0x62, 0x61, 0x3b, 0x14b, 0x67, 0x77, 0xe0, -0x20, 0xfb, 0x6d, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x14b, 0x67, 0xea, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6d, 0x62, -0x254, 0x6b, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6b, 0x254, 0x254, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6a, 0xf4, 0x6e, -0x3b, 0x6e, 0x3b, 0x6e, 0x3b, 0x75, 0x3b, 0x14b, 0x3b, 0x6d, 0x3b, 0x6b, 0x3b, 0x6a, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x64, -0x69, 0x3b, 0x41, 0x74, 0x69, 0x6e, 0x6e, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c, 0x61, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, -0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x41, 0x6c, 0x7a, 0x75, 0x6d, 0x61, -0x3b, 0x41, 0x73, 0x69, 0x62, 0x74, 0x69, 0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, -0x53, 0x3b, 0xe9, 0x74, 0x3b, 0x6d, 0x254, 0x301, 0x73, 0x3b, 0x6b, 0x77, 0x61, 0x3b, 0x6d, 0x75, 0x6b, 0x3b, 0x14b, 0x67, -0x69, 0x3b, 0x257, 0xf3, 0x6e, 0x3b, 0x65, 0x73, 0x61, 0x3b, 0xe9, 0x74, 0x69, 0x3b, 0x6d, 0x254, 0x301, 0x73, 0xfa, 0x3b, -0x6b, 0x77, 0x61, 0x73, 0xfa, 0x3b, 0x6d, 0x75, 0x6b, 0x254, 0x301, 0x73, 0xfa, 0x3b, 0x14b, 0x67, 0x69, 0x73, 0xfa, 0x3b, -0x257, 0xf3, 0x6e, 0x25b, 0x73, 0xfa, 0x3b, 0x65, 0x73, 0x61, 0x253, 0x61, 0x73, 0xfa, 0x3b, 0x65, 0x3b, 0x6d, 0x3b, 0x6b, -0x3b, 0x6d, 0x3b, 0x14b, 0x3b, 0x257, 0x3b, 0x65, 0x3b, 0x44, 0x69, 0x6d, 0x3b, 0x54, 0x65, 0x6e, 0x3b, 0x54, 0x61, 0x6c, -0x3b, 0x41, 0x6c, 0x61, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x41, 0x72, 0x6a, 0x3b, 0x53, 0x69, 0x62, 0x3b, 0x44, 0x69, 0x6d, -0x61, 0x73, 0x3b, 0x54, 0x65, 0x6e, 0x65, 0x14b, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, -0x62, 0x61, 0x79, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x73, 0x61, 0x79, 0x3b, 0x41, 0x72, 0x6a, 0x75, 0x6d, 0x61, 0x3b, -0x53, 0x69, 0x62, 0x69, 0x74, 0x69, 0x3b, 0x44, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x53, -0x3b, 0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x3b, 0x73, 0x6d, 0x62, 0x3b, 0x73, 0x6d, 0x6c, 0x3b, 0x73, -0x6d, 0x6e, 0x3b, 0x66, 0xfa, 0x6c, 0x3b, 0x73, 0xe9, 0x72, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x3b, 0x6d, 0x254, -0x301, 0x6e, 0x64, 0x69, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, -0x62, 0x25b, 0x30c, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x6c, -0x25b, 0x301, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x6e, 0x79, -0x69, 0x3b, 0x66, 0xfa, 0x6c, 0x61, 0x64, 0xe9, 0x3b, 0x73, 0xe9, 0x72, 0x61, 0x64, 0xe9, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, -0x73, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x66, 0x3b, 0x73, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6c, 0x1dd, 0x6e, 0x3b, 0x6d, -0x61, 0x61, 0x3b, 0x6d, 0x25b, 0x6b, 0x3b, 0x6a, 0x1dd, 0x1dd, 0x3b, 0x6a, 0xfa, 0x6d, 0x3b, 0x73, 0x61, 0x6d, 0x3b, 0x73, -0x254, 0x301, 0x6e, 0x64, 0x1dd, 0x3b, 0x6c, 0x1dd, 0x6e, 0x64, 0xed, 0x3b, 0x6d, 0x61, 0x61, 0x64, 0xed, 0x3b, 0x6d, 0x25b, -0x6b, 0x72, 0x25b, 0x64, 0xed, 0x3b, 0x6a, 0x1dd, 0x1dd, 0x64, 0xed, 0x3b, 0x6a, 0xfa, 0x6d, 0x62, 0xe1, 0x3b, 0x73, 0x61, -0x6d, 0x64, 0xed, 0x3b, 0x73, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6a, 0x3b, 0x6a, 0x3b, 0x73, 0x3b, 0x53, 0x61, -0x62, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x49, 0x6a, -0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x53, 0x61, 0x62, 0x61, 0x74, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, -0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, -0x72, 0x61, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, -0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x53, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x3b, 0x43, -0x79, 0x61, 0x3b, 0x43, 0x6c, 0x61, 0x3b, 0x43, 0x7a, 0x69, 0x3b, 0x43, 0x6b, 0x6f, 0x3b, 0x43, 0x6b, 0x61, 0x3b, 0x43, -0x67, 0x61, 0x3b, 0x43, 0x7a, 0x65, 0x3b, 0x43, 0x6f, 0x6d, 0x2019, 0x79, 0x61, 0x6b, 0x6b, 0x65, 0x3b, 0x43, 0x6f, 0x6d, -0x6c, 0x61, 0x61, 0x257, 0x69, 0x69, 0x3b, 0x43, 0x6f, 0x6d, 0x7a, 0x79, 0x69, 0x69, 0x257, 0x69, 0x69, 0x3b, 0x43, 0x6f, -0x6d, 0x6b, 0x6f, 0x6c, 0x6c, 0x65, 0x3b, 0x43, 0x6f, 0x6d, 0x6b, 0x61, 0x6c, 0x64, 0x1dd, 0x253, 0x6c, 0x69, 0x69, 0x3b, -0x43, 0x6f, 0x6d, 0x67, 0x61, 0x69, 0x73, 0x75, 0x75, 0x3b, 0x43, 0x6f, 0x6d, 0x7a, 0x79, 0x65, 0x253, 0x73, 0x75, 0x75, -0x3b, 0x59, 0x3b, 0x4c, 0x3b, 0x5a, 0x3b, 0x4f, 0x3b, 0x41, 0x3b, 0x47, 0x3b, 0x45, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x3b, -0x6d, 0x254, 0x301, 0x6e, 0x3b, 0x73, 0x6d, 0x62, 0x3b, 0x73, 0x6d, 0x6c, 0x3b, 0x73, 0x6d, 0x6e, 0x3b, 0x6d, 0x62, 0x73, -0x3b, 0x73, 0x61, 0x73, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x3b, 0x73, -0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x61, 0x66, 0xfa, 0x20, 0x6d, 0xe1, 0x62, 0x61, 0x3b, 0x73, 0x254, 0x301, 0x6e, -0x64, 0x254, 0x20, 0x6d, 0x61, 0x66, 0xfa, 0x20, 0x6d, 0xe1, 0x6c, 0x61, 0x6c, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, -0x20, 0x6d, 0x61, 0x66, 0xfa, 0x20, 0x6d, 0xe1, 0x6e, 0x61, 0x3b, 0x6d, 0x61, 0x62, 0xe1, 0x67, 0xe1, 0x20, 0x6d, 0xe1, -0x20, 0x73, 0x75, 0x6b, 0x75, 0x6c, 0x3b, 0x73, 0xe1, 0x73, 0x61, 0x64, 0x69, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, -0x73, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x43, 0xe4, 0x14b, 0x3b, 0x4a, 0x69, 0x65, 0x63, 0x3b, 0x52, 0x25b, 0x77, -0x3b, 0x44, 0x69, 0x254, 0x331, 0x6b, 0x3b, 0x14a, 0x75, 0x61, 0x61, 0x6e, 0x3b, 0x44, 0x68, 0x69, 0x65, 0x65, 0x63, 0x3b, -0x42, 0xe4, 0x6b, 0x25b, 0x6c, 0x3b, 0x43, 0xe4, 0x14b, 0x20, 0x6b, 0x75, 0x254, 0x74, 0x68, 0x3b, 0x4a, 0x69, 0x65, 0x63, -0x20, 0x6c, 0x61, 0x331, 0x74, 0x3b, 0x52, 0x25b, 0x77, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x44, 0x69, 0x254, 0x331, -0x6b, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x14a, 0x75, 0x61, 0x61, 0x6e, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, -0x44, 0x68, 0x69, 0x65, 0x65, 0x63, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x42, 0xe4, 0x6b, 0x25b, 0x6c, 0x20, 0x6c, -0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x43, 0x3b, 0x4a, 0x3b, 0x52, 0x3b, 0x44, 0x3b, 0x14a, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x431, -0x441, 0x3b, 0x431, 0x43d, 0x3b, 0x43e, 0x43f, 0x3b, 0x441, 0x44d, 0x3b, 0x447, 0x43f, 0x3b, 0x431, 0x44d, 0x3b, 0x441, 0x431, 0x3b, -0x431, 0x430, 0x441, 0x43a, 0x44b, 0x4bb, 0x44b, 0x430, 0x43d, 0x43d, 0x44c, 0x430, 0x3b, 0x431, 0x44d, 0x43d, 0x438, 0x434, 0x438, 0x44d, -0x43d, 0x43d, 0x44c, 0x438, 0x43a, 0x3b, 0x43e, 0x43f, 0x442, 0x443, 0x43e, 0x440, 0x443, 0x43d, 0x43d, 0x44c, 0x443, 0x43a, 0x3b, 0x441, -0x44d, 0x440, 0x44d, 0x434, 0x44d, 0x3b, 0x447, 0x44d, 0x43f, 0x43f, 0x438, 0x44d, 0x440, 0x3b, 0x411, 0x44d, 0x44d, 0x442, 0x438, 0x4a5, -0x441, 0x44d, 0x3b, 0x441, 0x443, 0x431, 0x443, 0x43e, 0x442, 0x430, 0x3b, 0x411, 0x3b, 0x411, 0x3b, 0x41e, 0x3b, 0x421, 0x3b, 0x427, -0x3b, 0x411, 0x3b, 0x421, 0x3b, 0x4d, 0x75, 0x6c, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, -0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x4d, 0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, -0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, -0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x61, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, -0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, -0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x3b, 0xa55e, 0xa54c, 0xa535, 0x3b, 0xa5f3, 0xa5e1, 0xa609, 0x3b, 0xa55a, 0xa55e, 0xa55a, 0x3b, 0xa549, -0xa55e, 0xa552, 0x3b, 0xa549, 0xa524, 0xa546, 0xa562, 0x3b, 0xa549, 0xa524, 0xa540, 0xa56e, 0x3b, 0xa53b, 0xa52c, 0xa533, 0x3b, 0x6c, 0x61, 0x68, -0x61, 0x64, 0x69, 0x3b, 0x74, 0x25b, 0x25b, 0x6e, 0x25b, 0x25b, 0x3b, 0x74, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x61, 0x6c, -0x61, 0x62, 0x61, 0x3b, 0x61, 0x69, 0x6d, 0x69, 0x73, 0x61, 0x3b, 0x61, 0x69, 0x6a, 0x69, 0x6d, 0x61, 0x3b, 0x73, 0x69, -0x253, 0x69, 0x74, 0x69, 0x3b, 0x53, 0x75, 0x6e, 0x3b, 0x4d, 0xe4, 0x6e, 0x3b, 0x5a, 0x69, 0x161, 0x3b, 0x4d, 0x69, 0x74, -0x3b, 0x46, 0x72, 0xf3, 0x3b, 0x46, 0x72, 0x69, 0x3b, 0x53, 0x61, 0x6d, 0x3b, 0x53, 0x75, 0x6e, 0x6e, 0x74, 0x61, 0x67, -0x3b, 0x4d, 0xe4, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x5a, 0x69, 0x161, 0x74, 0x61, 0x67, 0x3b, 0x4d, 0x69, 0x74, 0x74, 0x77, -0x75, 0x10d, 0x3b, 0x46, 0x72, 0xf3, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x46, 0x72, 0x69, 0x74, 0x61, 0x67, 0x3b, 0x53, 0x61, -0x6d, 0x161, 0x74, 0x61, 0x67, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x4d, 0x3b, 0x46, 0x3b, 0x46, 0x3b, 0x53, 0x3b, -0x73, 0x64, 0x3b, 0x6d, 0x64, 0x3b, 0x6d, 0x77, 0x3b, 0x65, 0x74, 0x3b, 0x6b, 0x6c, 0x3b, 0x66, 0x6c, 0x3b, 0x73, 0x73, -0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x25b, 0x3b, 0x6d, 0xf3, 0x6e, 0x64, 0x69, 0x65, 0x3b, 0x6d, 0x75, 0xe1, 0x6e, -0x79, 0xe1, 0x14b, 0x6d, 0xf3, 0x6e, 0x64, 0x69, 0x65, 0x3b, 0x6d, 0x65, 0x74, 0xfa, 0x6b, 0x70, 0xed, 0xe1, 0x70, 0x25b, -0x3b, 0x6b, 0xfa, 0x70, 0xe9, 0x6c, 0x69, 0x6d, 0x65, 0x74, 0xfa, 0x6b, 0x70, 0x69, 0x61, 0x70, 0x25b, 0x3b, 0x66, 0x65, -0x6c, 0xe9, 0x74, 0x65, 0x3b, 0x73, 0xe9, 0x73, 0x65, 0x6c, 0xe9, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x65, 0x3b, -0x6b, 0x3b, 0x66, 0x3b, 0x73, 0x3b, 0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x6c, 0x75, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x69, -0xe9, 0x3b, 0x78, 0x75, 0x65, 0x3b, 0x76, 0x69, 0x65, 0x3b, 0x73, 0xe1, 0x62, 0x3b, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, -0x75, 0x3b, 0x6c, 0x6c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x6d, 0x69, 0xe9, 0x72, -0x63, 0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x78, 0x75, 0x65, 0x76, 0x65, 0x73, 0x3b, 0x76, 0x69, 0x65, 0x6e, 0x72, 0x65, 0x73, -0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x75, 0x3b, 0x53, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0x4d, 0x254, 0x301, 0x6e, 0x64, -0x69, 0x3b, 0xc1, 0x70, 0x74, 0x61, 0x20, 0x4d, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0x57, 0x25b, 0x301, 0x6e, 0x25b, 0x73, -0x25b, 0x64, 0x25b, 0x3b, 0x54, 0x254, 0x301, 0x73, 0x25b, 0x64, 0x25b, 0x3b, 0x46, 0x25b, 0x6c, 0xe2, 0x79, 0x25b, 0x64, 0x25b, -0x3b, 0x53, 0xe1, 0x73, 0x69, 0x64, 0x25b, 0x3b, 0x53, 0x254, 0x301, 0x3b, 0x4d, 0x254, 0x301, 0x3b, 0xc1, 0x4d, 0x3b, 0x57, -0x25b, 0x301, 0x3b, 0x54, 0x254, 0x301, 0x3b, 0x46, 0x25b, 0x3b, 0x53, 0xe1, 0x3b, 0x73, 0x254, 0x6e, 0x64, 0x69, 0x3b, 0x6c, -0x75, 0x6e, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x25b, 0x72, 0x6b, 0x25b, 0x72, 0x25b, 0x64, 0x69, -0x3b, 0x79, 0x65, 0x64, 0x69, 0x3b, 0x76, 0x61, 0x14b, 0x64, 0x25b, 0x72, 0x25b, 0x64, 0x69, 0x3b, 0x6d, 0x254, 0x6e, 0x254, -0x20, 0x73, 0x254, 0x6e, 0x64, 0x69, 0x3b, 0x73, 0x6f, 0x3b, 0x6c, 0x75, 0x3b, 0x6d, 0x61, 0x3b, 0x6d, 0x25b, 0x3b, 0x79, -0x65, 0x3b, 0x76, 0x61, 0x3b, 0x6d, 0x73, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x31, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, -0x32, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x33, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x34, 0x3b, 0x41, 0x6e, 0x65, 0x67, -0x20, 0x35, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x36, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x37, 0x3b, 0x41, 0x31, 0x3b, -0x41, 0x32, 0x3b, 0x41, 0x33, 0x3b, 0x41, 0x34, 0x3b, 0x41, 0x35, 0x3b, 0x41, 0x36, 0x3b, 0x41, 0x37, 0x3b, 0x6c, 0x79, -0x25b, 0x2bc, 0x25b, 0x301, 0x20, 0x73, 0x1e85, 0xed, 0x14b, 0x74, 0xe8, 0x3b, 0x6d, 0x76, 0x66, 0xf2, 0x20, 0x6c, 0x79, 0x25b, -0x30c, 0x2bc, 0x3b, 0x6d, 0x62, 0x254, 0x301, 0x254, 0x6e, 0x74, 0xe8, 0x20, 0x6d, 0x76, 0x66, 0xf2, 0x20, 0x6c, 0x79, 0x25b, -0x30c, 0x2bc, 0x3b, 0x74, 0x73, 0xe8, 0x74, 0x73, 0x25b, 0x300, 0x25b, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0x62, -0x254, 0x301, 0x254, 0x6e, 0x74, 0xe8, 0x20, 0x74, 0x73, 0x65, 0x74, 0x73, 0x25b, 0x300, 0x25b, 0x20, 0x6c, 0x79, 0x25b, 0x30c, -0x2bc, 0x3b, 0x6d, 0x76, 0x66, 0xf2, 0x20, 0x6d, 0xe0, 0x67, 0x61, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0xe0, -0x67, 0x61, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x9a8, 0x9cb, 0x982, 0x9ae, 0x9be, 0x987, 0x99c, 0x9bf, 0x982, 0x3b, 0x9a8, -0x9bf, 0x982, 0x9a5, 0x9cc, 0x995, 0x9be, 0x9ac, 0x9be, 0x3b, 0x9b2, 0x9c8, 0x9ac, 0x9be, 0x995, 0x9aa, 0x9cb, 0x995, 0x9aa, 0x9be, 0x3b, -0x9af, 0x9bc, 0x9c1, 0x9ae, 0x9b6, 0x995, 0x9c8, 0x9b6, 0x9be, 0x3b, 0x9b6, 0x997, 0x9cb, 0x9b2, 0x9b6, 0x9c7, 0x9a8, 0x3b, 0x987, 0x9b0, -0x9be, 0x987, 0x3b, 0x9a5, 0x9be, 0x982, 0x99c, 0x3b, 0x9a8, 0x9cb, 0x3b, 0x9a8, 0x9bf, 0x982, 0x3b, 0x9b2, 0x9c8, 0x3b, 0x9af, 0x9bc, -0x9c1, 0x9ae, 0x3b, 0x9b6, 0x997, 0x3b, 0x987, 0x9b0, 0x9be, 0x3b, 0x9a5, 0x9be, 0x982, 0x3b, 0x1c65, 0x1c64, 0x1c78, 0x3b, 0x1c5a, 0x1c5b, -0x3b, 0x1c75, 0x1c5f, 0x3b, 0x1c65, 0x1c5f, 0x1c79, 0x3b, 0x1c65, 0x1c5f, 0x1c79, 0x1c68, 0x3b, 0x1c61, 0x1c5f, 0x1c79, 0x3b, 0x1c67, 0x1c69, 0x3b, -0x1c65, 0x1c64, 0x1c78, 0x1c5c, 0x1c6e, 0x3b, 0x1c5a, 0x1c5b, 0x1c6e, 0x3b, 0x1c75, 0x1c5f, 0x1c5e, 0x1c6e, 0x3b, 0x1c65, 0x1c5f, 0x1c79, 0x1c5c, 0x1c69, -0x1c71, 0x3b, 0x1c65, 0x1c5f, 0x1c79, 0x1c68, 0x1c6b, 0x1c64, 0x3b, 0x1c61, 0x1c5f, 0x1c79, 0x1c68, 0x1c69, 0x1c62, 0x3b, 0x1c67, 0x1c69, 0x1c66, 0x1c69, -0x1c62, 0x3b, 0x1c65, 0x3b, 0x1c5a, 0x3b, 0x1c75, 0x3b, 0x1c65, 0x3b, 0x1c65, 0x3b, 0x1c61, 0x3b, 0x1c67, 0x3b, 0x41, 0x14b, 0x70, 0xe9, -0x74, 0x75, 0x77, 0x61, 0x6b, 0x21f, 0x61, 0x14b, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x77, 0x61, 0x14b, 0x17e, 0x69, -0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x6e, 0x75, 0x14b, 0x70, 0x61, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x79, -0x61, 0x6d, 0x6e, 0x69, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x74, 0x6f, 0x70, 0x61, 0x3b, 0x41, 0x14b, 0x70, 0xe9, -0x74, 0x75, 0x7a, 0x61, 0x70, 0x74, 0x61, 0x14b, 0x3b, 0x4f, 0x77, 0xe1, 0x14b, 0x67, 0x79, 0x75, 0x17e, 0x61, 0x17e, 0x61, -0x70, 0x69, 0x3b, 0x41, 0x3b, 0x57, 0x3b, 0x4e, 0x3b, 0x59, 0x3b, 0x54, 0x3b, 0x5a, 0x3b, 0x4f, 0x3b, 0x2d30, 0x2d59, 0x2d30, -0x2d4e, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d55, -0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4e, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, -0x2d39, 0x2d62, 0x2d30, 0x2d59, 0x3b, 0x6cc, 0x6d5, 0x6a9, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x62f, 0x648, 0x648, 0x634, 0x6d5, 0x645, -0x645, 0x6d5, 0x3b, 0x633, 0x6ce, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x686, 0x648, 0x627, 0x631, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, -0x3b, 0x67e, 0x6ce, 0x646, 0x62c, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x6be, 0x6d5, 0x6cc, 0x646, 0x6cc, 0x3b, 0x634, 0x6d5, 0x645, -0x645, 0x6d5, 0x3b, 0x6cc, 0x3b, 0x62f, 0x3b, 0x633, 0x3b, 0x686, 0x3b, 0x67e, 0x3b, 0x6be, 0x3b, 0x634, 0x3b, 0x6e, 0x6a, 0x65, -0x3b, 0x70, 0xf3, 0x6e, 0x3b, 0x77, 0x61, 0x142, 0x3b, 0x73, 0x72, 0x6a, 0x3b, 0x73, 0x74, 0x77, 0x3b, 0x70, 0x11b, 0x74, -0x3b, 0x73, 0x6f, 0x62, 0x3b, 0x6e, 0x6a, 0x65, 0x17a, 0x65, 0x6c, 0x61, 0x3b, 0x70, 0xf3, 0x6e, 0x6a, 0x65, 0x17a, 0x65, -0x6c, 0x65, 0x3b, 0x77, 0x61, 0x142, 0x74, 0x6f, 0x72, 0x61, 0x3b, 0x73, 0x72, 0x6a, 0x6f, 0x64, 0x61, 0x3b, 0x73, 0x74, -0x77, 0xf3, 0x72, 0x74, 0x6b, 0x3b, 0x70, 0x11b, 0x74, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, -0x70, 0x3b, 0x77, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x6e, 0x6a, 0x65, 0x3b, 0x70, 0xf3, 0x6e, 0x3b, -0x77, 0x75, 0x74, 0x3b, 0x73, 0x72, 0x6a, 0x3b, 0x161, 0x74, 0x77, 0x3b, 0x70, 0x6a, 0x61, 0x3b, 0x73, 0x6f, 0x62, 0x3b, -0x6e, 0x6a, 0x65, 0x64, 0x17a, 0x65, 0x6c, 0x61, 0x3b, 0x70, 0xf3, 0x6e, 0x64, 0x17a, 0x65, 0x6c, 0x61, 0x3b, 0x77, 0x75, -0x74, 0x6f, 0x72, 0x61, 0x3b, 0x73, 0x72, 0x6a, 0x65, 0x64, 0x61, 0x3b, 0x161, 0x74, 0x77, 0xf3, 0x72, 0x74, 0x6b, 0x3b, -0x70, 0x6a, 0x61, 0x74, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, 0x77, 0x3b, 0x73, -0x3b, 0x161, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x6e, 0x61, 0x64, 0x3b, 0x70, 0x61, 0x6e, 0x3b, 0x77, 0x69, 0x73, 0x3b, 0x70, -0x75, 0x73, 0x3b, 0x6b, 0x65, 0x74, 0x3b, 0x70, 0x113, 0x6e, 0x3b, 0x73, 0x61, 0x62, 0x3b, 0x6e, 0x61, 0x64, 0x12b, 0x6c, -0x69, 0x3b, 0x70, 0x61, 0x6e, 0x61, 0x64, 0x12b, 0x6c, 0x69, 0x3b, 0x77, 0x69, 0x73, 0x61, 0x73, 0x12b, 0x64, 0x69, 0x73, -0x3b, 0x70, 0x75, 0x73, 0x73, 0x69, 0x73, 0x61, 0x77, 0x61, 0x69, 0x74, 0x69, 0x3b, 0x6b, 0x65, 0x74, 0x77, 0x69, 0x72, -0x74, 0x69, 0x6b, 0x73, 0x3b, 0x70, 0x113, 0x6e, 0x74, 0x6e, 0x69, 0x6b, 0x73, 0x3b, 0x73, 0x61, 0x62, 0x61, 0x74, 0x74, -0x69, 0x6b, 0x61, 0x3b, 0x4e, 0x3b, 0x50, 0x3b, 0x57, 0x3b, 0x50, 0x3b, 0x4b, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x70, 0x61, -0x73, 0x3b, 0x76, 0x75, 0x6f, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6b, 0x6f, 0x73, 0x3b, 0x74, 0x75, 0x6f, 0x3b, 0x76, 0xe1, -0x73, 0x3b, 0x6c, 0xe1, 0x76, 0x3b, 0x70, 0x61, 0x73, 0x65, 0x70, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73, -0x73, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6d, 0x61, 0x6a, 0x65, 0x62, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6b, 0x6f, 0x73, 0x6b, -0x6f, 0x6b, 0x6b, 0x6f, 0x3b, 0x74, 0x75, 0x6f, 0x72, 0xe2, 0x73, 0x74, 0xe2, 0x68, 0x3b, 0x76, 0xe1, 0x73, 0x74, 0x75, -0x70, 0x70, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x6c, 0xe1, 0x76, 0x75, 0x72, 0x64, 0xe2, 0x68, 0x3b, 0x70, 0x61, 0x73, 0x65, -0x70, 0x65, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0x61, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6d, 0x61, -0x6a, 0x65, 0x62, 0x61, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6b, 0x6f, 0x73, 0x6b, 0x6f, 0x68, 0x6f, 0x3b, 0x74, 0x75, 0x6f, -0x72, 0xe2, 0x73, 0x74, 0x75, 0x76, 0x3b, 0x76, 0xe1, 0x73, 0x74, 0x75, 0x70, 0x70, 0x65, 0x65, 0x69, 0x76, 0x69, 0x3b, -0x6c, 0xe1, 0x76, 0x75, 0x72, 0x64, 0x75, 0x76, 0x3b, 0x70, 0x3b, 0x56, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x56, -0x3b, 0x4c, 0x3b, 0x44, 0x6f, 0x6d, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4d, 0x69, 0x79, 0x3b, 0x48, -0x75, 0x77, 0x3b, 0x42, 0x69, 0x79, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x4c, -0x75, 0x6e, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x4d, 0x69, 0x79, 0x65, 0x72, 0x6b, 0x75, 0x6c, -0x65, 0x73, 0x3b, 0x48, 0x75, 0x77, 0x65, 0x62, 0x65, 0x73, 0x3b, 0x42, 0x69, 0x79, 0x65, 0x72, 0x6e, 0x65, 0x73, 0x3b, -0x53, 0x61, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x42, 0x3b, 0x53, -0x3b, 0x53, 0x1ecd, 0x301, 0x6e, 0x3b, 0x4d, 0x1ecd, 0x301, 0x6e, 0x3b, 0x54, 0x69, 0xfa, 0x3b, 0x57, 0x1eb9, 0x301, 0x6e, 0x3b, -0x54, 0x1ecd, 0x301, 0x7a, 0x3b, 0x46, 0x72, 0x61, 0xed, 0x3b, 0x53, 0xe1, 0x74, 0x3b, 0x53, 0x1ecd, 0x301, 0x6e, 0x64, 0xe8, -0x3b, 0x4d, 0x1ecd, 0x301, 0x6e, 0x64, 0xe8, 0x3b, 0x54, 0x69, 0xfa, 0x7a, 0x64, 0xe8, 0x3b, 0x57, 0x1eb9, 0x301, 0x6e, 0x1eb9, -0x301, 0x7a, 0x64, 0xe8, 0x3b, 0x54, 0x1ecd, 0x301, 0x7a, 0x64, 0xe8, 0x3b, 0x46, 0x72, 0x61, 0xed, 0x64, 0xe8, 0x3b, 0x53, -0xe1, 0x74, 0x1ecd, 0x64, 0xe8, 0x3b +0x77, 0x65, 0x3b, 0x53, 0x61, 0x64, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x53, 0x75, 0x6c, 0x3b, 0x44, 0x79, 0x64, 0x64, +0x20, 0x4c, 0x6c, 0x75, 0x6e, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x4d, 0x61, 0x77, 0x72, 0x74, 0x68, 0x3b, 0x44, 0x79, +0x64, 0x64, 0x20, 0x4d, 0x65, 0x72, 0x63, 0x68, 0x65, 0x72, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x49, 0x61, 0x75, 0x3b, +0x44, 0x79, 0x64, 0x64, 0x20, 0x47, 0x77, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x44, 0x79, 0x64, 0x64, 0x20, 0x53, 0x61, 0x64, +0x77, 0x72, 0x6e, 0x3b, 0x53, 0x3b, 0x4c, 0x6c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x47, 0x3b, 0x53, 0x3b, 0x53, +0x75, 0x6c, 0x3b, 0x4c, 0x6c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x4d, 0x65, 0x72, 0x3b, 0x49, 0x61, 0x75, 0x3b, +0x47, 0x77, 0x65, 0x6e, 0x3b, 0x53, 0x61, 0x64, 0x3b, 0x44, 0x69, 0x62, 0x3b, 0x41, 0x6c, 0x74, 0x3b, 0x54, 0x61, 0x6c, +0x3b, 0xc0, 0x6c, 0x61, 0x3b, 0x41, 0x6c, 0x78, 0x3b, 0xc0, 0x6a, 0x6a, 0x3b, 0x41, 0x73, 0x65, 0x3b, 0x44, 0x69, 0x62, +0xe9, 0x65, 0x72, 0x3b, 0x41, 0x6c, 0x74, 0x69, 0x6e, 0x65, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x61, 0x74, 0x61, 0x3b, 0xc0, +0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x78, 0x61, 0x6d, 0x69, 0x73, 0x3b, 0xc0, 0x6a, 0x6a, 0x75, 0x6d, 0x61, +0x3b, 0x41, 0x73, 0x65, 0x65, 0x72, 0x3b, 0x43, 0x61, 0x77, 0x3b, 0x4d, 0x76, 0x75, 0x3b, 0x42, 0x69, 0x6e, 0x3b, 0x54, +0x68, 0x61, 0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x48, 0x6c, 0x61, 0x3b, 0x4d, 0x67, 0x71, 0x3b, 0x43, 0x61, 0x77, 0x65, 0x3b, +0x4d, 0x76, 0x75, 0x6c, 0x6f, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x62, 0x69, 0x6e, 0x69, 0x3b, 0x4c, 0x77, 0x65, 0x73, +0x69, 0x74, 0x68, 0x61, 0x74, 0x68, 0x75, 0x3b, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x6e, 0x65, 0x3b, 0x4c, 0x77, 0x65, 0x73, +0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x67, 0x71, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x3b, 0x5d6, 0x5d5, 0x5e0, 0x5d8, +0x5d9, 0x5e7, 0x3b, 0x5de, 0x5d0, 0x5b8, 0x5e0, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5d3, 0x5d9, 0x5e0, 0x5e1, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5de, +0x5d9, 0x5d8, 0x5d5, 0x5d5, 0x5d0, 0x5da, 0x3b, 0x5d3, 0x5d0, 0x5e0, 0x5e2, 0x5e8, 0x5e9, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5e4, 0x5bf, 0x5e8, +0x5f2, 0x5b7, 0x5d8, 0x5d9, 0x5e7, 0x3b, 0x5e9, 0x5d1, 0x5ea, 0x3b, 0xc0, 0xec, 0x6b, 0x3b, 0x41, 0x6a, 0x3b, 0xcc, 0x73, 0x1eb9, +0x301, 0x67, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x72, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x62, 0x3b, 0x1eb8, 0x74, 0x3b, 0xc0, 0x62, +0xe1, 0x6d, 0x3b, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x41, 0x6a, 0xe9, 0x3b, 0xcc, 0x73, 0x1eb9, 0x301, 0x67, 0x75, 0x6e, 0x3b, +0x1ecc, 0x6a, 0x1ecd, 0x301, 0x72, 0xfa, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x62, 0x1ecd, 0x3b, 0x1eb8, 0x74, 0xec, 0x3b, 0xc0, 0x62, +0xe1, 0x6d, 0x1eb9, 0x301, 0x74, 0x61, 0x3b, 0xc0, 0x3b, 0x41, 0x3b, 0xcc, 0x3b, 0x1ecc, 0x3b, 0x1ecc, 0x3b, 0x1eb8, 0x3b, 0xc0, +0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0x41, 0x6a, 0xe9, 0x3b, +0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0xcc, 0x73, 0x1eb9, 0x301, 0x67, 0x75, 0x6e, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x72, 0xfa, 0x3b, +0x1ecc, 0x6a, 0x1ecd, 0x301, 0x62, 0x1ecd, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, 0x20, 0x1eb8, 0x74, 0xec, 0x3b, 0x1ecc, 0x6a, 0x1ecd, 0x301, +0x20, 0xc0, 0x62, 0xe1, 0x6d, 0x1eb9, 0x301, 0x74, 0x61, 0x3b, 0xc0, 0xec, 0x6b, 0x3b, 0x41, 0x6a, 0x3b, 0xcc, 0x73, 0x25b, +0x301, 0x67, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x72, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x62, 0x3b, 0x190, 0x74, 0x3b, 0xc0, 0x62, +0xe1, 0x6d, 0x3b, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x41, 0x6a, 0xe9, 0x3b, 0xcc, 0x73, 0x25b, 0x301, 0x67, 0x75, 0x6e, 0x3b, +0x186, 0x6a, 0x254, 0x301, 0x72, 0xfa, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x62, 0x254, 0x3b, 0x190, 0x74, 0xec, 0x3b, 0xc0, 0x62, +0xe1, 0x6d, 0x25b, 0x301, 0x74, 0x61, 0x3b, 0xc0, 0x3b, 0x41, 0x3b, 0xcc, 0x3b, 0x186, 0x3b, 0x186, 0x3b, 0x190, 0x3b, 0xc0, +0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0xc0, 0xec, 0x6b, 0xfa, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0x41, 0x6a, 0xe9, 0x3b, +0x186, 0x6a, 0x254, 0x301, 0x20, 0xcc, 0x73, 0x25b, 0x301, 0x67, 0x75, 0x6e, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x72, 0xfa, 0x3b, +0x186, 0x6a, 0x254, 0x301, 0x62, 0x254, 0x3b, 0x186, 0x6a, 0x254, 0x301, 0x20, 0x190, 0x74, 0xec, 0x3b, 0x186, 0x6a, 0x254, 0x301, +0x20, 0xc0, 0x62, 0xe1, 0x6d, 0x25b, 0x301, 0x74, 0x61, 0x3b, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0x73, 0x6f, 0x3b, 0x42, 0x69, +0x6c, 0x3b, 0x54, 0x68, 0x61, 0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x48, 0x6c, 0x61, 0x3b, 0x4d, 0x67, 0x71, 0x3b, 0x49, 0x53, +0x6f, 0x6e, 0x74, 0x6f, 0x3b, 0x55, 0x4d, 0x73, 0x6f, 0x6d, 0x62, 0x75, 0x6c, 0x75, 0x6b, 0x6f, 0x3b, 0x55, 0x4c, 0x77, +0x65, 0x73, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x55, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x74, 0x68, 0x61, 0x74, 0x68, 0x75, +0x3b, 0x55, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x6e, 0x65, 0x3b, 0x55, 0x4c, 0x77, 0x65, 0x73, 0x69, 0x68, 0x6c, 0x61, 0x6e, +0x75, 0x3b, 0x55, 0x4d, 0x67, 0x71, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x42, 0x3b, 0x54, 0x3b, +0x53, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, 0x73, 0xf8, 0x6e, 0x3b, 0x6d, 0xe5, 0x6e, 0x3b, 0x74, 0x79, 0x73, 0x3b, 0x6f, 0x6e, +0x73, 0x3b, 0x74, 0x6f, 0x72, 0x3b, 0x66, 0x72, 0x65, 0x3b, 0x6c, 0x61, 0x75, 0x3b, 0x73, 0xf8, 0x6e, 0x64, 0x61, 0x67, +0x3b, 0x6d, 0xe5, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x74, 0x79, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x6f, 0x6e, 0x73, 0x64, 0x61, +0x67, 0x3b, 0x74, 0x6f, 0x72, 0x73, 0x64, 0x61, 0x67, 0x3b, 0x66, 0x72, 0x65, 0x64, 0x61, 0x67, 0x3b, 0x6c, 0x61, 0x75, +0x72, 0x64, 0x61, 0x67, 0x3b, 0x73, 0xf8, 0x2e, 0x3b, 0x6d, 0xe5, 0x2e, 0x3b, 0x74, 0x79, 0x2e, 0x3b, 0x6f, 0x6e, 0x2e, +0x3b, 0x74, 0x6f, 0x2e, 0x3b, 0x66, 0x72, 0x2e, 0x3b, 0x6c, 0x61, 0x2e, 0x3b, 0x4a, 0x65, 0x64, 0x3b, 0x4a, 0x65, 0x6c, +0x3b, 0x4a, 0x65, 0x6d, 0x3b, 0x4a, 0x65, 0x72, 0x63, 0x3b, 0x4a, 0x65, 0x72, 0x64, 0x3b, 0x4a, 0x65, 0x68, 0x3b, 0x4a, +0x65, 0x73, 0x3b, 0x4a, 0x65, 0x64, 0x6f, 0x6f, 0x6e, 0x65, 0x65, 0x3b, 0x4a, 0x65, 0x6c, 0x68, 0x65, 0x69, 0x6e, 0x3b, +0x4a, 0x65, 0x6d, 0x61, 0x79, 0x72, 0x74, 0x3b, 0x4a, 0x65, 0x72, 0x63, 0x65, 0x61, 0x6e, 0x3b, 0x4a, 0x65, 0x72, 0x64, +0x65, 0x69, 0x6e, 0x3b, 0x4a, 0x65, 0x68, 0x65, 0x69, 0x6e, 0x65, 0x79, 0x3b, 0x4a, 0x65, 0x73, 0x61, 0x72, 0x6e, 0x3b, +0x53, 0x75, 0x6c, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x74, 0x68, 0x3b, 0x4d, 0x68, 0x72, 0x3b, 0x59, 0x6f, 0x77, 0x3b, +0x47, 0x77, 0x65, 0x3b, 0x53, 0x61, 0x64, 0x3b, 0x64, 0x79, 0x20, 0x53, 0x75, 0x6c, 0x3b, 0x64, 0x79, 0x20, 0x4c, 0x75, +0x6e, 0x3b, 0x64, 0x79, 0x20, 0x4d, 0x65, 0x75, 0x72, 0x74, 0x68, 0x3b, 0x64, 0x79, 0x20, 0x4d, 0x65, 0x72, 0x68, 0x65, +0x72, 0x3b, 0x64, 0x79, 0x20, 0x59, 0x6f, 0x77, 0x3b, 0x64, 0x79, 0x20, 0x47, 0x77, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x64, +0x79, 0x20, 0x53, 0x61, 0x64, 0x6f, 0x72, 0x6e, 0x3b, 0x4b, 0x77, 0x65, 0x3b, 0x44, 0x77, 0x6f, 0x3b, 0x42, 0x65, 0x6e, +0x3b, 0x57, 0x75, 0x6b, 0x3b, 0x59, 0x61, 0x77, 0x3b, 0x46, 0x69, 0x61, 0x3b, 0x4d, 0x65, 0x6d, 0x3b, 0x4b, 0x77, 0x65, +0x73, 0x69, 0x64, 0x61, 0x3b, 0x44, 0x77, 0x6f, 0x77, 0x64, 0x61, 0x3b, 0x42, 0x65, 0x6e, 0x61, 0x64, 0x61, 0x3b, 0x57, +0x75, 0x6b, 0x75, 0x64, 0x61, 0x3b, 0x59, 0x61, 0x77, 0x64, 0x61, 0x3b, 0x46, 0x69, 0x64, 0x61, 0x3b, 0x4d, 0x65, 0x6d, +0x65, 0x6e, 0x65, 0x64, 0x61, 0x3b, 0x4b, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x57, 0x3b, 0x59, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, +0x906, 0x92f, 0x924, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x933, 0x93e, 0x930, 0x3b, 0x92c, +0x941, 0x927, 0x935, 0x93e, 0x930, 0x3b, 0x92c, 0x93f, 0x930, 0x947, 0x938, 0x94d, 0x924, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, +0x930, 0x93e, 0x930, 0x3b, 0x936, 0x947, 0x928, 0x935, 0x93e, 0x930, 0x3b, 0x906, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, +0x941, 0x3b, 0x92c, 0x3b, 0x936, 0x941, 0x3b, 0x936, 0x947, 0x3b, 0x906, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, +0x3b, 0x92c, 0x93f, 0x3b, 0x936, 0x941, 0x3b, 0x936, 0x947, 0x3b, 0x53, 0x1ecd, 0x6e, 0x3b, 0x4d, 0x1ecd, 0x6e, 0x3b, 0x54, 0x69, +0x75, 0x3b, 0x57, 0x65, 0x6e, 0x3b, 0x54, 0x1ecd, 0x1ecd, 0x3b, 0x46, 0x72, 0x61, 0x1ecb, 0x3b, 0x53, 0x61, 0x74, 0x3b, 0x53, +0x1ecd, 0x6e, 0x64, 0x65, 0x65, 0x3b, 0x4d, 0x1ecd, 0x6e, 0x64, 0x65, 0x3b, 0x54, 0x69, 0x75, 0x7a, 0x64, 0x65, 0x65, 0x3b, +0x57, 0x65, 0x6e, 0x65, 0x7a, 0x64, 0x65, 0x65, 0x3b, 0x54, 0x1ecd, 0x1ecd, 0x7a, 0x64, 0x65, 0x65, 0x3b, 0x46, 0x72, 0x61, +0x1ecb, 0x64, 0x65, 0x65, 0x3b, 0x53, 0x61, 0x74, 0x1ecd, 0x64, 0x65, 0x65, 0x3b, 0x57, 0x6b, 0x79, 0x3b, 0x57, 0x6b, 0x77, +0x3b, 0x57, 0x6b, 0x6c, 0x3b, 0x57, 0x74, 0x169, 0x3b, 0x57, 0x6b, 0x6e, 0x3b, 0x57, 0x74, 0x6e, 0x3b, 0x57, 0x74, 0x68, +0x3b, 0x57, 0x61, 0x20, 0x6b, 0x79, 0x75, 0x6d, 0x77, 0x61, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x77, 0x61, 0x6d, 0x62, 0x129, +0x6c, 0x129, 0x6c, 0x79, 0x61, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x65, 0x6c, 0x129, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x61, 0x74, +0x61, 0x74, 0x169, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x57, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x61, 0x6e, +0x6f, 0x3b, 0x57, 0x61, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x74, 0x68, 0x61, 0x74, 0x169, 0x3b, 0x59, 0x3b, 0x57, 0x3b, 0x45, +0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x75, 0x6e, 0x3b, 0x6d, 0x61, 0x72, +0x3b, 0x6d, 0x69, 0x65, 0x3b, 0x6a, 0x6f, 0x69, 0x3b, 0x76, 0x69, 0x6e, 0x3b, 0x73, 0x61, 0x62, 0x3b, 0x64, 0x6f, 0x6d, +0x65, 0x6e, 0x69, 0x65, 0x3b, 0x6c, 0x75, 0x6e, 0x69, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x61, 0x72, 0x73, 0x3b, 0x6d, +0x69, 0x65, 0x72, 0x63, 0x75, 0x73, 0x3b, 0x6a, 0x6f, 0x69, 0x62, 0x65, 0x3b, 0x76, 0x69, 0x6e, 0x61, 0x72, 0x73, 0x3b, +0x73, 0x61, 0x62, 0x69, 0x64, 0x65, 0x3b, 0x6b, 0x254, 0x73, 0x3b, 0x64, 0x7a, 0x6f, 0x3b, 0x62, 0x6c, 0x61, 0x3b, 0x6b, +0x75, 0x256, 0x3b, 0x79, 0x61, 0x77, 0x3b, 0x66, 0x69, 0x256, 0x3b, 0x6d, 0x65, 0x6d, 0x3b, 0x6b, 0x254, 0x73, 0x69, 0x256, +0x61, 0x3b, 0x64, 0x7a, 0x6f, 0x256, 0x61, 0x3b, 0x62, 0x6c, 0x61, 0x256, 0x61, 0x3b, 0x6b, 0x75, 0x256, 0x61, 0x3b, 0x79, +0x61, 0x77, 0x6f, 0x256, 0x61, 0x3b, 0x66, 0x69, 0x256, 0x61, 0x3b, 0x6d, 0x65, 0x6d, 0x6c, 0x65, 0x256, 0x61, 0x3b, 0x6b, +0x3b, 0x64, 0x3b, 0x62, 0x3b, 0x6b, 0x3b, 0x79, 0x3b, 0x66, 0x3b, 0x6d, 0x3b, 0x4c, 0x50, 0x3b, 0x50, 0x31, 0x3b, 0x50, +0x32, 0x3b, 0x50, 0x33, 0x3b, 0x50, 0x34, 0x3b, 0x50, 0x35, 0x3b, 0x50, 0x36, 0x3b, 0x4c, 0x101, 0x70, 0x75, 0x6c, 0x65, +0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6b, 0x61, 0x68, 0x69, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6c, 0x75, 0x61, 0x3b, 0x50, 0x6f, +0x2bb, 0x61, 0x6b, 0x6f, 0x6c, 0x75, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x68, 0x101, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6c, 0x69, +0x6d, 0x61, 0x3b, 0x50, 0x6f, 0x2bb, 0x61, 0x6f, 0x6e, 0x6f, 0x3b, 0x4c, 0x69, 0x6e, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, +0x61, 0x72, 0x3b, 0x4d, 0x69, 0x79, 0x3b, 0x48, 0x75, 0x77, 0x3b, 0x42, 0x69, 0x79, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4c, +0x69, 0x6e, 0x67, 0x67, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x4d, +0x69, 0x79, 0x65, 0x72, 0x6b, 0x75, 0x6c, 0x65, 0x73, 0x3b, 0x48, 0x75, 0x77, 0x65, 0x62, 0x65, 0x73, 0x3b, 0x42, 0x69, +0x79, 0x65, 0x72, 0x6e, 0x65, 0x73, 0x3b, 0x53, 0x61, 0x62, 0x61, 0x64, 0x6f, 0x3b, 0x53, 0x75, 0x2e, 0x3b, 0x4d, 0xe4, +0x2e, 0x3b, 0x5a, 0x69, 0x2e, 0x3b, 0x4d, 0x69, 0x2e, 0x3b, 0x44, 0x75, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, +0x2e, 0x3b, 0x53, 0x75, 0x6e, 0x6e, 0x74, 0x69, 0x67, 0x3b, 0x4d, 0xe4, 0xe4, 0x6e, 0x74, 0x69, 0x67, 0x3b, 0x5a, 0x69, +0x69, 0x73, 0x63, 0x68, 0x74, 0x69, 0x67, 0x3b, 0x4d, 0x69, 0x74, 0x74, 0x77, 0x75, 0x63, 0x68, 0x3b, 0x44, 0x75, 0x6e, +0x73, 0x63, 0x68, 0x74, 0x69, 0x67, 0x3b, 0x46, 0x72, 0x69, 0x69, 0x74, 0x69, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x63, +0x68, 0x74, 0x69, 0x67, 0x3b, 0xa46d, 0xa18f, 0x3b, 0xa18f, 0xa2cd, 0x3b, 0xa18f, 0xa44d, 0x3b, 0xa18f, 0xa315, 0x3b, 0xa18f, 0xa1d6, 0x3b, +0xa18f, 0xa26c, 0x3b, 0xa18f, 0xa0d8, 0x3b, 0xa46d, 0xa18f, 0xa44d, 0x3b, 0xa18f, 0xa282, 0xa2cd, 0x3b, 0xa18f, 0xa282, 0xa44d, 0x3b, 0xa18f, 0xa282, +0xa315, 0x3b, 0xa18f, 0xa282, 0xa1d6, 0x3b, 0xa18f, 0xa282, 0xa26c, 0x3b, 0xa18f, 0xa282, 0xa0d8, 0x3b, 0xa18f, 0x3b, 0xa2cd, 0x3b, 0xa44d, 0x3b, +0xa315, 0x3b, 0xa1d6, 0x3b, 0xa26c, 0x3b, 0xa0d8, 0x3b, 0x53, 0xfc, 0x2e, 0x3b, 0x4d, 0x61, 0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b, +0x4d, 0x69, 0x2e, 0x3b, 0x44, 0x75, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x3b, 0x53, 0xfc, 0x6e, 0x6e, +0x64, 0x61, 0x67, 0x3b, 0x4d, 0x61, 0x61, 0x6e, 0x64, 0x61, 0x67, 0x3b, 0x44, 0x69, 0x6e, 0x67, 0x73, 0x64, 0x61, 0x67, +0x3b, 0x4d, 0x69, 0x64, 0x64, 0x65, 0x77, 0x65, 0x6b, 0x65, 0x6e, 0x3b, 0x44, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x64, +0x61, 0x67, 0x3b, 0x46, 0x72, 0x65, 0x65, 0x64, 0x61, 0x67, 0x3b, 0x53, 0xfc, 0x6e, 0x6e, 0x61, 0x76, 0x65, 0x6e, 0x64, +0x3b, 0x73, 0x6f, 0x74, 0x6e, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x3b, 0x6d, 0x61, 0x14b, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x3b, +0x64, 0x75, 0x6f, 0x72, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x3b, 0x6c, 0xe1, 0x76, 0x3b, 0x73, 0x6f, 0x74, 0x6e, 0x61, 0x62, +0x65, 0x61, 0x69, 0x76, 0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0xe1, 0x72, 0x67, 0x61, 0x3b, 0x6d, 0x61, 0x14b, 0x14b, +0x65, 0x62, 0xe1, 0x72, 0x67, 0x61, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x61, 0x76, 0x61, 0x68, 0x6b, 0x6b, 0x75, 0x3b, 0x64, +0x75, 0x6f, 0x72, 0x61, 0x73, 0x64, 0x61, 0x74, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x6a, 0x61, 0x64, 0x61, 0x74, 0x3b, 0x6c, +0xe1, 0x76, 0x76, 0x61, 0x72, 0x64, 0x61, 0x74, 0x3b, 0x53, 0x3b, 0x56, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x44, 0x3b, 0x42, +0x3b, 0x4c, 0x3b, 0x73, 0x6f, 0x3b, 0x6d, 0xe1, 0x3b, 0x64, 0x69, 0x3b, 0x67, 0x61, 0x3b, 0x64, 0x75, 0x3b, 0x62, 0x65, +0x3b, 0x6c, 0xe1, 0x3b, 0x73, 0x6f, 0x74, 0x6e, 0x61, 0x62, 0x65, 0x61, 0x69, 0x76, 0x69, 0x3b, 0x6d, 0xe1, 0x6e, 0x6e, +0x6f, 0x64, 0x61, 0x74, 0x3b, 0x64, 0x69, 0x73, 0x64, 0x61, 0x74, 0x3b, 0x67, 0x61, 0x73, 0x6b, 0x61, 0x76, 0x61, 0x68, +0x6b, 0x6b, 0x75, 0x3b, 0x64, 0x75, 0x6f, 0x72, 0x61, 0x73, 0x74, 0x61, 0x74, 0x3b, 0x62, 0x65, 0x61, 0x72, 0x6a, 0x61, +0x64, 0x61, 0x74, 0x3b, 0x6c, 0xe1, 0x76, 0x76, 0x6f, 0x72, 0x64, 0x61, 0x74, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, +0x47, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x43, 0x70, 0x72, 0x3b, 0x43, 0x74, 0x74, 0x3b, 0x43, 0x6d, 0x6e, 0x3b, +0x43, 0x6d, 0x74, 0x3b, 0x41, 0x72, 0x73, 0x3b, 0x49, 0x63, 0x6d, 0x3b, 0x45, 0x73, 0x74, 0x3b, 0x43, 0x68, 0x75, 0x6d, +0x61, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x6f, 0x3b, 0x43, 0x68, 0x75, 0x6d, +0x61, 0x69, 0x6e, 0x65, 0x3b, 0x43, 0x68, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, +0x73, 0x69, 0x3b, 0x49, 0x63, 0x68, 0x75, 0x6d, 0x61, 0x3b, 0x45, 0x73, 0x61, 0x62, 0x61, 0x74, 0x6f, 0x3b, 0x43, 0x3b, +0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x45, 0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x4a, 0x69, 0x6d, 0x3b, +0x4b, 0x61, 0x77, 0x3b, 0x4b, 0x61, 0x64, 0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x4b, 0x61, 0x73, 0x3b, 0x4e, 0x67, 0x75, 0x3b, +0x49, 0x74, 0x75, 0x6b, 0x75, 0x20, 0x6a, 0x61, 0x20, 0x6a, 0x75, 0x6d, 0x77, 0x61, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, +0x75, 0x6b, 0x61, 0x20, 0x6a, 0x69, 0x6d, 0x77, 0x65, 0x72, 0x69, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, +0x20, 0x6b, 0x61, 0x77, 0x69, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x64, 0x61, 0x64, +0x75, 0x3b, 0x4b, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4b, 0x75, 0x72, 0x61, +0x6d, 0x75, 0x6b, 0x61, 0x20, 0x6b, 0x61, 0x73, 0x61, 0x6e, 0x75, 0x3b, 0x4b, 0x69, 0x66, 0x75, 0x6c, 0x61, 0x20, 0x6e, +0x67, 0x75, 0x77, 0x6f, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x64, +0x65, 0x77, 0x3b, 0x61, 0x61, 0x253, 0x3b, 0x6d, 0x61, 0x77, 0x3b, 0x6e, 0x6a, 0x65, 0x3b, 0x6e, 0x61, 0x61, 0x3b, 0x6d, +0x77, 0x64, 0x3b, 0x68, 0x62, 0x69, 0x3b, 0x64, 0x65, 0x77, 0x6f, 0x3b, 0x61, 0x61, 0x253, 0x6e, 0x64, 0x65, 0x3b, 0x6d, +0x61, 0x77, 0x62, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x6e, 0x6a, 0x65, 0x73, 0x6c, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x6e, 0x61, +0x61, 0x73, 0x61, 0x61, 0x6e, 0x64, 0x65, 0x3b, 0x6d, 0x61, 0x77, 0x6e, 0x64, 0x65, 0x3b, 0x68, 0x6f, 0x6f, 0x72, 0x65, +0x2d, 0x62, 0x69, 0x69, 0x72, 0x3b, 0x64, 0x3b, 0x61, 0x3b, 0x6d, 0x3b, 0x6e, 0x3b, 0x6e, 0x3b, 0x6d, 0x3b, 0x68, 0x3b, +0x4b, 0x4d, 0x41, 0x3b, 0x4e, 0x54, 0x54, 0x3b, 0x4e, 0x4d, 0x4e, 0x3b, 0x4e, 0x4d, 0x54, 0x3b, 0x41, 0x52, 0x54, 0x3b, +0x4e, 0x4d, 0x41, 0x3b, 0x4e, 0x4d, 0x4d, 0x3b, 0x4b, 0x69, 0x75, 0x6d, 0x69, 0x61, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, +0x74, 0x61, 0x74, 0x169, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x69, 0x6e, 0x65, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, +0x61, 0x6e, 0x61, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x74, 0x68, 0x69, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, +0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x74, 0x68, 0x69, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, +0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, 0x72, 0x65, 0x3b, 0x4b, 0x75, 0x6e, 0x3b, 0x4f, 0x6e, 0x67, 0x3b, 0x49, 0x6e, 0x65, +0x3b, 0x49, 0x6c, 0x65, 0x3b, 0x53, 0x61, 0x70, 0x3b, 0x4b, 0x77, 0x65, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, +0x65, 0x65, 0x20, 0x61, 0x72, 0x65, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x6b, 0x75, 0x6e, +0x69, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x6f, 0x6e, 0x67, 0x2019, 0x77, 0x61, 0x6e, 0x3b, +0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x69, 0x6e, 0x65, 0x74, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, +0x74, 0x20, 0x65, 0x65, 0x20, 0x69, 0x6c, 0x65, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x73, +0x61, 0x70, 0x61, 0x3b, 0x4d, 0x64, 0x65, 0x72, 0x6f, 0x74, 0x20, 0x65, 0x65, 0x20, 0x6b, 0x77, 0x65, 0x3b, 0x41, 0x3b, +0x4b, 0x3b, 0x4f, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x44, 0x69, 0x6d, 0x3b, 0x50, 0x6f, 0x73, 0x3b, +0x50, 0x69, 0x72, 0x3b, 0x54, 0x61, 0x74, 0x3b, 0x4e, 0x61, 0x69, 0x3b, 0x53, 0x68, 0x61, 0x3b, 0x53, 0x61, 0x62, 0x3b, +0x44, 0x69, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x43, 0x68, 0x69, 0x70, 0x6f, 0x73, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x70, +0x69, 0x72, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x69, 0x3b, 0x43, +0x68, 0x69, 0x73, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x53, 0x61, 0x62, 0x75, 0x64, 0x75, 0x3b, 0x44, 0x3b, 0x50, 0x3b, 0x43, +0x3b, 0x54, 0x3b, 0x4e, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0x76, 0x75, 0x3b, 0x53, 0x69, 0x62, +0x3b, 0x53, 0x69, 0x74, 0x3b, 0x53, 0x69, 0x6e, 0x3b, 0x53, 0x69, 0x68, 0x3b, 0x4d, 0x67, 0x71, 0x3b, 0x53, 0x6f, 0x6e, +0x74, 0x6f, 0x3b, 0x4d, 0x76, 0x75, 0x6c, 0x6f, 0x3b, 0x53, 0x69, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x53, 0x69, 0x74, 0x68, +0x61, 0x74, 0x68, 0x75, 0x3b, 0x53, 0x69, 0x6e, 0x65, 0x3b, 0x53, 0x69, 0x68, 0x6c, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x67, +0x71, 0x69, 0x62, 0x65, 0x6c, 0x6f, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x4d, +0x3b, 0x49, 0x6a, 0x70, 0x3b, 0x49, 0x6a, 0x74, 0x3b, 0x49, 0x6a, 0x6e, 0x3b, 0x49, 0x6a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, +0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x49, 0x6a, 0x6d, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x69, 0x3b, +0x49, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x49, +0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, +0x75, 0x6d, 0x61, 0x61, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x32, 0x3b, 0x33, 0x3b, 0x34, +0x3b, 0x35, 0x3b, 0x36, 0x3b, 0x37, 0x3b, 0x31, 0x3b, 0x2d30, 0x2d59, 0x2d30, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x3b, 0x2d30, 0x2d59, 0x2d49, +0x3b, 0x2d30, 0x2d3d, 0x2d55, 0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4e, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d39, 0x3b, 0x2d30, +0x2d59, 0x2d30, 0x2d4e, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, +0x2d3d, 0x2d55, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d59, 0x2d49, 0x2d4e, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, +0x2d49, 0x2d39, 0x2d62, 0x2d30, 0x2d59, 0x3b, 0x61, 0x73, 0x61, 0x3b, 0x61, 0x79, 0x6e, 0x3b, 0x61, 0x73, 0x69, 0x3b, 0x61, 0x6b, +0x1e5b, 0x3b, 0x61, 0x6b, 0x77, 0x3b, 0x61, 0x73, 0x69, 0x6d, 0x3b, 0x61, 0x73, 0x69, 0x1e0d, 0x3b, 0x61, 0x73, 0x61, 0x6d, +0x61, 0x73, 0x3b, 0x61, 0x79, 0x6e, 0x61, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x61, 0x6b, 0x1e5b, 0x61, +0x73, 0x3b, 0x61, 0x6b, 0x77, 0x61, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x6d, 0x77, 0x61, 0x73, 0x3b, 0x61, 0x73, 0x69, 0x1e0d, +0x79, 0x61, 0x73, 0x3b, 0x41, 0x63, 0x65, 0x3b, 0x41, 0x72, 0x69, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x41, 0x68, 0x61, 0x3b, +0x41, 0x6d, 0x68, 0x3b, 0x53, 0x65, 0x6d, 0x3b, 0x53, 0x65, 0x64, 0x3b, 0x41, 0x63, 0x65, 0x72, 0x3b, 0x41, 0x72, 0x69, +0x6d, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x3b, 0x41, 0x68, 0x61, 0x64, 0x3b, 0x41, 0x6d, 0x68, 0x61, 0x64, 0x3b, 0x53, 0x65, +0x6d, 0x3b, 0x53, 0x65, 0x64, 0x3b, 0x59, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x53, 0x3b, +0x59, 0x61, 0x6e, 0x3b, 0x53, 0x61, 0x6e, 0x3b, 0x4b, 0x72, 0x61, 0x1e0d, 0x3b, 0x4b, 0x75, 0x1e93, 0x3b, 0x53, 0x61, 0x6d, +0x3b, 0x53, 0x1e0d, 0x69, 0x73, 0x3b, 0x53, 0x61, 0x79, 0x3b, 0x59, 0x61, 0x6e, 0x61, 0x73, 0x73, 0x3b, 0x53, 0x61, 0x6e, +0x61, 0x73, 0x73, 0x3b, 0x4b, 0x72, 0x61, 0x1e0d, 0x61, 0x73, 0x73, 0x3b, 0x4b, 0x75, 0x1e93, 0x61, 0x73, 0x73, 0x3b, 0x53, +0x61, 0x6d, 0x61, 0x73, 0x73, 0x3b, 0x53, 0x1e0d, 0x69, 0x73, 0x61, 0x73, 0x73, 0x3b, 0x53, 0x61, 0x79, 0x61, 0x73, 0x73, +0x3b, 0x43, 0x3b, 0x52, 0x3b, 0x41, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x44, 0x3b, 0x53, 0x41, 0x4e, 0x3b, 0x4f, +0x52, 0x4b, 0x3b, 0x4f, 0x4b, 0x42, 0x3b, 0x4f, 0x4b, 0x53, 0x3b, 0x4f, 0x4b, 0x4e, 0x3b, 0x4f, 0x4b, 0x54, 0x3b, 0x4f, +0x4d, 0x4b, 0x3b, 0x53, 0x61, 0x6e, 0x64, 0x65, 0x3b, 0x4f, 0x72, 0x77, 0x6f, 0x6b, 0x75, 0x62, 0x61, 0x6e, 0x7a, 0x61, +0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x73, 0x68, +0x61, 0x74, 0x75, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6b, 0x61, 0x74, +0x61, 0x61, 0x6e, 0x6f, 0x3b, 0x4f, 0x72, 0x77, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67, 0x61, 0x3b, 0x53, 0x3b, 0x4b, +0x3b, 0x52, 0x3b, 0x53, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x4d, 0x3b, 0x4d, 0x75, 0x6c, 0x3b, 0x56, 0x69, 0x6c, 0x3b, 0x48, +0x69, 0x76, 0x3b, 0x48, 0x69, 0x64, 0x3b, 0x48, 0x69, 0x74, 0x3b, 0x48, 0x69, 0x68, 0x3b, 0x4c, 0x65, 0x6d, 0x3b, 0x70, +0x61, 0x20, 0x6d, 0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x73, 0x68, 0x61, 0x68, 0x75, 0x76, 0x69, +0x6c, 0x75, 0x68, 0x61, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x76, 0x69, 0x6c, 0x69, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, +0x64, 0x61, 0x74, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, 0x74, 0x61, 0x79, 0x69, 0x3b, 0x70, 0x61, 0x20, 0x68, 0x69, +0x68, 0x61, 0x6e, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x73, 0x68, 0x61, 0x68, 0x75, 0x6c, 0x65, 0x6d, 0x62, 0x65, 0x6c, 0x61, +0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x48, 0x3b, 0x48, 0x3b, 0x48, 0x3b, 0x57, 0x3b, 0x4a, 0x3b, 0x4a, 0x70, 0x69, 0x3b, 0x4a, +0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x4a, +0x6d, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0x69, 0x6c, 0x79, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, +0x75, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x75, 0x3b, +0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, +0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x3b, 0x6b, +0x61, 0x72, 0x3b, 0x6e, 0x74, 0x25b, 0x3b, 0x74, 0x61, 0x72, 0x3b, 0x61, 0x72, 0x61, 0x3b, 0x61, 0x6c, 0x61, 0x3b, 0x6a, +0x75, 0x6d, 0x3b, 0x73, 0x69, 0x62, 0x3b, 0x6b, 0x61, 0x72, 0x69, 0x3b, 0x6e, 0x74, 0x25b, 0x6e, 0x25b, 0x3b, 0x74, 0x61, +0x72, 0x61, 0x74, 0x61, 0x3b, 0x61, 0x72, 0x61, 0x62, 0x61, 0x3b, 0x61, 0x6c, 0x61, 0x6d, 0x69, 0x73, 0x61, 0x3b, 0x6a, +0x75, 0x6d, 0x61, 0x3b, 0x73, 0x69, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x41, +0x3b, 0x4a, 0x3b, 0x53, 0x3b, 0x4b, 0x6d, 0x61, 0x3b, 0x54, 0x61, 0x74, 0x3b, 0x49, 0x6e, 0x65, 0x3b, 0x54, 0x61, 0x6e, +0x3b, 0x41, 0x72, 0x6d, 0x3b, 0x4d, 0x61, 0x61, 0x3b, 0x4e, 0x4d, 0x4d, 0x3b, 0x4b, 0x69, 0x75, 0x6d, 0x69, 0x61, 0x3b, +0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4e, 0x6a, 0x75, 0x6d, 0x61, 0x69, 0x6e, 0x65, 0x3b, 0x4e, +0x6a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x74, 0x68, 0x69, 0x3b, 0x4e, 0x6a, +0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4e, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x74, 0x68, 0x69, 0x69, 0x3b, 0x4b, 0x3b, 0x4e, +0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x13c6, 0x13cd, 0x13ac, 0x3b, 0x13c9, 0x13c5, 0x13af, 0x3b, 0x13d4, +0x13b5, 0x13c1, 0x3b, 0x13e6, 0x13a2, 0x13c1, 0x3b, 0x13c5, 0x13a9, 0x13c1, 0x3b, 0x13e7, 0x13be, 0x13a9, 0x3b, 0x13c8, 0x13d5, 0x13be, 0x3b, 0x13a4, +0x13be, 0x13d9, 0x13d3, 0x13c6, 0x13cd, 0x13ac, 0x3b, 0x13a4, 0x13be, 0x13d9, 0x13d3, 0x13c9, 0x13c5, 0x13af, 0x3b, 0x13d4, 0x13b5, 0x13c1, 0x13a2, 0x13a6, +0x3b, 0x13e6, 0x13a2, 0x13c1, 0x13a2, 0x13a6, 0x3b, 0x13c5, 0x13a9, 0x13c1, 0x13a2, 0x13a6, 0x3b, 0x13e7, 0x13be, 0x13a9, 0x13b6, 0x13cd, 0x13d7, 0x3b, +0x13a4, 0x13be, 0x13d9, 0x13d3, 0x13c8, 0x13d5, 0x13be, 0x3b, 0x13c6, 0x3b, 0x13c9, 0x3b, 0x13d4, 0x3b, 0x13e6, 0x3b, 0x13c5, 0x3b, 0x13e7, 0x3b, +0x13a4, 0x3b, 0x64, 0x69, 0x6d, 0x3b, 0x6c, 0x69, 0x6e, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x65, 0x72, 0x3b, 0x7a, 0x65, +0x3b, 0x76, 0x61, 0x6e, 0x3b, 0x73, 0x61, 0x6d, 0x3b, 0x64, 0x69, 0x6d, 0x61, 0x6e, 0x73, 0x3b, 0x6c, 0x69, 0x6e, 0x64, +0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x65, 0x72, 0x6b, 0x72, 0x65, 0x64, 0x69, 0x3b, 0x7a, 0x65, 0x64, +0x69, 0x3b, 0x76, 0x61, 0x6e, 0x64, 0x72, 0x65, 0x64, 0x69, 0x3b, 0x73, 0x61, 0x6d, 0x64, 0x69, 0x3b, 0x64, 0x3b, 0x6c, +0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x7a, 0x3b, 0x76, 0x3b, 0x73, 0x3b, 0x4c, 0x6c, 0x32, 0x3b, 0x4c, 0x6c, 0x33, 0x3b, 0x4c, +0x6c, 0x34, 0x3b, 0x4c, 0x6c, 0x35, 0x3b, 0x4c, 0x6c, 0x36, 0x3b, 0x4c, 0x6c, 0x37, 0x3b, 0x4c, 0x6c, 0x31, 0x3b, 0x4c, +0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x70, 0x69, 0x6c, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, +0x20, 0x6c, 0x79, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x6e, +0x63, 0x68, 0x65, 0x63, 0x68, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x6e, 0x6e, 0x79, +0x61, 0x6e, 0x6f, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, 0x6e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, +0x20, 0x6e, 0x61, 0x20, 0x6c, 0x69, 0x6e, 0x6a, 0x69, 0x3b, 0x4c, 0x69, 0x64, 0x75, 0x76, 0x61, 0x20, 0x6c, 0x79, 0x61, +0x6e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x76, 0x69, 0x6c, 0x69, 0x3b, 0x4c, 0x69, 0x64, +0x75, 0x76, 0x61, 0x20, 0x6c, 0x69, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x3b, 0x50, 0xed, 0x69, 0x6c, 0x69, 0x3b, 0x54, 0xe1, +0x61, 0x74, 0x75, 0x3b, 0xcd, 0x6e, 0x65, 0x3b, 0x54, 0xe1, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, +0x6d, 0x3b, 0x4d, 0xf3, 0x6f, 0x73, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0xed, 0x69, 0x72, 0x69, 0x3b, 0x4a, 0x75, +0x6d, 0x61, 0x74, 0xe1, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0xed, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, +0xe1, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x61, 0x6d, 0xed, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0xe1, 0x61, +0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0xf3, 0x6f, 0x73, 0x69, 0x3b, 0x50, 0x3b, 0x54, 0x3b, 0x45, 0x3b, 0x4f, 0x3b, 0x41, +0x3b, 0x49, 0x3b, 0x4d, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x42, 0x61, 0x6c, 0x3b, 0x4c, 0x77, 0x32, 0x3b, 0x4c, 0x77, 0x33, +0x3b, 0x4c, 0x77, 0x34, 0x3b, 0x4c, 0x77, 0x35, 0x3b, 0x4c, 0x77, 0x36, 0x3b, 0x53, 0x61, 0x62, 0x62, 0x69, 0x69, 0x74, +0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x7a, 0x61, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4c, +0x77, 0x61, 0x6b, 0x75, 0x73, 0x61, 0x74, 0x75, 0x3b, 0x4c, 0x77, 0x61, 0x6b, 0x75, 0x6e, 0x61, 0x3b, 0x4c, 0x77, 0x61, +0x6b, 0x75, 0x74, 0x61, 0x61, 0x6e, 0x6f, 0x3b, 0x4c, 0x77, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67, 0x61, 0x3b, 0x53, +0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x50, 0x61, 0x20, 0x4d, 0x75, 0x6c, 0x75, +0x6e, 0x67, 0x75, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x6d, 0x6f, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, +0x69, 0x62, 0x75, 0x6c, 0x69, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x50, 0x61, +0x6c, 0x69, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x3b, 0x50, 0x61, 0x6c, 0x69, 0x63, 0x68, 0x69, 0x73, 0x61, 0x6e, 0x6f, 0x3b, +0x50, 0x61, 0x63, 0x68, 0x69, 0x62, 0x65, 0x6c, 0x75, 0x73, 0x68, 0x69, 0x3b, 0x64, 0x75, 0x6d, 0x3b, 0x73, 0x69, 0x67, +0x3b, 0x74, 0x65, 0x72, 0x3b, 0x6b, 0x75, 0x61, 0x3b, 0x6b, 0x69, 0x6e, 0x3b, 0x73, 0x65, 0x73, 0x3b, 0x73, 0x61, 0x62, +0x3b, 0x64, 0x75, 0x6d, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x73, 0x69, 0x67, 0x75, 0x6e, 0x64, 0x61, 0x2d, 0x66, 0x65, 0x72, +0x61, 0x3b, 0x74, 0x65, 0x72, 0x73, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x6b, 0x75, 0x61, 0x72, 0x74, 0x61, 0x2d, +0x66, 0x65, 0x72, 0x61, 0x3b, 0x6b, 0x69, 0x6e, 0x74, 0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x73, 0x65, 0x73, 0x74, +0x61, 0x2d, 0x66, 0x65, 0x72, 0x61, 0x3b, 0x73, 0xe1, 0x62, 0x61, 0x64, 0x75, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x54, 0x3b, +0x4b, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x4b, 0x49, 0x55, 0x3b, 0x4d, 0x52, 0x41, 0x3b, 0x57, 0x41, 0x49, 0x3b, +0x57, 0x45, 0x54, 0x3b, 0x57, 0x45, 0x4e, 0x3b, 0x57, 0x54, 0x4e, 0x3b, 0x4a, 0x55, 0x4d, 0x3b, 0x4b, 0x69, 0x75, 0x6d, +0x69, 0x61, 0x3b, 0x4d, 0x75, 0x72, 0x61, 0x6d, 0x75, 0x6b, 0x6f, 0x3b, 0x57, 0x61, 0x69, 0x72, 0x69, 0x3b, 0x57, 0x65, +0x74, 0x68, 0x61, 0x74, 0x75, 0x3b, 0x57, 0x65, 0x6e, 0x61, 0x3b, 0x57, 0x65, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4a, 0x75, +0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x4a, +0x3b, 0x4b, 0x74, 0x73, 0x3b, 0x4b, 0x6f, 0x74, 0x3b, 0x4b, 0x6f, 0x6f, 0x3b, 0x4b, 0x6f, 0x73, 0x3b, 0x4b, 0x6f, 0x61, +0x3b, 0x4b, 0x6f, 0x6d, 0x3b, 0x4b, 0x6f, 0x6c, 0x3b, 0x4b, 0x6f, 0x74, 0x69, 0x73, 0x61, 0x70, 0x3b, 0x4b, 0x6f, 0x74, +0x61, 0x61, 0x69, 0x3b, 0x4b, 0x6f, 0x61, 0x65, 0x6e, 0x67, 0x2019, 0x3b, 0x4b, 0x6f, 0x73, 0x6f, 0x6d, 0x6f, 0x6b, 0x3b, +0x4b, 0x6f, 0x61, 0x6e, 0x67, 0x2019, 0x77, 0x61, 0x6e, 0x3b, 0x4b, 0x6f, 0x6d, 0x75, 0x75, 0x74, 0x3b, 0x4b, 0x6f, 0x6c, +0x6f, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4f, 0x3b, 0x53, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4c, 0x3b, 0x53, 0x6f, 0x6e, 0x3b, +0x4d, 0x61, 0x3b, 0x44, 0x65, 0x3b, 0x57, 0x75, 0x3b, 0x44, 0x6f, 0x3b, 0x46, 0x72, 0x3b, 0x53, 0x61, 0x74, 0x3b, 0x53, +0x6f, 0x6e, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x6e, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, +0x65, 0x73, 0x3b, 0x44, 0x65, 0x6e, 0x73, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x57, 0x75, 0x6e, 0x73, +0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x44, 0x6f, 0x6e, 0x64, 0x65, 0x72, 0x74, 0x61, 0x78, 0x74, 0x73, +0x65, 0x65, 0x73, 0x3b, 0x46, 0x72, 0x61, 0x69, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x53, 0x61, 0x74, +0x65, 0x72, 0x74, 0x61, 0x78, 0x74, 0x73, 0x65, 0x65, 0x73, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x57, 0x3b, 0x44, +0x3b, 0x46, 0x3b, 0x41, 0x3b, 0x53, 0x75, 0x2e, 0x3b, 0x4d, 0x6f, 0x2e, 0x3b, 0x44, 0x69, 0x2e, 0x3b, 0x4d, 0x65, 0x2e, +0x3b, 0x44, 0x75, 0x2e, 0x3b, 0x46, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x2e, 0x3b, 0x53, 0x75, 0x6e, 0x6e, 0x64, 0x61, 0x61, +0x63, 0x68, 0x3b, 0x4d, 0x6f, 0x68, 0x6e, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x44, 0x69, 0x6e, 0x6e, 0x73, 0x64, 0x61, +0x61, 0x63, 0x68, 0x3b, 0x4d, 0x65, 0x74, 0x77, 0x6f, 0x63, 0x68, 0x3b, 0x44, 0x75, 0x6e, 0x6e, 0x65, 0x72, 0x73, 0x64, +0x61, 0x61, 0x63, 0x68, 0x3b, 0x46, 0x72, 0x69, 0x69, 0x64, 0x61, 0x61, 0x63, 0x68, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x64, +0x61, 0x61, 0x63, 0x68, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, 0xed, 0x6c, 0xed, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, +0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0xe1, 0x6e, 0x254, 0x3b, 0x41, +0x6c, 0x61, 0xe1, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0xe1, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0xf3, +0x73, 0x69, 0x3b, 0x53, 0x61, 0x62, 0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x3b, 0x4b, 0x75, 0x62, 0x69, 0x3b, 0x4b, 0x75, +0x73, 0x61, 0x3b, 0x4b, 0x75, 0x6e, 0x61, 0x3b, 0x4b, 0x75, 0x74, 0x61, 0x3b, 0x4d, 0x75, 0x6b, 0x61, 0x3b, 0x53, 0x61, +0x62, 0x69, 0x69, 0x74, 0x69, 0x3b, 0x42, 0x61, 0x6c, 0x61, 0x7a, 0x61, 0x3b, 0x4f, 0x77, 0x6f, 0x6b, 0x75, 0x62, 0x69, +0x6c, 0x69, 0x3b, 0x4f, 0x77, 0x6f, 0x6b, 0x75, 0x73, 0x61, 0x74, 0x75, 0x3b, 0x4f, 0x6c, 0x6f, 0x6b, 0x75, 0x6e, 0x61, +0x3b, 0x4f, 0x6c, 0x6f, 0x6b, 0x75, 0x74, 0x61, 0x61, 0x6e, 0x75, 0x3b, 0x4f, 0x6c, 0x6f, 0x6d, 0x75, 0x6b, 0x61, 0x61, +0x67, 0x61, 0x3b, 0x53, 0x3b, 0x42, 0x3b, 0x42, 0x3b, 0x53, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x4a, 0x32, 0x3b, +0x4a, 0x33, 0x3b, 0x4a, 0x34, 0x3b, 0x4a, 0x35, 0x3b, 0x41, 0x6c, 0x3b, 0x49, 0x6a, 0x3b, 0x4a, 0x31, 0x3b, 0x4a, 0x75, +0x6d, 0x61, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, +0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, 0x75, 0x72, 0x77, 0x61, 0x20, 0x77, +0x61, 0x20, 0x4b, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4d, 0x75, 0x72, 0x77, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x61, 0x74, +0x61, 0x6e, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x4a, 0x70, 0x69, 0x3b, 0x4a, 0x74, 0x74, +0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x6d, 0x3b, 0x4a, 0x6d, 0x6f, +0x3b, 0x4a, 0x75, 0x6d, 0x3b, 0x42, 0x61, 0x72, 0x3b, 0x41, 0x61, 0x72, 0x3b, 0x55, 0x6e, 0x69, 0x3b, 0x55, 0x6e, 0x67, +0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x65, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x4e, +0x61, 0x6b, 0x61, 0x65, 0x62, 0x61, 0x72, 0x61, 0x73, 0x61, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x4e, +0x61, 0x6b, 0x61, 0x75, 0x6e, 0x69, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x75, 0x6e, 0x67, 0x2019, 0x6f, 0x6e, 0x3b, 0x4e, 0x61, +0x6b, 0x61, 0x6b, 0x61, 0x6e, 0x79, 0x3b, 0x4e, 0x61, 0x6b, 0x61, 0x73, 0x61, 0x62, 0x69, 0x74, 0x69, 0x3b, 0x4a, 0x3b, +0x42, 0x3b, 0x41, 0x3b, 0x55, 0x3b, 0x55, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x41, 0x74, 0x69, 0x3b, +0x41, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x3b, 0x41, 0x6c, 0x6d, 0x3b, 0x41, 0x6c, 0x6a, 0x3b, 0x41, 0x73, 0x73, 0x3b, +0x41, 0x6c, 0x68, 0x61, 0x64, 0x69, 0x3b, 0x41, 0x74, 0x69, 0x6e, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c, 0x61, 0x74, 0x61, +0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x61, 0x3b, 0x41, 0x6c, +0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x41, 0x73, 0x73, 0x61, 0x62, 0x64, 0x75, 0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4c, +0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x53, 0x3b, 0x4a, 0x4d, 0x50, 0x3b, 0x57, 0x55, 0x54, 0x3b, 0x54, 0x41, 0x52, 0x3b, 0x54, +0x41, 0x44, 0x3b, 0x54, 0x41, 0x4e, 0x3b, 0x54, 0x41, 0x42, 0x3b, 0x4e, 0x47, 0x53, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x70, +0x69, 0x6c, 0x3b, 0x57, 0x75, 0x6f, 0x6b, 0x20, 0x54, 0x69, 0x63, 0x68, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x72, +0x69, 0x79, 0x6f, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x64, 0x65, 0x6b, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, +0x6e, 0x67, 0x2019, 0x77, 0x65, 0x6e, 0x3b, 0x54, 0x69, 0x63, 0x68, 0x20, 0x41, 0x62, 0x69, 0x63, 0x68, 0x3b, 0x4e, 0x67, +0x65, 0x73, 0x6f, 0x3b, 0x4a, 0x3b, 0x57, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4e, 0x3b, 0x41, 0x73, +0x61, 0x3b, 0x41, 0x79, 0x6e, 0x3b, 0x41, 0x73, 0x6e, 0x3b, 0x41, 0x6b, 0x72, 0x3b, 0x41, 0x6b, 0x77, 0x3b, 0x41, 0x73, +0x6d, 0x3b, 0x41, 0x73, 0x1e0d, 0x3b, 0x41, 0x73, 0x61, 0x6d, 0x61, 0x73, 0x3b, 0x41, 0x79, 0x6e, 0x61, 0x73, 0x3b, 0x41, +0x73, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x41, 0x6b, 0x72, 0x61, 0x73, 0x3b, 0x41, 0x6b, 0x77, 0x61, 0x73, 0x3b, 0x41, 0x73, +0x69, 0x6d, 0x77, 0x61, 0x73, 0x3b, 0x41, 0x73, 0x69, 0x1e0d, 0x79, 0x61, 0x73, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, +0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x41, 0x74, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x3b, +0x41, 0x6c, 0x61, 0x3b, 0x41, 0x6c, 0x6d, 0x3b, 0x41, 0x6c, 0x7a, 0x3b, 0x41, 0x73, 0x69, 0x3b, 0x41, 0x6c, 0x68, 0x61, +0x64, 0x69, 0x3b, 0x41, 0x74, 0x69, 0x6e, 0x6e, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c, 0x61, 0x61, 0x74, 0x61, 0x3b, 0x41, +0x6c, 0x61, 0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x69, 0x73, 0x61, 0x3b, 0x41, 0x6c, 0x7a, 0x75, +0x6d, 0x61, 0x3b, 0x41, 0x73, 0x69, 0x62, 0x74, 0x69, 0x3b, 0x4a, 0x70, 0x69, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6d, +0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x4a, 0x75, +0x6d, 0x61, 0x61, 0x70, 0x69, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, +0x61, 0x61, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, +0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x6d, 0x6f, 0x73, 0x69, +0x3b, 0x32, 0x3b, 0x33, 0x3b, 0x34, 0x3b, 0x35, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x31, 0x3b, 0x930, 0x92c, 0x93f, 0x3b, 0x938, +0x92e, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x3b, 0x92c, 0x941, 0x926, 0x3b, 0x92c, 0x93f, 0x938, 0x925, 0x93f, 0x3b, 0x938, 0x941, 0x916, +0x941, 0x930, 0x3b, 0x938, 0x941, 0x928, 0x93f, 0x3b, 0x930, 0x92c, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x92e, 0x92c, 0x93e, 0x930, +0x3b, 0x92e, 0x902, 0x917, 0x932, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x926, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x93f, 0x938, 0x925, +0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x941, 0x916, 0x941, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x941, 0x928, 0x93f, 0x92c, 0x93e, +0x930, 0x3b, 0x930, 0x3b, 0x938, 0x3b, 0x92e, 0x902, 0x3b, 0x92c, 0x941, 0x3b, 0x92c, 0x93f, 0x3b, 0x938, 0x941, 0x3b, 0x938, 0x941, +0x3b, 0x43a, 0x4c0, 0x438, 0x3b, 0x43e, 0x440, 0x3b, 0x448, 0x438, 0x3b, 0x43a, 0x445, 0x430, 0x3b, 0x435, 0x430, 0x3b, 0x43f, 0x4c0, +0x435, 0x3b, 0x448, 0x443, 0x43e, 0x3b, 0x43a, 0x4c0, 0x438, 0x440, 0x430, 0x3b, 0x43e, 0x440, 0x448, 0x43e, 0x442, 0x3b, 0x448, 0x438, +0x43d, 0x430, 0x440, 0x430, 0x3b, 0x43a, 0x445, 0x430, 0x430, 0x440, 0x430, 0x3b, 0x435, 0x430, 0x440, 0x430, 0x3b, 0x43f, 0x4c0, 0x435, +0x440, 0x430, 0x441, 0x43a, 0x430, 0x3b, 0x448, 0x443, 0x43e, 0x442, 0x3b, 0x43a, 0x4c0, 0x3b, 0x43e, 0x3b, 0x448, 0x3b, 0x43a, 0x445, +0x3b, 0x435, 0x3b, 0x43f, 0x4c0, 0x3b, 0x448, 0x3b, 0x4c, 0x75, 0x6d, 0x3b, 0x4e, 0x6b, 0x6f, 0x3b, 0x4e, 0x64, 0x79, 0x3b, +0x4e, 0x64, 0x67, 0x3b, 0x4e, 0x6a, 0x77, 0x3b, 0x4e, 0x67, 0x76, 0x3b, 0x4c, 0x75, 0x62, 0x3b, 0x4c, 0x75, 0x6d, 0x69, +0x6e, 0x67, 0x75, 0x3b, 0x4e, 0x6b, 0x6f, 0x64, 0x79, 0x61, 0x3b, 0x4e, 0x64, 0xe0, 0x61, 0x79, 0xe0, 0x3b, 0x4e, 0x64, +0x61, 0x6e, 0x67, 0xf9, 0x3b, 0x4e, 0x6a, 0xf2, 0x77, 0x61, 0x3b, 0x4e, 0x67, 0xf2, 0x76, 0x79, 0x61, 0x3b, 0x4c, 0x75, +0x62, 0x69, 0x6e, 0x67, 0x75, 0x3b, 0x4c, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4c, 0x3b, +0x53, 0x6f, 0x6e, 0x3b, 0x4d, 0xe9, 0x69, 0x3b, 0x44, 0xeb, 0x6e, 0x3b, 0x4d, 0xeb, 0x74, 0x3b, 0x44, 0x6f, 0x6e, 0x3b, +0x46, 0x72, 0x65, 0x3b, 0x53, 0x61, 0x6d, 0x3b, 0x53, 0x6f, 0x6e, 0x6e, 0x64, 0x65, 0x67, 0x3b, 0x4d, 0xe9, 0x69, 0x6e, +0x64, 0x65, 0x67, 0x3b, 0x44, 0xeb, 0x6e, 0x73, 0x63, 0x68, 0x64, 0x65, 0x67, 0x3b, 0x4d, 0xeb, 0x74, 0x74, 0x77, 0x6f, +0x63, 0x68, 0x3b, 0x44, 0x6f, 0x6e, 0x6e, 0x65, 0x73, 0x63, 0x68, 0x64, 0x65, 0x67, 0x3b, 0x46, 0x72, 0x65, 0x69, 0x64, +0x65, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x73, 0x63, 0x68, 0x64, 0x65, 0x67, 0x3b, 0x53, 0x6f, 0x6e, 0x2e, 0x3b, 0x4d, 0xe9, +0x69, 0x2e, 0x3b, 0x44, 0xeb, 0x6e, 0x2e, 0x3b, 0x4d, 0xeb, 0x74, 0x2e, 0x3b, 0x44, 0x6f, 0x6e, 0x2e, 0x3b, 0x46, 0x72, +0x65, 0x2e, 0x3b, 0x53, 0x61, 0x6d, 0x2e, 0x3b, 0x6e, 0x74, 0x73, 0x3b, 0x6b, 0x70, 0x61, 0x3b, 0x67, 0x68, 0x254, 0x3b, +0x74, 0x254, 0x6d, 0x3b, 0x75, 0x6d, 0x65, 0x3b, 0x67, 0x68, 0x268, 0x3b, 0x64, 0x7a, 0x6b, 0x3b, 0x74, 0x73, 0x75, 0x294, +0x6e, 0x74, 0x73, 0x268, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x6b, 0x70, 0xe0, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x67, +0x68, 0x254, 0x65, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x74, 0x254, 0x300, 0x6d, 0x6c, 0xf2, 0x3b, 0x74, 0x73, 0x75, 0x294, +0x75, 0x6d, 0xe8, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x75, 0x67, 0x68, 0x268, 0x302, 0x6d, 0x3b, 0x74, 0x73, 0x75, 0x294, 0x6e, +0x64, 0x7a, 0x268, 0x6b, 0x254, 0x294, 0x254, 0x3b, 0x6e, 0x3b, 0x6b, 0x3b, 0x67, 0x3b, 0x74, 0x3b, 0x75, 0x3b, 0x67, 0x3b, +0x64, 0x3b, 0x6e, 0x254, 0x79, 0x3b, 0x6e, 0x6a, 0x61, 0x3b, 0x75, 0x75, 0x6d, 0x3b, 0x14b, 0x67, 0x65, 0x3b, 0x6d, 0x62, +0x254, 0x3b, 0x6b, 0x254, 0x254, 0x3b, 0x6a, 0x6f, 0x6e, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6e, 0x254, 0x302, 0x79, 0x3b, +0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6e, 0x6a, 0x61, 0x14b, 0x67, 0x75, 0x6d, 0x62, 0x61, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, +0xfb, 0x6d, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x14b, 0x67, 0xea, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6d, 0x62, 0x254, +0x6b, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6b, 0x254, 0x254, 0x3b, 0x14b, 0x67, 0x77, 0xe0, 0x20, 0x6a, 0xf4, 0x6e, 0x3b, +0x6e, 0x3b, 0x6e, 0x3b, 0x75, 0x3b, 0x14b, 0x3b, 0x6d, 0x3b, 0x6b, 0x3b, 0x6a, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x64, 0x69, +0x3b, 0x41, 0x74, 0x69, 0x6e, 0x6e, 0x69, 0x3b, 0x41, 0x74, 0x61, 0x6c, 0x61, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, +0x72, 0x62, 0x61, 0x3b, 0x41, 0x6c, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x41, 0x6c, 0x7a, 0x75, 0x6d, 0x61, 0x3b, +0x41, 0x73, 0x69, 0x62, 0x74, 0x69, 0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x53, +0x3b, 0xe9, 0x74, 0x3b, 0x6d, 0x254, 0x301, 0x73, 0x3b, 0x6b, 0x77, 0x61, 0x3b, 0x6d, 0x75, 0x6b, 0x3b, 0x14b, 0x67, 0x69, +0x3b, 0x257, 0xf3, 0x6e, 0x3b, 0x65, 0x73, 0x61, 0x3b, 0xe9, 0x74, 0x69, 0x3b, 0x6d, 0x254, 0x301, 0x73, 0xfa, 0x3b, 0x6b, +0x77, 0x61, 0x73, 0xfa, 0x3b, 0x6d, 0x75, 0x6b, 0x254, 0x301, 0x73, 0xfa, 0x3b, 0x14b, 0x67, 0x69, 0x73, 0xfa, 0x3b, 0x257, +0xf3, 0x6e, 0x25b, 0x73, 0xfa, 0x3b, 0x65, 0x73, 0x61, 0x253, 0x61, 0x73, 0xfa, 0x3b, 0x65, 0x3b, 0x6d, 0x3b, 0x6b, 0x3b, +0x6d, 0x3b, 0x14b, 0x3b, 0x257, 0x3b, 0x65, 0x3b, 0x44, 0x69, 0x6d, 0x3b, 0x54, 0x65, 0x6e, 0x3b, 0x54, 0x61, 0x6c, 0x3b, +0x41, 0x6c, 0x61, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x41, 0x72, 0x6a, 0x3b, 0x53, 0x69, 0x62, 0x3b, 0x44, 0x69, 0x6d, 0x61, +0x73, 0x3b, 0x54, 0x65, 0x6e, 0x65, 0x14b, 0x3b, 0x54, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x41, 0x6c, 0x61, 0x72, 0x62, +0x61, 0x79, 0x3b, 0x41, 0x72, 0x61, 0x6d, 0x69, 0x73, 0x61, 0x79, 0x3b, 0x41, 0x72, 0x6a, 0x75, 0x6d, 0x61, 0x3b, 0x53, +0x69, 0x62, 0x69, 0x74, 0x69, 0x3b, 0x44, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x53, 0x3b, +0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x3b, 0x73, 0x6d, 0x62, 0x3b, 0x73, 0x6d, 0x6c, 0x3b, 0x73, 0x6d, +0x6e, 0x3b, 0x66, 0xfa, 0x6c, 0x3b, 0x73, 0xe9, 0x72, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x3b, 0x6d, 0x254, 0x301, +0x6e, 0x64, 0x69, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x62, +0x25b, 0x30c, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x6c, 0x25b, +0x301, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x259, 0x6c, 0xfa, 0x20, 0x6d, 0x259, 0x301, 0x6e, 0x79, 0x69, +0x3b, 0x66, 0xfa, 0x6c, 0x61, 0x64, 0xe9, 0x3b, 0x73, 0xe9, 0x72, 0x61, 0x64, 0xe9, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x73, +0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x66, 0x3b, 0x73, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6c, 0x1dd, 0x6e, 0x3b, 0x6d, 0x61, +0x61, 0x3b, 0x6d, 0x25b, 0x6b, 0x3b, 0x6a, 0x1dd, 0x1dd, 0x3b, 0x6a, 0xfa, 0x6d, 0x3b, 0x73, 0x61, 0x6d, 0x3b, 0x73, 0x254, +0x301, 0x6e, 0x64, 0x1dd, 0x3b, 0x6c, 0x1dd, 0x6e, 0x64, 0xed, 0x3b, 0x6d, 0x61, 0x61, 0x64, 0xed, 0x3b, 0x6d, 0x25b, 0x6b, +0x72, 0x25b, 0x64, 0xed, 0x3b, 0x6a, 0x1dd, 0x1dd, 0x64, 0xed, 0x3b, 0x6a, 0xfa, 0x6d, 0x62, 0xe1, 0x3b, 0x73, 0x61, 0x6d, +0x64, 0xed, 0x3b, 0x73, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6a, 0x3b, 0x6a, 0x3b, 0x73, 0x3b, 0x53, 0x61, 0x62, +0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x49, 0x6a, 0x75, +0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x53, 0x61, 0x62, 0x61, 0x74, 0x6f, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, +0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x72, +0x61, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, +0x6f, 0x73, 0x69, 0x3b, 0x53, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x3b, 0x43, 0x79, +0x61, 0x3b, 0x43, 0x6c, 0x61, 0x3b, 0x43, 0x7a, 0x69, 0x3b, 0x43, 0x6b, 0x6f, 0x3b, 0x43, 0x6b, 0x61, 0x3b, 0x43, 0x67, +0x61, 0x3b, 0x43, 0x7a, 0x65, 0x3b, 0x43, 0x6f, 0x6d, 0x2019, 0x79, 0x61, 0x6b, 0x6b, 0x65, 0x3b, 0x43, 0x6f, 0x6d, 0x6c, +0x61, 0x61, 0x257, 0x69, 0x69, 0x3b, 0x43, 0x6f, 0x6d, 0x7a, 0x79, 0x69, 0x69, 0x257, 0x69, 0x69, 0x3b, 0x43, 0x6f, 0x6d, +0x6b, 0x6f, 0x6c, 0x6c, 0x65, 0x3b, 0x43, 0x6f, 0x6d, 0x6b, 0x61, 0x6c, 0x64, 0x1dd, 0x253, 0x6c, 0x69, 0x69, 0x3b, 0x43, +0x6f, 0x6d, 0x67, 0x61, 0x69, 0x73, 0x75, 0x75, 0x3b, 0x43, 0x6f, 0x6d, 0x7a, 0x79, 0x65, 0x253, 0x73, 0x75, 0x75, 0x3b, +0x59, 0x3b, 0x4c, 0x3b, 0x5a, 0x3b, 0x4f, 0x3b, 0x41, 0x3b, 0x47, 0x3b, 0x45, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x3b, 0x6d, +0x254, 0x301, 0x6e, 0x3b, 0x73, 0x6d, 0x62, 0x3b, 0x73, 0x6d, 0x6c, 0x3b, 0x73, 0x6d, 0x6e, 0x3b, 0x6d, 0x62, 0x73, 0x3b, +0x73, 0x61, 0x73, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x3b, 0x6d, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x3b, 0x73, 0x254, +0x301, 0x6e, 0x64, 0x254, 0x20, 0x6d, 0x61, 0x66, 0xfa, 0x20, 0x6d, 0xe1, 0x62, 0x61, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, +0x254, 0x20, 0x6d, 0x61, 0x66, 0xfa, 0x20, 0x6d, 0xe1, 0x6c, 0x61, 0x6c, 0x3b, 0x73, 0x254, 0x301, 0x6e, 0x64, 0x254, 0x20, +0x6d, 0x61, 0x66, 0xfa, 0x20, 0x6d, 0xe1, 0x6e, 0x61, 0x3b, 0x6d, 0x61, 0x62, 0xe1, 0x67, 0xe1, 0x20, 0x6d, 0xe1, 0x20, +0x73, 0x75, 0x6b, 0x75, 0x6c, 0x3b, 0x73, 0xe1, 0x73, 0x61, 0x64, 0x69, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x73, +0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x43, 0xe4, 0x14b, 0x3b, 0x4a, 0x69, 0x65, 0x63, 0x3b, 0x52, 0x25b, 0x77, 0x3b, +0x44, 0x69, 0x254, 0x331, 0x6b, 0x3b, 0x14a, 0x75, 0x61, 0x61, 0x6e, 0x3b, 0x44, 0x68, 0x69, 0x65, 0x65, 0x63, 0x3b, 0x42, +0xe4, 0x6b, 0x25b, 0x6c, 0x3b, 0x43, 0xe4, 0x14b, 0x20, 0x6b, 0x75, 0x254, 0x74, 0x68, 0x3b, 0x4a, 0x69, 0x65, 0x63, 0x20, +0x6c, 0x61, 0x331, 0x74, 0x3b, 0x52, 0x25b, 0x77, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x44, 0x69, 0x254, 0x331, 0x6b, +0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x14a, 0x75, 0x61, 0x61, 0x6e, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x44, +0x68, 0x69, 0x65, 0x65, 0x63, 0x20, 0x6c, 0xe4, 0x74, 0x6e, 0x69, 0x3b, 0x42, 0xe4, 0x6b, 0x25b, 0x6c, 0x20, 0x6c, 0xe4, +0x74, 0x6e, 0x69, 0x3b, 0x43, 0x3b, 0x4a, 0x3b, 0x52, 0x3b, 0x44, 0x3b, 0x14a, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x431, 0x441, +0x3b, 0x431, 0x43d, 0x3b, 0x43e, 0x43f, 0x3b, 0x441, 0x44d, 0x3b, 0x447, 0x43f, 0x3b, 0x431, 0x44d, 0x3b, 0x441, 0x431, 0x3b, 0x431, +0x430, 0x441, 0x43a, 0x44b, 0x4bb, 0x44b, 0x430, 0x43d, 0x43d, 0x44c, 0x430, 0x3b, 0x431, 0x44d, 0x43d, 0x438, 0x434, 0x438, 0x44d, 0x43d, +0x43d, 0x44c, 0x438, 0x43a, 0x3b, 0x43e, 0x43f, 0x442, 0x443, 0x43e, 0x440, 0x443, 0x43d, 0x43d, 0x44c, 0x443, 0x43a, 0x3b, 0x441, 0x44d, +0x440, 0x44d, 0x434, 0x44d, 0x3b, 0x447, 0x44d, 0x43f, 0x43f, 0x438, 0x44d, 0x440, 0x3b, 0x411, 0x44d, 0x44d, 0x442, 0x438, 0x4a5, 0x441, +0x44d, 0x3b, 0x441, 0x443, 0x431, 0x443, 0x43e, 0x442, 0x430, 0x3b, 0x411, 0x3b, 0x411, 0x3b, 0x41e, 0x3b, 0x421, 0x3b, 0x427, 0x3b, +0x411, 0x3b, 0x421, 0x3b, 0x4d, 0x75, 0x6c, 0x3b, 0x4a, 0x74, 0x74, 0x3b, 0x4a, 0x6e, 0x6e, 0x3b, 0x4a, 0x74, 0x6e, 0x3b, +0x41, 0x6c, 0x68, 0x3b, 0x49, 0x6a, 0x75, 0x3b, 0x4a, 0x6d, 0x6f, 0x3b, 0x4d, 0x75, 0x6c, 0x75, 0x6e, 0x67, 0x75, 0x3b, +0x4a, 0x75, 0x6d, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6e, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6d, +0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x41, 0x6c, 0x61, 0x68, 0x61, 0x6d, 0x69, 0x73, 0x69, 0x3b, 0x49, 0x6a, 0x75, 0x6d, +0x61, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x6d, 0x6f, 0x73, 0x69, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, +0x41, 0x3b, 0x49, 0x3b, 0x4a, 0x3b, 0xa55e, 0xa54c, 0xa535, 0x3b, 0xa5f3, 0xa5e1, 0xa609, 0x3b, 0xa55a, 0xa55e, 0xa55a, 0x3b, 0xa549, 0xa55e, +0xa552, 0x3b, 0xa549, 0xa524, 0xa546, 0xa562, 0x3b, 0xa549, 0xa524, 0xa540, 0xa56e, 0x3b, 0xa53b, 0xa52c, 0xa533, 0x3b, 0x6c, 0x61, 0x68, 0x61, +0x64, 0x69, 0x3b, 0x74, 0x25b, 0x25b, 0x6e, 0x25b, 0x25b, 0x3b, 0x74, 0x61, 0x6c, 0x61, 0x74, 0x61, 0x3b, 0x61, 0x6c, 0x61, +0x62, 0x61, 0x3b, 0x61, 0x69, 0x6d, 0x69, 0x73, 0x61, 0x3b, 0x61, 0x69, 0x6a, 0x69, 0x6d, 0x61, 0x3b, 0x73, 0x69, 0x253, +0x69, 0x74, 0x69, 0x3b, 0x53, 0x75, 0x6e, 0x3b, 0x4d, 0xe4, 0x6e, 0x3b, 0x5a, 0x69, 0x161, 0x3b, 0x4d, 0x69, 0x74, 0x3b, +0x46, 0x72, 0xf3, 0x3b, 0x46, 0x72, 0x69, 0x3b, 0x53, 0x61, 0x6d, 0x3b, 0x53, 0x75, 0x6e, 0x6e, 0x74, 0x61, 0x67, 0x3b, +0x4d, 0xe4, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x5a, 0x69, 0x161, 0x74, 0x61, 0x67, 0x3b, 0x4d, 0x69, 0x74, 0x74, 0x77, 0x75, +0x10d, 0x3b, 0x46, 0x72, 0xf3, 0x6e, 0x74, 0x61, 0x67, 0x3b, 0x46, 0x72, 0x69, 0x74, 0x61, 0x67, 0x3b, 0x53, 0x61, 0x6d, +0x161, 0x74, 0x61, 0x67, 0x3b, 0x53, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x4d, 0x3b, 0x46, 0x3b, 0x46, 0x3b, 0x53, 0x3b, 0x73, +0x64, 0x3b, 0x6d, 0x64, 0x3b, 0x6d, 0x77, 0x3b, 0x65, 0x74, 0x3b, 0x6b, 0x6c, 0x3b, 0x66, 0x6c, 0x3b, 0x73, 0x73, 0x3b, +0x73, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x25b, 0x3b, 0x6d, 0xf3, 0x6e, 0x64, 0x69, 0x65, 0x3b, 0x6d, 0x75, 0xe1, 0x6e, 0x79, +0xe1, 0x14b, 0x6d, 0xf3, 0x6e, 0x64, 0x69, 0x65, 0x3b, 0x6d, 0x65, 0x74, 0xfa, 0x6b, 0x70, 0xed, 0xe1, 0x70, 0x25b, 0x3b, +0x6b, 0xfa, 0x70, 0xe9, 0x6c, 0x69, 0x6d, 0x65, 0x74, 0xfa, 0x6b, 0x70, 0x69, 0x61, 0x70, 0x25b, 0x3b, 0x66, 0x65, 0x6c, +0xe9, 0x74, 0x65, 0x3b, 0x73, 0xe9, 0x73, 0x65, 0x6c, 0xe9, 0x3b, 0x73, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x65, 0x3b, 0x6b, +0x3b, 0x66, 0x3b, 0x73, 0x3b, 0x64, 0x6f, 0x6d, 0x3b, 0x6c, 0x6c, 0x75, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6d, 0x69, 0xe9, +0x3b, 0x78, 0x75, 0x65, 0x3b, 0x76, 0x69, 0x65, 0x3b, 0x73, 0xe1, 0x62, 0x3b, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x75, +0x3b, 0x6c, 0x6c, 0x75, 0x6e, 0x65, 0x73, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x6d, 0x69, 0xe9, 0x72, 0x63, +0x6f, 0x6c, 0x65, 0x73, 0x3b, 0x78, 0x75, 0x65, 0x76, 0x65, 0x73, 0x3b, 0x76, 0x69, 0x65, 0x6e, 0x72, 0x65, 0x73, 0x3b, +0x73, 0xe1, 0x62, 0x61, 0x64, 0x75, 0x3b, 0x53, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0x4d, 0x254, 0x301, 0x6e, 0x64, 0x69, +0x3b, 0xc1, 0x70, 0x74, 0x61, 0x20, 0x4d, 0x254, 0x301, 0x6e, 0x64, 0x69, 0x3b, 0x57, 0x25b, 0x301, 0x6e, 0x25b, 0x73, 0x25b, +0x64, 0x25b, 0x3b, 0x54, 0x254, 0x301, 0x73, 0x25b, 0x64, 0x25b, 0x3b, 0x46, 0x25b, 0x6c, 0xe2, 0x79, 0x25b, 0x64, 0x25b, 0x3b, +0x53, 0xe1, 0x73, 0x69, 0x64, 0x25b, 0x3b, 0x53, 0x254, 0x301, 0x3b, 0x4d, 0x254, 0x301, 0x3b, 0xc1, 0x4d, 0x3b, 0x57, 0x25b, +0x301, 0x3b, 0x54, 0x254, 0x301, 0x3b, 0x46, 0x25b, 0x3b, 0x53, 0xe1, 0x3b, 0x73, 0x254, 0x6e, 0x64, 0x69, 0x3b, 0x6c, 0x75, +0x6e, 0x64, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x64, 0x69, 0x3b, 0x6d, 0x25b, 0x72, 0x6b, 0x25b, 0x72, 0x25b, 0x64, 0x69, 0x3b, +0x79, 0x65, 0x64, 0x69, 0x3b, 0x76, 0x61, 0x14b, 0x64, 0x25b, 0x72, 0x25b, 0x64, 0x69, 0x3b, 0x6d, 0x254, 0x6e, 0x254, 0x20, +0x73, 0x254, 0x6e, 0x64, 0x69, 0x3b, 0x73, 0x6f, 0x3b, 0x6c, 0x75, 0x3b, 0x6d, 0x61, 0x3b, 0x6d, 0x25b, 0x3b, 0x79, 0x65, +0x3b, 0x76, 0x61, 0x3b, 0x6d, 0x73, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x31, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x32, +0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x33, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x34, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, +0x35, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x36, 0x3b, 0x41, 0x6e, 0x65, 0x67, 0x20, 0x37, 0x3b, 0x41, 0x31, 0x3b, 0x41, +0x32, 0x3b, 0x41, 0x33, 0x3b, 0x41, 0x34, 0x3b, 0x41, 0x35, 0x3b, 0x41, 0x36, 0x3b, 0x41, 0x37, 0x3b, 0x6c, 0x79, 0x25b, +0x2bc, 0x25b, 0x301, 0x20, 0x73, 0x1e85, 0xed, 0x14b, 0x74, 0xe8, 0x3b, 0x6d, 0x76, 0x66, 0xf2, 0x20, 0x6c, 0x79, 0x25b, 0x30c, +0x2bc, 0x3b, 0x6d, 0x62, 0x254, 0x301, 0x254, 0x6e, 0x74, 0xe8, 0x20, 0x6d, 0x76, 0x66, 0xf2, 0x20, 0x6c, 0x79, 0x25b, 0x30c, +0x2bc, 0x3b, 0x74, 0x73, 0xe8, 0x74, 0x73, 0x25b, 0x300, 0x25b, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0x62, 0x254, +0x301, 0x254, 0x6e, 0x74, 0xe8, 0x20, 0x74, 0x73, 0x65, 0x74, 0x73, 0x25b, 0x300, 0x25b, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, +0x3b, 0x6d, 0x76, 0x66, 0xf2, 0x20, 0x6d, 0xe0, 0x67, 0x61, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x6d, 0xe0, 0x67, +0x61, 0x20, 0x6c, 0x79, 0x25b, 0x30c, 0x2bc, 0x3b, 0x910, 0x924, 0x3b, 0x938, 0x94b, 0x92e, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x3b, +0x92c, 0x941, 0x927, 0x3b, 0x92c, 0x940, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x3b, 0x936, 0x928, 0x93f, 0x3b, 0x910, 0x924, +0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x94b, 0x92e, 0x92c, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, +0x941, 0x927, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x940, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x92c, 0x93e, +0x930, 0x3b, 0x936, 0x928, 0x93f, 0x92c, 0x93e, 0x930, 0x3b, 0x910, 0x3b, 0x938, 0x94b, 0x3b, 0x92e, 0x2e, 0x3b, 0x92c, 0x941, 0x2e, +0x3b, 0x92c, 0x940, 0x2e, 0x3b, 0x936, 0x941, 0x2e, 0x3b, 0x936, 0x2e, 0x3b, 0x910, 0x924, 0x92c, 0x93e, 0x930, 0x3b, 0x938, 0x94b, +0x92e, 0x92c, 0x93e, 0x930, 0x3b, 0x92e, 0x902, 0x917, 0x932, 0x92c, 0x93e, 0x930, 0x3b, 0x92c, 0x941, 0x927, 0x92c, 0x93e, 0x930, 0x3b, +0x92c, 0x940, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x936, 0x941, 0x915, 0x94d, 0x930, 0x92c, 0x93e, 0x930, 0x3b, 0x936, 0x928, 0x940, 0x92c, +0x93e, 0x930, 0x3b, 0x910, 0x2e, 0x3b, 0x938, 0x94b, 0x2e, 0x3b, 0x92e, 0x2e, 0x3b, 0x92c, 0x941, 0x2e, 0x3b, 0x92c, 0x940, 0x2e, +0x3b, 0x936, 0x941, 0x2e, 0x3b, 0x936, 0x2e, 0x3b, 0x9a8, 0x9cb, 0x982, 0x9ae, 0x9be, 0x987, 0x99c, 0x9bf, 0x982, 0x3b, 0x9a8, 0x9bf, +0x982, 0x9a5, 0x9cc, 0x995, 0x9be, 0x9ac, 0x9be, 0x3b, 0x9b2, 0x9c8, 0x9ac, 0x9be, 0x995, 0x9aa, 0x9cb, 0x995, 0x9aa, 0x9be, 0x3b, 0x9af, +0x9bc, 0x9c1, 0x9ae, 0x9b6, 0x995, 0x9c8, 0x9b6, 0x9be, 0x3b, 0x9b6, 0x997, 0x9cb, 0x9b2, 0x9b6, 0x9c7, 0x9a8, 0x3b, 0x987, 0x9b0, 0x9be, +0x987, 0x3b, 0x9a5, 0x9be, 0x982, 0x99c, 0x3b, 0x9a8, 0x9cb, 0x3b, 0x9a8, 0x9bf, 0x982, 0x3b, 0x9b2, 0x9c8, 0x3b, 0x9af, 0x9bc, 0x9c1, +0x9ae, 0x3b, 0x9b6, 0x997, 0x3b, 0x987, 0x9b0, 0x9be, 0x3b, 0x9a5, 0x9be, 0x982, 0x3b, 0x9a8, 0x9cb, 0x982, 0x3b, 0x9a8, 0x9bf, 0x982, +0x3b, 0x9b2, 0x9c8, 0x3b, 0x9af, 0x9bc, 0x9c1, 0x9ae, 0x3b, 0x9b6, 0x997, 0x3b, 0x987, 0x9b0, 0x9be, 0x3b, 0x9a5, 0x9be, 0x982, 0x3b, +0x1c65, 0x1c64, 0x1c78, 0x3b, 0x1c5a, 0x1c5b, 0x3b, 0x1c75, 0x1c5f, 0x3b, 0x1c65, 0x1c5f, 0x1c79, 0x3b, 0x1c65, 0x1c5f, 0x1c79, 0x1c68, 0x3b, 0x1c61, +0x1c5f, 0x1c79, 0x3b, 0x1c67, 0x1c69, 0x3b, 0x1c65, 0x1c64, 0x1c78, 0x1c5c, 0x1c6e, 0x3b, 0x1c5a, 0x1c5b, 0x1c6e, 0x3b, 0x1c75, 0x1c5f, 0x1c5e, 0x1c6e, +0x3b, 0x1c65, 0x1c5f, 0x1c79, 0x1c5c, 0x1c69, 0x1c71, 0x3b, 0x1c65, 0x1c5f, 0x1c79, 0x1c68, 0x1c6b, 0x1c64, 0x3b, 0x1c61, 0x1c5f, 0x1c79, 0x1c68, 0x1c69, +0x1c62, 0x3b, 0x1c67, 0x1c69, 0x1c66, 0x1c69, 0x1c62, 0x3b, 0x1c65, 0x3b, 0x1c5a, 0x3b, 0x1c75, 0x3b, 0x1c65, 0x3b, 0x1c65, 0x3b, 0x1c61, 0x3b, +0x1c67, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x77, 0x61, 0x6b, 0x21f, 0x61, 0x14b, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, +0x75, 0x77, 0x61, 0x14b, 0x17e, 0x69, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x6e, 0x75, 0x14b, 0x70, 0x61, 0x3b, 0x41, +0x14b, 0x70, 0xe9, 0x74, 0x75, 0x79, 0x61, 0x6d, 0x6e, 0x69, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x74, 0x6f, 0x70, +0x61, 0x3b, 0x41, 0x14b, 0x70, 0xe9, 0x74, 0x75, 0x7a, 0x61, 0x70, 0x74, 0x61, 0x14b, 0x3b, 0x4f, 0x77, 0xe1, 0x14b, 0x67, +0x79, 0x75, 0x17e, 0x61, 0x17e, 0x61, 0x70, 0x69, 0x3b, 0x41, 0x3b, 0x57, 0x3b, 0x4e, 0x3b, 0x59, 0x3b, 0x54, 0x3b, 0x5a, +0x3b, 0x4f, 0x3b, 0x2d30, 0x2d59, 0x2d30, 0x2d4e, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d62, 0x2d4f, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4f, +0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d55, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d3d, 0x2d61, 0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d4e, 0x2d61, +0x2d30, 0x2d59, 0x3b, 0x2d30, 0x2d59, 0x2d49, 0x2d39, 0x2d62, 0x2d30, 0x2d59, 0x3b, 0x6cc, 0x6d5, 0x6a9, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, +0x62f, 0x648, 0x648, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x633, 0x6ce, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x686, 0x648, 0x627, +0x631, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x67e, 0x6ce, 0x646, 0x62c, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x6be, 0x6d5, 0x6cc, +0x646, 0x6cc, 0x3b, 0x634, 0x6d5, 0x645, 0x645, 0x6d5, 0x3b, 0x6cc, 0x3b, 0x62f, 0x3b, 0x633, 0x3b, 0x686, 0x3b, 0x67e, 0x3b, 0x6be, +0x3b, 0x634, 0x3b, 0x6e, 0x6a, 0x65, 0x3b, 0x70, 0xf3, 0x6e, 0x3b, 0x77, 0x61, 0x142, 0x3b, 0x73, 0x72, 0x6a, 0x3b, 0x73, +0x74, 0x77, 0x3b, 0x70, 0x11b, 0x74, 0x3b, 0x73, 0x6f, 0x62, 0x3b, 0x6e, 0x6a, 0x65, 0x17a, 0x65, 0x6c, 0x61, 0x3b, 0x70, +0xf3, 0x6e, 0x6a, 0x65, 0x17a, 0x65, 0x6c, 0x65, 0x3b, 0x77, 0x61, 0x142, 0x74, 0x6f, 0x72, 0x61, 0x3b, 0x73, 0x72, 0x6a, +0x6f, 0x64, 0x61, 0x3b, 0x73, 0x74, 0x77, 0xf3, 0x72, 0x74, 0x6b, 0x3b, 0x70, 0x11b, 0x74, 0x6b, 0x3b, 0x73, 0x6f, 0x62, +0x6f, 0x74, 0x61, 0x3b, 0x6e, 0x3b, 0x70, 0x3b, 0x77, 0x3b, 0x73, 0x3b, 0x73, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x6e, 0x6a, +0x65, 0x3b, 0x70, 0xf3, 0x6e, 0x3b, 0x77, 0x75, 0x74, 0x3b, 0x73, 0x72, 0x6a, 0x3b, 0x161, 0x74, 0x77, 0x3b, 0x70, 0x6a, +0x61, 0x3b, 0x73, 0x6f, 0x62, 0x3b, 0x6e, 0x6a, 0x65, 0x64, 0x17a, 0x65, 0x6c, 0x61, 0x3b, 0x70, 0xf3, 0x6e, 0x64, 0x17a, +0x65, 0x6c, 0x61, 0x3b, 0x77, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x3b, 0x73, 0x72, 0x6a, 0x65, 0x64, 0x61, 0x3b, 0x161, 0x74, +0x77, 0xf3, 0x72, 0x74, 0x6b, 0x3b, 0x70, 0x6a, 0x61, 0x74, 0x6b, 0x3b, 0x73, 0x6f, 0x62, 0x6f, 0x74, 0x61, 0x3b, 0x6e, +0x3b, 0x70, 0x3b, 0x77, 0x3b, 0x73, 0x3b, 0x161, 0x3b, 0x70, 0x3b, 0x73, 0x3b, 0x70, 0x61, 0x73, 0x3b, 0x76, 0x75, 0x6f, +0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6b, 0x6f, 0x73, 0x3b, 0x74, 0x75, 0x6f, 0x3b, 0x76, 0xe1, 0x73, 0x3b, 0x6c, 0xe1, 0x76, +0x3b, 0x70, 0x61, 0x73, 0x65, 0x70, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0x61, 0x72, 0x67, 0xe2, +0x3b, 0x6d, 0x61, 0x6a, 0x65, 0x62, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6b, 0x6f, 0x73, 0x6b, 0x6f, 0x6b, 0x6b, 0x6f, 0x3b, +0x74, 0x75, 0x6f, 0x72, 0xe2, 0x73, 0x74, 0xe2, 0x68, 0x3b, 0x76, 0xe1, 0x73, 0x74, 0x75, 0x70, 0x70, 0x65, 0x69, 0x76, +0x69, 0x3b, 0x6c, 0xe1, 0x76, 0x75, 0x72, 0x64, 0xe2, 0x68, 0x3b, 0x70, 0x61, 0x73, 0x65, 0x70, 0x65, 0x65, 0x69, 0x76, +0x69, 0x3b, 0x76, 0x75, 0x6f, 0x73, 0x73, 0x61, 0x61, 0x72, 0x67, 0xe2, 0x3b, 0x6d, 0x61, 0x6a, 0x65, 0x62, 0x61, 0x61, +0x72, 0x67, 0xe2, 0x3b, 0x6b, 0x6f, 0x73, 0x6b, 0x6f, 0x68, 0x6f, 0x3b, 0x74, 0x75, 0x6f, 0x72, 0xe2, 0x73, 0x74, 0x75, +0x76, 0x3b, 0x76, 0xe1, 0x73, 0x74, 0x75, 0x70, 0x70, 0x65, 0x65, 0x69, 0x76, 0x69, 0x3b, 0x6c, 0xe1, 0x76, 0x75, 0x72, +0x64, 0x75, 0x76, 0x3b, 0x70, 0x3b, 0x56, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x56, 0x3b, 0x4c, 0x3b, 0x44, 0x6f, +0x6d, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4d, 0x69, 0x79, 0x3b, 0x48, 0x75, 0x77, 0x3b, 0x42, 0x69, +0x79, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, 0x65, 0x73, 0x3b, +0x4d, 0x61, 0x72, 0x74, 0x65, 0x73, 0x3b, 0x4d, 0x69, 0x79, 0x65, 0x72, 0x6b, 0x75, 0x6c, 0x65, 0x73, 0x3b, 0x48, 0x75, +0x77, 0x65, 0x62, 0x65, 0x73, 0x3b, 0x42, 0x69, 0x79, 0x65, 0x72, 0x6e, 0x65, 0x73, 0x3b, 0x53, 0x61, 0x62, 0x61, 0x64, +0x6f, 0x3b, 0x44, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x42, 0x3b, 0x53, 0x3b, 0x53, 0x1ecd, 0x301, 0x6e, +0x3b, 0x4d, 0x1ecd, 0x301, 0x6e, 0x3b, 0x54, 0x69, 0xfa, 0x3b, 0x57, 0x1eb9, 0x301, 0x6e, 0x3b, 0x54, 0x1ecd, 0x301, 0x7a, 0x3b, +0x46, 0x72, 0x61, 0xed, 0x3b, 0x53, 0xe1, 0x74, 0x3b, 0x53, 0x1ecd, 0x301, 0x6e, 0x64, 0xe8, 0x3b, 0x4d, 0x1ecd, 0x301, 0x6e, +0x64, 0xe8, 0x3b, 0x54, 0x69, 0xfa, 0x7a, 0x64, 0xe8, 0x3b, 0x57, 0x1eb9, 0x301, 0x6e, 0x1eb9, 0x301, 0x7a, 0x64, 0xe8, 0x3b, +0x54, 0x1ecd, 0x301, 0x7a, 0x64, 0xe8, 0x3b, 0x46, 0x72, 0x61, 0xed, 0x64, 0xe8, 0x3b, 0x53, 0xe1, 0x74, 0x1ecd, 0x64, 0xe8, +0x3b }; static const ushort byte_unit_data[] = { @@ -3193,58 +3184,62 @@ 0x4d, 0x6f, 0x3b, 0x47, 0x6f, 0x3b, 0x54, 0x6f, 0x3b, 0x50, 0x6f, 0x3b, 0x45, 0x6f, 0x4b, 0x69, 0x6f, 0x3b, 0x4d, 0x69, 0x6f, 0x3b, 0x47, 0x69, 0x6f, 0x3b, 0x54, 0x69, 0x6f, 0x3b, 0x50, 0x69, 0x6f, 0x3b, 0x45, 0x69, 0x6f, 0x431, 0x430, 0x439, 0x442, 0x43e, 0x432, 0x435, 0x1018, 0x102d, 0x102f, 0x1000, 0x103a, 0x431, 0x430, 0x439, 0x442, 0x44b, 0x41a, 0x411, 0x3b, 0x41c, 0x411, 0x3b, -0x413, 0x411, 0x3b, 0x422, 0x411, 0x3b, 0x41f, 0x411, 0x3b, 0x45, 0x42, 0x1794, 0x17c3, 0x5b57, 0x8282, 0x5343, 0x5b57, 0x8282, 0x3b, 0x5146, -0x5b57, 0x8282, 0x3b, 0x5409, 0x5b57, 0x8282, 0x3b, 0x592a, 0x5b57, 0x8282, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x4f4d, 0x5143, 0x7d44, 0x62, -0x61, 0x6a, 0x74, 0x6f, 0x76, 0x69, 0x62, 0x61, 0x6a, 0x74, 0x79, 0x62, 0x61, 0x6a, 0x74, 0x6f, 0x6a, 0x62, 0x61, 0x69, -0x64, 0x69, 0x64, 0x62, 0xfd, 0x74, 0x74, 0x61, 0x76, 0x75, 0x74, 0x6b, 0x74, 0x3b, 0x4d, 0x74, 0x3b, 0x47, 0x74, 0x3b, -0x54, 0x74, 0x3b, 0x50, 0x74, 0x3b, 0x45, 0x74, 0x4b, 0x69, 0x74, 0x3b, 0x4d, 0x69, 0x74, 0x3b, 0x47, 0x69, 0x74, 0x3b, -0x54, 0x69, 0x74, 0x3b, 0x50, 0x69, 0x74, 0x3b, 0x45, 0x69, 0x74, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x62, 0x61, 0x69, -0x64, 0x68, 0x74, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x10d9, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10db, 0x10d1, 0x10d0, 0x10d8, 0x10e2, -0x10d8, 0x3b, 0x10d2, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10e2, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10de, 0x10d1, 0x10d0, 0x10d8, -0x10e2, 0x10d8, 0x3b, 0x45, 0x42, 0x42, 0x79, 0x74, 0x65, 0x73, 0xaac, 0xabe, 0xa87, 0xa9f, 0x6b, 0x42, 0x3b, 0x4d, 0x42, 0x3b, -0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0xaaa, 0xac0, 0xaac, 0xac0, 0x3b, 0x45, 0x42, 0x5d1, 0x5d9, 0x5d9, 0x5d8, 0x92c, 0x93e, 0x907, -0x91f, 0x62, 0xe1, 0x6a, 0x74, 0x62, 0xe6, 0x74, 0x69, 0x62, 0x65, 0x61, 0x72, 0x74, 0x61, 0x30d0, 0x30a4, 0x30c8, 0x4b, 0x42, -0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x62, 0x69, 0x74, 0x65, 0xcac, -0xcc8, 0xc9f, 0xccd, 0x200c, 0xc97, 0xcb3, 0xcc1, 0xc95, 0xcbf, 0x2e, 0xcac, 0xcc8, 0x2e, 0x3b, 0xcae, 0xcc6, 0x2e, 0xcac, 0xcc8, 0x2e, -0x3b, 0xc97, 0xcbf, 0x2e, 0xcac, 0xcc8, 0x2e, 0x3b, 0xc9f, 0xcc6, 0x2e, 0xcac, 0xcc8, 0x2e, 0x3b, 0xcaa, 0xcc6, 0xcac, 0xcc8, 0x3b, -0x45, 0x42, 0x431, 0x430, 0x439, 0x442, 0x43a, 0x411, 0x3b, 0x4d, 0x411, 0x3b, 0x413, 0x411, 0x3b, 0x54, 0x411, 0x3b, 0x41f, 0x411, -0x3b, 0x45, 0x411, 0x4b, 0x69, 0x411, 0x3b, 0x4d, 0x69, 0x411, 0x3b, 0x47, 0x69, 0x411, 0x3b, 0x54, 0x69, 0x411, 0x3b, 0x50, -0x69, 0x411, 0x3b, 0x45, 0x69, 0x411, 0x43a, 0x411, 0x3b, 0x41c, 0x411, 0x3b, 0x413, 0x411, 0x3b, 0x422, 0x411, 0x3b, 0x41f, 0x442, -0x431, 0x3b, 0x45, 0x42, 0xbc14, 0xc774, 0xd2b8, 0x62, 0x61, 0x69, 0x74, 0x69, 0x62, 0x61, 0x69, 0x74, 0x61, 0x69, 0x431, 0x430, -0x458, 0x442, 0x438, 0x62, 0x61, 0x69, 0x74, 0xd2c, 0xd48, 0xd31, 0xd4d, 0xd31, 0xd4d, 0xd15, 0xd46, 0xd2c, 0xd3f, 0x3b, 0xd0e, 0xd02, -0xd2c, 0xd3f, 0x3b, 0xd1c, 0xd3f, 0xd2c, 0xd3f, 0x3b, 0xd1f, 0xd3f, 0xd2c, 0xd3f, 0x3b, 0xd2a, 0xd3f, 0xd2c, 0xd3f, 0x3b, 0x45, 0x42, -0x43a, 0x411, 0x3b, 0x41c, 0x411, 0x3b, 0x413, 0x411, 0x3b, 0x422, 0x411, 0x3b, 0x41f, 0x411, 0x3b, 0x45, 0x42, 0x6b, 0x42, 0x3b, -0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x92a, 0x93f, 0x91f, 0x93e, 0x3b, 0x45, 0x42, 0xb2c, 0xb3e, 0xb07, 0xb1f, -0xb4d, 0x628, 0x627, 0x64a, 0x67c, 0x633, 0x628, 0x627, 0x6cc, 0x62a, 0x6a9, 0x6cc, 0x644, 0x648, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x645, -0x6af, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x6af, 0x6cc, 0x6af, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x62a, 0x631, 0x627, 0x628, -0x627, 0x6cc, 0x62a, 0x3b, 0x67e, 0x62a, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x45, 0x42, 0xa2c, 0xa3e, 0xa07, 0xa1f, 0x62, 0x79, -0x21b, 0x69, 0x431, 0x430, 0x458, 0x442, 0x43e, 0x432, 0x438, 0x628, 0x627, 0x626, 0x64a, 0x67d, 0x632, 0x6aa, 0x644, 0x648, 0x20, 0x628, -0x627, 0x626, 0x64a, 0x67d, 0x632, 0x3b, 0x645, 0x64a, 0x6af, 0x627, 0x20, 0x628, 0x627, 0x626, 0x64a, 0x67d, 0x632, 0x3b, 0x6af, 0x64a, -0x6af, 0x627, 0x20, 0x628, 0x627, 0x626, 0x64a, 0x67d, 0x632, 0x3b, 0x67d, 0x64a, 0x631, 0x627, 0x20, 0x628, 0x627, 0x626, 0x64a, 0x67d, -0x632, 0x3b, 0x67e, 0x64a, 0x631, 0x627, 0x20, 0x628, 0x627, 0x626, 0x64a, 0x67d, 0x633, 0x3b, 0x45, 0x42, 0xdb6, 0xdba, 0xdd2, 0xda7, -0xdca, 0xd9a, 0xdd2, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xdb8, 0xdd9, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xd9c, 0xdd2, 0xdb6, -0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xda7, 0xdd9, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, -0x3b, 0x45, 0x42, 0x62, 0x65, 0x79, 0x74, 0x69, 0x73, 0x6b, 0x42, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, -0x3b, 0x42, 0x42, 0x3b, 0x45, 0x42, 0x6b, 0x69, 0x6c, 0x6f, 0x62, 0x61, 0x69, 0x74, 0x69, 0x20, 0x7b, 0x30, 0x7d, 0x3b, -0x4d, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x74, 0x65, 0x72, 0x61, 0x62, 0x61, -0x69, 0x74, 0x69, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x42, 0xbaa, 0xbc8, 0xb9f, -0xbcd, 0xb95, 0xbb3, 0xbcd, 0xc2c, 0xc48, 0xc1f, 0xc4d, 0x200c, 0xc32, 0xc41, 0xc15, 0xc47, 0xc2c, 0xc40, 0x3b, 0xc0e, 0xc2e, 0xc4d, 0x200c, -0xc2c, 0xc3f, 0x3b, 0xc1c, 0xc40, 0xc2c, 0xc40, 0x3b, 0xc1f, 0xc40, 0xc2c, 0xc40, 0x3b, 0xc2a, 0xc40, 0xc2c, 0xc40, 0x3b, 0x45, 0x42, -0xe44, 0xe1a, 0xe15, 0xe4c, 0x70, 0x61, 0x69, 0x74, 0x69, 0x6b, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d, -0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x54, -0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, -0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x4b, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d, -0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, -0x3b, 0x54, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, -0x30, 0x7d, 0x3b, 0x45, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x62, 0x61, 0xfd, 0x74, 0x431, 0x430, 0x439, -0x442, 0x438, 0x628, 0x627, 0x626, 0x679, 0x6b, 0x42, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x67e, 0x6cc, -0x20, 0x628, 0x6cc, 0x3b, 0x45, 0x42, 0x62, 0x65, 0x69, 0x74, 0x69, 0x61, 0x75, 0x92c, 0x93e, 0x92f, 0x91f, 0x61, 0x1e6d, 0x61, -0x6d, 0x1e0d, 0x61, 0x6e, 0x6b, 0x41, 0x1e6c, 0x3b, 0x4d, 0x41, 0x1e6c, 0x3b, 0x47, 0x41, 0x1e6c, 0x3b, 0x54, 0x41, 0x1e6c, 0x3b, -0x50, 0x42, 0x3b, 0x45, 0x42, 0x13d7, 0x13d3, 0x13cd, 0x13a6, 0x13b5, 0x13a9, 0x431, 0x430, 0x430, 0x439, 0x442, 0x43a, 0x411, 0x3b, 0x41c, -0x411, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x62, 0x79, 0x74, 0x65, 0x79, 0x6a9, 0x6cc, -0x644, 0x648, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x645, 0x6af, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x6af, 0x6cc, 0x6af, 0x627, 0x628, -0x627, 0x6cc, 0x62a, 0x3b, 0x62a, 0x631, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x6d, 0x67, 0x61, -0x20, 0x62, 0x79, 0x74, 0x65, 0x42, 0x61, 0x69, 0x74, 0x2d, 0x64, 0x1eb9, 0x6d +0x413, 0x411, 0x3b, 0x422, 0x411, 0x3b, 0x41f, 0x411, 0x3b, 0x45, 0x42, 0x1794, 0x17c3, 0x5b57, 0x8282, 0x4f4d, 0x5143, 0x7d44, 0x62, 0x61, +0x6a, 0x74, 0x6f, 0x76, 0x69, 0x62, 0x61, 0x6a, 0x74, 0x79, 0x62, 0x61, 0x6a, 0x74, 0x6f, 0x6a, 0x62, 0x61, 0x69, 0x64, +0x69, 0x64, 0x62, 0xfd, 0x74, 0x74, 0x61, 0x76, 0x75, 0x74, 0x6b, 0x74, 0x3b, 0x4d, 0x74, 0x3b, 0x47, 0x74, 0x3b, 0x54, +0x74, 0x3b, 0x50, 0x74, 0x3b, 0x45, 0x74, 0x4b, 0x69, 0x74, 0x3b, 0x4d, 0x69, 0x74, 0x3b, 0x47, 0x69, 0x74, 0x3b, 0x54, +0x69, 0x74, 0x3b, 0x50, 0x69, 0x74, 0x3b, 0x45, 0x69, 0x74, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x62, 0x61, 0x69, 0x64, +0x68, 0x74, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x10d9, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10db, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, +0x3b, 0x10d2, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10e2, 0x10d1, 0x10d0, 0x10d8, 0x10e2, 0x10d8, 0x3b, 0x10de, 0x10d1, 0x10d0, 0x10d8, 0x10e2, +0x10d8, 0x3b, 0x45, 0x42, 0x42, 0x79, 0x74, 0x65, 0x73, 0xaac, 0xabe, 0xa87, 0xa9f, 0x6b, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, +0x4d, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x54, 0x42, 0x20, 0x7b, 0x30, 0x7d, +0x3b, 0x50, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x4b, 0x69, 0x42, 0x20, 0x7b, 0x30, +0x7d, 0x3b, 0x4d, 0x69, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x69, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x54, 0x69, +0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x69, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x69, 0x42, 0x20, 0x7b, 0x30, +0x7d, 0x5d1, 0x5d9, 0x5d9, 0x5d8, 0x92c, 0x93e, 0x907, 0x91f, 0x62, 0xe1, 0x6a, 0x74, 0x62, 0xe6, 0x74, 0x69, 0x62, 0x65, 0x61, +0x72, 0x74, 0x61, 0x30d0, 0x30a4, 0x30c8, 0x4b, 0x42, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x50, 0x42, +0x3b, 0x45, 0x42, 0x62, 0x69, 0x74, 0x65, 0xcac, 0xcc8, 0xc9f, 0xccd, 0x200c, 0xc97, 0xcb3, 0xcc1, 0xc95, 0xcbf, 0x2e, 0xcac, 0xcc8, +0x2e, 0x3b, 0xcae, 0xcc6, 0x2e, 0xcac, 0xcc8, 0x2e, 0x3b, 0xc97, 0xcbf, 0x2e, 0xcac, 0xcc8, 0x2e, 0x3b, 0xc9f, 0xcc6, 0x2e, 0xcac, +0xcc8, 0x2e, 0x3b, 0xcaa, 0xcc6, 0xcac, 0xcc8, 0x3b, 0x45, 0x42, 0x431, 0x430, 0x439, 0x442, 0x43a, 0x411, 0x3b, 0x4d, 0x411, 0x3b, +0x413, 0x411, 0x3b, 0x54, 0x411, 0x3b, 0x41f, 0x411, 0x3b, 0x45, 0x411, 0x4b, 0x69, 0x411, 0x3b, 0x4d, 0x69, 0x411, 0x3b, 0x47, +0x69, 0x411, 0x3b, 0x54, 0x69, 0x411, 0x3b, 0x50, 0x69, 0x411, 0x3b, 0x45, 0x69, 0x411, 0x43a, 0x411, 0x3b, 0x41c, 0x411, 0x3b, +0x413, 0x411, 0x3b, 0x422, 0x411, 0x3b, 0x41f, 0x442, 0x431, 0x3b, 0x45, 0x42, 0xbc14, 0xc774, 0xd2b8, 0x62, 0x61, 0x69, 0x74, 0x69, +0x62, 0x61, 0x69, 0x74, 0x61, 0x69, 0x431, 0x430, 0x458, 0x442, 0x438, 0x62, 0x61, 0x69, 0x74, 0xd2c, 0xd48, 0xd31, 0xd4d, 0xd31, +0xd4d, 0xd15, 0xd46, 0xd2c, 0xd3f, 0x3b, 0xd0e, 0xd02, 0xd2c, 0xd3f, 0x3b, 0xd1c, 0xd3f, 0xd2c, 0xd3f, 0x3b, 0xd1f, 0xd3f, 0xd2c, 0xd3f, +0x3b, 0xd2a, 0xd3f, 0xd2c, 0xd3f, 0x3b, 0x45, 0x42, 0x43a, 0x411, 0x3b, 0x41c, 0x411, 0x3b, 0x413, 0x411, 0x3b, 0x422, 0x411, 0x3b, +0x41f, 0x411, 0x3b, 0x45, 0x42, 0x6b, 0x42, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x92a, 0x93f, 0x91f, +0x93e, 0x3b, 0x45, 0x42, 0xb2c, 0xb3e, 0xb07, 0xb1f, 0xb4d, 0x628, 0x627, 0x64a, 0x67c, 0x633, 0x628, 0x627, 0x6cc, 0x62a, 0x3c, 0x4c, +0x52, 0x4d, 0x3e, 0x6b, 0x42, 0x3b, 0x3c, 0x4c, 0x52, 0x4d, 0x3e, 0x4d, 0x42, 0x3b, 0x3c, 0x4c, 0x52, 0x4d, 0x3e, 0x47, +0x42, 0x3b, 0x3c, 0x4c, 0x52, 0x4d, 0x3e, 0x54, 0x42, 0x3b, 0x3c, 0x4c, 0x52, 0x4d, 0x3e, 0x50, 0x42, 0x3b, 0x45, 0x42, +0xa2c, 0xa3e, 0xa07, 0xa1f, 0x62, 0x79, 0x21b, 0x69, 0x431, 0x430, 0x458, 0x442, 0x43e, 0x432, 0x438, 0x628, 0x627, 0x626, 0x64a, 0x67d, +0x632, 0x6aa, 0x644, 0x648, 0x20, 0x628, 0x627, 0x626, 0x64a, 0x67d, 0x632, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, +0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0xdb6, 0xdba, 0xdd2, 0xda7, 0xdca, 0xd9a, 0xdd2, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xdb8, +0xdd9, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xd9c, 0xdd2, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0xda7, 0xdd9, 0xdb6, 0x20, 0x7b, +0x30, 0x7d, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x42, 0x62, 0x65, 0x79, 0x74, 0x69, 0x73, 0x6b, +0x42, 0x3b, 0x4d, 0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x42, 0x42, 0x3b, 0x45, 0x42, 0x6b, 0x69, 0x6c, 0x6f, +0x62, 0x61, 0x69, 0x74, 0x69, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d, 0x42, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, 0x42, 0x20, +0x7b, 0x30, 0x7d, 0x3b, 0x74, 0x65, 0x72, 0x61, 0x62, 0x61, 0x69, 0x74, 0x69, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, 0x42, +0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x42, 0xbaa, 0xbc8, 0xb9f, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0xc2c, 0xc48, 0xc1f, 0xc4d, 0x200c, 0xc32, +0xc41, 0xc15, 0xc47, 0xc2c, 0xc40, 0x3b, 0xc0e, 0xc2e, 0xc4d, 0x200c, 0xc2c, 0xc3f, 0x3b, 0xc1c, 0xc40, 0xc2c, 0xc40, 0x3b, 0xc1f, 0xc40, +0xc2c, 0xc40, 0x3b, 0xc2a, 0xc40, 0xc2c, 0xc40, 0x3b, 0x45, 0x42, 0xe44, 0xe1a, 0xe15, 0xe4c, 0x70, 0x61, 0x69, 0x74, 0x69, 0x6b, +0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x47, +0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x54, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x50, +0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x4b, 0x69, +0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x4d, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, +0x47, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x54, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, +0x7d, 0x3b, 0x50, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, 0x7b, 0x30, 0x7d, 0x3b, 0x45, 0x69, 0x42, 0x20, 0x2bb, 0x65, 0x20, +0x7b, 0x30, 0x7d, 0x62, 0x61, 0xfd, 0x74, 0x431, 0x430, 0x439, 0x442, 0x438, 0x628, 0x627, 0x626, 0x679, 0x6b, 0x42, 0x3b, 0x4d, +0x42, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x67e, 0x6cc, 0x20, 0x628, 0x6cc, 0x3b, 0x45, 0x42, 0x62, 0x65, 0x69, 0x74, +0x69, 0x61, 0x75, 0xe0, 0x77, 0x1ecd, 0x301, 0x6e, 0x20, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x6b, 0xe9, 0x62, 0xe1, 0xec, 0x74, +0xec, 0x3b, 0x4d, 0x42, 0x3b, 0x6a, 0xed, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x3b, 0x54, 0xed, 0x62, 0xe1, 0xec, 0x74, 0xec, +0x3b, 0x50, 0xed, 0x62, 0xe1, 0xec, 0x74, 0xec, 0x3b, 0x45, 0x42, 0xe0, 0x77, 0x254, 0x301, 0x6e, 0x20, 0x62, 0xe1, 0xec, +0x74, 0xec, 0x92c, 0x93e, 0x92f, 0x91f, 0x61, 0x1e6d, 0x61, 0x6d, 0x1e0d, 0x61, 0x6e, 0x6b, 0x41, 0x1e6c, 0x3b, 0x4d, 0x41, 0x1e6c, +0x3b, 0x47, 0x41, 0x1e6c, 0x3b, 0x54, 0x41, 0x1e6c, 0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x13d7, 0x13d3, 0x13cd, 0x13a6, 0x13b5, 0x13a9, +0x431, 0x430, 0x430, 0x439, 0x442, 0x43a, 0x411, 0x3b, 0x41c, 0x411, 0x3b, 0x47, 0x42, 0x3b, 0x54, 0x42, 0x3b, 0x50, 0x42, 0x3b, +0x45, 0x42, 0x62, 0x79, 0x74, 0x65, 0x79, 0x6a9, 0x6cc, 0x644, 0x648, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x645, 0x6af, 0x627, 0x628, +0x627, 0x6cc, 0x62a, 0x3b, 0x6af, 0x6cc, 0x6af, 0x627, 0x628, 0x627, 0x6cc, 0x62a, 0x3b, 0x62a, 0x631, 0x627, 0x628, 0x627, 0x6cc, 0x62a, +0x3b, 0x50, 0x42, 0x3b, 0x45, 0x42, 0x6d, 0x67, 0x61, 0x20, 0x62, 0x79, 0x74, 0x65, 0x42, 0x61, 0x69, 0x74, 0x2d, 0x64, +0x1eb9, 0x6d }; static const ushort am_data[] = { @@ -3257,15 +3252,15 @@ 0xcbe, 0xcb9, 0xccd, 0xca8, 0x442, 0x430, 0x4a3, 0x43a, 0x44b, 0xc624, 0xc804, 0x42, 0x4e, 0x5a, 0x2e, 0x4d, 0x55, 0x2e, 0xe81, 0xec8, 0xead, 0xe99, 0xe97, 0xec8, 0xebd, 0xe87, 0x70, 0x72, 0x69, 0x65, 0x6b, 0x161, 0x70, 0x75, 0x73, 0x64, 0x69, 0x65, 0x6e, 0x101, 0x6e, 0x74, 0x254, 0x301, 0x6e, 0x67, 0x254, 0x301, 0x70, 0x72, 0x69, 0x65, 0x161, 0x70, 0x69, 0x65, 0x74, 0x43f, 0x440, 0x435, -0x442, 0x43f, 0x43b, 0x430, 0x434, 0x43d, 0x435, 0x50, 0x47, 0x92e, 0x2e, 0x92a, 0x942, 0x2e, 0x4af, 0x2e, 0x4e9, 0x2e, 0x92a, 0x942, -0x930, 0x94d, 0x935, 0x93e, 0x939, 0x94d, 0x928, 0x63a, 0x2e, 0x645, 0x2e, 0x642, 0x628, 0x644, 0x200c, 0x627, 0x632, 0x638, 0x647, 0x631, -0x64, 0x61, 0x20, 0x6d, 0x61, 0x6e, 0x68, 0xe3, 0xa2a, 0xa42, 0x2e, 0xa26, 0xa41, 0x2e, 0x4e, 0x44, 0x43f, 0x440, 0x435, 0x20, -0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x70, 0x72, 0x69, 0x6a, 0x65, 0x20, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x70, 0x72, 0x65, 0x20, -0x70, 0x6f, 0x64, 0x6e, 0x65, 0x43f, 0x440, 0x438, 0x458, 0x435, 0x20, 0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x4d5, 0x43c, 0x431, 0x438, -0x441, 0x431, 0x43e, 0x43d, 0x44b, 0x20, 0x440, 0x430, 0x437, 0x43c, 0x4d5, 0x635, 0x628, 0x62d, 0x60c, 0x20, 0x645, 0x646, 0x62c, 0x647, -0x646, 0x62f, 0x92e, 0x902, 0x91d, 0x902, 0x926, 0x93f, 0x20, 0x915, 0x93e, 0x20, 0x92a, 0x939, 0x93f, 0x902, 0x930, 0x94b, 0xdb4, 0xdd9, -0x2e, 0xdc0, 0x2e, 0x47, 0x48, 0x66, 0x6d, 0xbae, 0xbc1, 0xbb1, 0xbcd, 0xbaa, 0xb95, 0xbb2, 0xbcd, 0xe01, 0xe48, 0xe2d, 0xe19, 0xe40, -0xe17, 0xe35, 0xe48, 0xe22, 0xe07, 0xf66, 0xf94, 0xf0b, 0xf51, 0xfb2, 0xf7c, 0xf0b, 0x1295, 0x1309, 0x1206, 0x20, 0x1230, 0x12d3, 0x1270, 0x68, +0x442, 0x43f, 0x43b, 0x430, 0x434, 0x43d, 0x435, 0x50, 0x47, 0x4af, 0x2e, 0x4e9, 0x2e, 0x92a, 0x942, 0x930, 0x94d, 0x935, 0x93e, 0x939, +0x94d, 0x928, 0x63a, 0x2e, 0x645, 0x2e, 0x642, 0x628, 0x644, 0x200c, 0x627, 0x632, 0x638, 0x647, 0x631, 0x64, 0x61, 0x20, 0x6d, 0x61, +0x6e, 0x68, 0xe3, 0xa2a, 0xa42, 0x2e, 0xa26, 0xa41, 0x2e, 0x4e, 0x44, 0x43f, 0x440, 0x435, 0x20, 0x43f, 0x43e, 0x434, 0x43d, 0x435, +0x70, 0x72, 0x69, 0x6a, 0x65, 0x20, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x70, 0x72, 0x65, 0x20, 0x70, 0x6f, 0x64, 0x6e, 0x65, +0x43f, 0x440, 0x438, 0x458, 0x435, 0x20, 0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x4d5, 0x43c, 0x431, 0x438, 0x441, 0x431, 0x43e, 0x43d, 0x44b, +0x20, 0x440, 0x430, 0x437, 0x43c, 0x4d5, 0x635, 0x628, 0x62d, 0x60c, 0x20, 0x645, 0x646, 0x62c, 0x647, 0x646, 0x62f, 0x92e, 0x902, 0x91d, +0x902, 0x926, 0x93f, 0x20, 0x915, 0x93e, 0x20, 0x92a, 0x939, 0x93f, 0x902, 0x930, 0x94b, 0xdb4, 0xdd9, 0x2e, 0xdc0, 0x2e, 0x47, 0x48, +0x66, 0x6d, 0xbae, 0xbc1, 0xbb1, 0xbcd, 0xbaa, 0xb95, 0xbb2, 0xbcd, 0xe01, 0xe48, 0xe2d, 0xe19, 0xe40, 0xe17, 0xe35, 0xe48, 0xe22, 0xe07, +0xf66, 0xf94, 0xf0b, 0xf51, 0xfb2, 0xf7c, 0xf0b, 0x1245, 0x12f5, 0x1218, 0x20, 0x134d, 0x122d, 0x1242, 0x2d, 0x1218, 0x12d3, 0x120d, 0x1272, 0x68, 0x65, 0x6e, 0x67, 0x69, 0x68, 0x65, 0x6e, 0x67, 0x69, 0xd6, 0xd6, 0x67, 0xfc, 0x6e, 0x6f, 0x72, 0x74, 0x61, 0x64, 0x61, 0x6e, 0x20, 0xf6, 0x148, 0x686, 0x6c8, 0x634, 0x62a, 0x649, 0x646, 0x20, 0x628, 0x6c7, 0x631, 0x6c7, 0x646, 0x434, 0x43f, 0x54, 0x4f, 0x422, 0x41e, 0x53, 0x41, 0x79, 0x62, 0x53, 0x75, 0x62, 0x5e4, 0x5bf, 0x5d0, 0x5b7, 0x5e8, 0x5de, 0x5d9, 0x5d8, 0x5d0, 0x5b8, 0x5d2, @@ -3287,8 +3282,8 @@ 0x6b, 0xed, 0x72, 0xed, 0x67, 0x73, 0xe1, 0x72, 0xfa, 0x77, 0xe1, 0x77, 0x69, 0x63, 0x68, 0x69, 0x73, 0x68, 0x75, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6d, 0x61, 0x6e, 0xe1, 0x52, 0x57, 0x42d, 0x418, 0x4c, 0x77, 0x61, 0x6d, 0x69, 0x6c, 0x61, 0x77, 0x75, 0x6b, 0x69, 0x25b, 0x6d, 0x25b, 0x301, 0x25b, 0x6d, 0x64, 0x65, 0x20, 0x6c, 0x61, 0x20, 0x6d, 0x61, 0xf1, 0x61, 0x6e, -0x61, 0x6d, 0x62, 0x61, 0xa78c, 0x6d, 0x62, 0x61, 0xa78c, 0x6d, 0x62, 0x61, 0x2bc, 0xe1, 0x6d, 0x62, 0x61, 0x2bc, 0x98f, 0x20, -0x98f, 0x9ae, 0x1c65, 0x1c64, 0x1c67, 0x2f, 0x1c65, 0x1c6e, 0x1c5b, 0x1c5f, 0x1c5c, 0x628, 0x2e, 0x646, 0x64, 0x6f, 0x70, 0x6f, 0x142, 0x64, +0x61, 0x6d, 0x62, 0x61, 0xa78c, 0x6d, 0x62, 0x61, 0xa78c, 0x6d, 0x62, 0x61, 0x2bc, 0xe1, 0x6d, 0x62, 0x61, 0x2bc, 0x938, 0x935, +0x947, 0x930, 0x98f, 0x20, 0x98f, 0x9ae, 0x1c65, 0x1c6e, 0x1c5b, 0x1c5f, 0x1c5c, 0x628, 0x2e, 0x646, 0x64, 0x6f, 0x70, 0x6f, 0x142, 0x64, 0x6e, 0x6a, 0x61, 0x69, 0x70, 0x2e, 0x46, 0x1ecd, 0x20, 0x6d, 0x1ecd, 0x301, 0x6e, 0x69, 0x6e }; @@ -3302,40 +3297,40 @@ 0x442, 0x4e9, 0x43d, 0x20, 0x43a, 0x438, 0x439, 0x438, 0x43d, 0x43a, 0x438, 0xc624, 0xd6c4, 0x50, 0x4e, 0x5a, 0x2e, 0x4d, 0x57, 0x2e, 0xeab, 0xebc, 0xeb1, 0xe87, 0xe97, 0xec8, 0xebd, 0xe87, 0x70, 0x113, 0x63, 0x70, 0x75, 0x73, 0x64, 0x69, 0x65, 0x6e, 0x101, 0x6d, 0x70, 0xf3, 0x6b, 0x77, 0x61, 0x70, 0x6f, 0x70, 0x69, 0x65, 0x74, 0x43f, 0x43e, 0x43f, 0x43b, 0x430, 0x434, 0x43d, 0x435, 0x50, -0x54, 0x47, 0x92e, 0x2e, 0x909, 0x2e, 0x4af, 0x2e, 0x445, 0x2e, 0x905, 0x92a, 0x930, 0x93e, 0x939, 0x94d, 0x928, 0x63a, 0x2e, 0x648, -0x2e, 0x628, 0x639, 0x62f, 0x627, 0x632, 0x638, 0x647, 0x631, 0x64, 0x61, 0x20, 0x74, 0x61, 0x72, 0x64, 0x65, 0xa2c, 0xa3e, 0x2e, -0xa26, 0xa41, 0x2e, 0x4c, 0x4b, 0x43f, 0x43e, 0x20, 0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x70, 0x6f, 0x20, 0x70, 0x6f, 0x64, 0x6e, -0x65, 0x4d5, 0x43c, 0x431, 0x438, 0x441, 0x431, 0x43e, 0x43d, 0x44b, 0x20, 0x444, 0x4d5, 0x441, 0x442, 0x4d5, 0x645, 0x646, 0x62c, 0x647, -0x646, 0x62f, 0x60c, 0x20, 0x634, 0x627, 0x645, 0x92e, 0x902, 0x91d, 0x902, 0x926, 0x93f, 0x20, 0x915, 0x94b, 0x20, 0x92a, 0x94b, 0x90f, -0xdb4, 0x2e, 0xdc0, 0x2e, 0x70, 0x6f, 0x70, 0x2e, 0x47, 0x44, 0x65, 0x6d, 0xbaa, 0xbbf, 0xbb1, 0xbcd, 0xbaa, 0xb95, 0xbb2, 0xbcd, -0xe2b, 0xe25, 0xe31, 0xe07, 0xe40, 0xe17, 0xe35, 0xe48, 0xe22, 0xe07, 0xf55, 0xfb1, 0xf72, 0xf0b, 0xf51, 0xfb2, 0xf7c, 0xf0b, 0x12f5, 0x1215, -0x122d, 0x20, 0x1230, 0x12d3, 0x1275, 0x65, 0x66, 0x69, 0x61, 0x66, 0x69, 0xd6, 0x53, 0x67, 0xfc, 0x6e, 0x6f, 0x72, 0x74, 0x61, -0x64, 0x61, 0x6e, 0x20, 0x73, 0x6f, 0x148, 0x686, 0x6c8, 0x634, 0x62a, 0x649, 0x646, 0x20, 0x643, 0x6d0, 0x64a, 0x649, 0x646, 0x43f, -0x43f, 0x54, 0x4b, 0x422, 0x41a, 0x43, 0x48, 0x79, 0x68, 0x4e, 0x67, 0x6f, 0x5e0, 0x5d0, 0x5b8, 0x5db, 0x5de, 0x5d9, 0x5d8, 0x5d0, -0x5b8, 0x5d2, 0x1ecc, 0x300, 0x73, 0xe1, 0x6e, 0x186, 0x300, 0x73, 0xe1, 0x6e, 0x65, 0x74, 0x74, 0x65, 0x72, 0x6d, 0x69, 0x64, -0x64, 0x61, 0x67, 0x70, 0x6f, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x43f, 0x43e, 0x441, 0x43b, 0x438, 0x458, 0x435, 0x20, 0x43f, 0x43e, -0x434, 0x43d, 0x435, 0x45, 0x57, 0x4e, 0x2019, 0x61, 0x62, 0x61, 0x6c, 0x69, 0x128, 0x79, 0x61, 0x77, 0x129, 0x6f, 0x6f, 0x70, -0x2e, 0x263, 0x65, 0x74, 0x72, 0x254, 0x61, 0x6d, 0x20, 0x4e, 0x61, 0x6d, 0x69, 0x74, 0x74, 0x61, 0x67, 0xa06f, 0xa2d2, 0x65, -0x61, 0x68, 0x6b, 0x65, 0x74, 0x62, 0x65, 0x61, 0x69, 0x76, 0x65, 0x74, 0x65, 0x62, 0x4d, 0x6f, 0x67, 0x6c, 0x75, 0x6d, -0x61, 0x20, 0x6c, 0x77, 0x61, 0x20, 0x70, 0x6b, 0x69, 0x6b, 0x69, 0x69, 0x257, 0x65, 0x48, 0x77, 0x61, 0x129, 0x2d, 0x69, -0x6e, 0x129, 0x54, 0x65, 0x69, 0x70, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x6f, 0x74, 0x6f, 0x2d5c, 0x2d30, 0x2d37, 0x2d33, 0x2d33, 0x2d6f, -0x2d30, 0x2d5c, 0x74, 0x61, 0x64, 0x67, 0x67, 0x2b7, 0x61, 0x74, 0x6e, 0x20, 0x74, 0x6d, 0x65, 0x64, 0x64, 0x69, 0x74, 0x70, -0x61, 0x6d, 0x75, 0x6e, 0x79, 0x69, 0x6b, 0x79, 0x69, 0x75, 0x6b, 0x6f, 0x6e, 0x79, 0x69, 0x55, 0x54, 0x13d2, 0x13af, 0x13f1, -0x13a2, 0x13d7, 0x13e2, 0x43, 0x68, 0x69, 0x6c, 0x6f, 0x4d, 0x55, 0x55, 0x61, 0x6b, 0x61, 0x73, 0x75, 0x62, 0x61, 0x168, 0x47, -0x6b, 0x6f, 0x6f, 0x73, 0x6b, 0x6f, 0x6c, 0x69, 0x6e, 0x79, 0x1c3, 0x75, 0x69, 0x61, 0x73, 0x55, 0x68, 0x72, 0x20, 0x6e, -0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x61, 0x63, 0x68, 0x73, 0x190, 0x6e, 0x64, 0xe1, 0x6d, 0xe2, 0x45, 0x69, 0x67, -0x75, 0x6c, 0x6f, 0x69, 0x63, 0x68, 0x61, 0x6d, 0x74, 0x68, 0x69, 0x45, 0x62, 0x6f, 0x6e, 0x67, 0x69, 0x41, 0x6c, 0x75, -0x75, 0x6c, 0x61, 0x4f, 0x54, 0x1e0c, 0x65, 0x66, 0x66, 0x69, 0x72, 0x20, 0x61, 0x7a, 0x61, 0x6e, 0x79, 0x69, 0x61, 0x67, -0x68, 0x75, 0x6f, 0x92c, 0x947, 0x932, 0x93e, 0x938, 0x947, 0x44, 0x69, 0x6c, 0x6f, 0x6c, 0x6f, 0x6e, 0x6f, 0x6d, 0xeb, 0x74, -0x74, 0x65, 0x73, 0x61, 0x2e, 0x6b, 0x49, 0x20, 0x253, 0x75, 0x67, 0x61, 0x6a, 0x254, 0x70, 0x5a, 0x61, 0x61, 0x72, 0x69, -0x6b, 0x61, 0x79, 0x20, 0x62, 0x65, 0x62, 0x79, 0xe1, 0x6d, 0x75, 0x6e, 0x67, 0x259, 0x67, 0xf3, 0x67, 0x259, 0x6c, 0x65, -0x63, 0x25b, 0x25b, 0x301, 0x6e, 0x6b, 0x6f, 0x6d, 0x63, 0x68, 0x6f, 0x63, 0x68, 0x69, 0x6c, 0x2019, 0x6c, 0x6c, 0x69, 0x6c, -0x6c, 0x69, 0x6b, 0x75, 0x67, 0xfa, 0x54, 0x14a, 0x42d, 0x41a, 0x50, 0x61, 0x73, 0x68, 0x61, 0x6d, 0x69, 0x68, 0x65, 0x6b, -0x69, 0x73, 0x25b, 0x301, 0x6e, 0x64, 0x25b, 0x64, 0x65, 0x20, 0x6c, 0x61, 0x20, 0x74, 0x61, 0x72, 0x64, 0x65, 0x14b, 0x6b, -0x61, 0x20, 0x6d, 0x62, 0x254, 0x301, 0x74, 0x20, 0x6e, 0x6a, 0x69, 0x6e, 0x63, 0x77, 0xf2, 0x6e, 0x7a, 0xe9, 0x6d, 0x9aa, -0x9bf, 0x20, 0x98f, 0x9ae, 0x1c5f, 0x1c79, 0x1c6d, 0x1c69, 0x1c75, 0x2f, 0x1c67, 0x1c64, 0x1c6b, 0x1c5f, 0x62f, 0x2e, 0x646, 0x77, 0xf3, 0x74, -0x70, 0x6f, 0x142, 0x64, 0x6e, 0x6a, 0x61, 0x70, 0x6f, 0x70, 0x6f, 0x142, 0x64, 0x6e, 0x6a, 0x75, 0x65, 0x70, 0x2e, 0x46, -0x1ecd, 0x20, 0xed, 0x76, 0x6e, 0x69, 0x6e +0x54, 0x47, 0x4af, 0x2e, 0x445, 0x2e, 0x905, 0x92a, 0x930, 0x93e, 0x939, 0x94d, 0x928, 0x63a, 0x2e, 0x648, 0x2e, 0x628, 0x639, 0x62f, +0x627, 0x632, 0x638, 0x647, 0x631, 0x64, 0x61, 0x20, 0x74, 0x61, 0x72, 0x64, 0x65, 0xa2c, 0xa3e, 0x2e, 0xa26, 0xa41, 0x2e, 0x4c, +0x4b, 0x43f, 0x43e, 0x20, 0x43f, 0x43e, 0x434, 0x43d, 0x435, 0x70, 0x6f, 0x20, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x4d5, 0x43c, 0x431, +0x438, 0x441, 0x431, 0x43e, 0x43d, 0x44b, 0x20, 0x444, 0x4d5, 0x441, 0x442, 0x4d5, 0x645, 0x646, 0x62c, 0x647, 0x646, 0x62f, 0x60c, 0x20, +0x634, 0x627, 0x645, 0x92e, 0x902, 0x91d, 0x902, 0x926, 0x93f, 0x20, 0x915, 0x94b, 0x20, 0x92a, 0x94b, 0x90f, 0xdb4, 0x2e, 0xdc0, 0x2e, +0x70, 0x6f, 0x70, 0x2e, 0x47, 0x44, 0x65, 0x6d, 0xbaa, 0xbbf, 0xbb1, 0xbcd, 0xbaa, 0xb95, 0xbb2, 0xbcd, 0xe2b, 0xe25, 0xe31, 0xe07, +0xe40, 0xe17, 0xe35, 0xe48, 0xe22, 0xe07, 0xf55, 0xfb1, 0xf72, 0xf0b, 0xf51, 0xfb2, 0xf7c, 0xf0b, 0x12f0, 0x1215, 0x1228, 0x20, 0x134d, 0x122d, +0x1240, 0x2d, 0x1218, 0x12d3, 0x120d, 0x1272, 0x65, 0x66, 0x69, 0x61, 0x66, 0x69, 0xd6, 0x53, 0x67, 0xfc, 0x6e, 0x6f, 0x72, 0x74, +0x61, 0x64, 0x61, 0x6e, 0x20, 0x73, 0x6f, 0x148, 0x686, 0x6c8, 0x634, 0x62a, 0x649, 0x646, 0x20, 0x643, 0x6d0, 0x64a, 0x649, 0x646, +0x43f, 0x43f, 0x54, 0x4b, 0x422, 0x41a, 0x43, 0x48, 0x79, 0x68, 0x4e, 0x67, 0x6f, 0x5e0, 0x5d0, 0x5b8, 0x5db, 0x5de, 0x5d9, 0x5d8, +0x5d0, 0x5b8, 0x5d2, 0x1ecc, 0x300, 0x73, 0xe1, 0x6e, 0x186, 0x300, 0x73, 0xe1, 0x6e, 0x65, 0x74, 0x74, 0x65, 0x72, 0x6d, 0x69, +0x64, 0x64, 0x61, 0x67, 0x70, 0x6f, 0x70, 0x6f, 0x64, 0x6e, 0x65, 0x43f, 0x43e, 0x441, 0x43b, 0x438, 0x458, 0x435, 0x20, 0x43f, +0x43e, 0x434, 0x43d, 0x435, 0x45, 0x57, 0x4e, 0x2019, 0x61, 0x62, 0x61, 0x6c, 0x69, 0x128, 0x79, 0x61, 0x77, 0x129, 0x6f, 0x6f, +0x70, 0x2e, 0x263, 0x65, 0x74, 0x72, 0x254, 0x61, 0x6d, 0x20, 0x4e, 0x61, 0x6d, 0x69, 0x74, 0x74, 0x61, 0x67, 0xa06f, 0xa2d2, +0x65, 0x61, 0x68, 0x6b, 0x65, 0x74, 0x62, 0x65, 0x61, 0x69, 0x76, 0x65, 0x74, 0x65, 0x62, 0x4d, 0x6f, 0x67, 0x6c, 0x75, +0x6d, 0x61, 0x20, 0x6c, 0x77, 0x61, 0x20, 0x70, 0x6b, 0x69, 0x6b, 0x69, 0x69, 0x257, 0x65, 0x48, 0x77, 0x61, 0x129, 0x2d, +0x69, 0x6e, 0x129, 0x54, 0x65, 0x69, 0x70, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x6f, 0x74, 0x6f, 0x2d5c, 0x2d30, 0x2d37, 0x2d33, 0x2d33, +0x2d6f, 0x2d30, 0x2d5c, 0x74, 0x61, 0x64, 0x67, 0x67, 0x2b7, 0x61, 0x74, 0x6e, 0x20, 0x74, 0x6d, 0x65, 0x64, 0x64, 0x69, 0x74, +0x70, 0x61, 0x6d, 0x75, 0x6e, 0x79, 0x69, 0x6b, 0x79, 0x69, 0x75, 0x6b, 0x6f, 0x6e, 0x79, 0x69, 0x55, 0x54, 0x13d2, 0x13af, +0x13f1, 0x13a2, 0x13d7, 0x13e2, 0x43, 0x68, 0x69, 0x6c, 0x6f, 0x4d, 0x55, 0x55, 0x61, 0x6b, 0x61, 0x73, 0x75, 0x62, 0x61, 0x168, +0x47, 0x6b, 0x6f, 0x6f, 0x73, 0x6b, 0x6f, 0x6c, 0x69, 0x6e, 0x79, 0x1c3, 0x75, 0x69, 0x61, 0x73, 0x55, 0x68, 0x72, 0x20, +0x6e, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x61, 0x63, 0x68, 0x73, 0x190, 0x6e, 0x64, 0xe1, 0x6d, 0xe2, 0x45, 0x69, +0x67, 0x75, 0x6c, 0x6f, 0x69, 0x63, 0x68, 0x61, 0x6d, 0x74, 0x68, 0x69, 0x45, 0x62, 0x6f, 0x6e, 0x67, 0x69, 0x41, 0x6c, +0x75, 0x75, 0x6c, 0x61, 0x4f, 0x54, 0x1e0c, 0x65, 0x66, 0x66, 0x69, 0x72, 0x20, 0x61, 0x7a, 0x61, 0x6e, 0x79, 0x69, 0x61, +0x67, 0x68, 0x75, 0x6f, 0x92c, 0x947, 0x932, 0x93e, 0x938, 0x947, 0x44, 0x69, 0x6c, 0x6f, 0x6c, 0x6f, 0x6e, 0x6f, 0x6d, 0xeb, +0x74, 0x74, 0x65, 0x73, 0x61, 0x2e, 0x6b, 0x49, 0x20, 0x253, 0x75, 0x67, 0x61, 0x6a, 0x254, 0x70, 0x5a, 0x61, 0x61, 0x72, +0x69, 0x6b, 0x61, 0x79, 0x20, 0x62, 0x65, 0x62, 0x79, 0xe1, 0x6d, 0x75, 0x6e, 0x67, 0x259, 0x67, 0xf3, 0x67, 0x259, 0x6c, +0x65, 0x63, 0x25b, 0x25b, 0x301, 0x6e, 0x6b, 0x6f, 0x6d, 0x63, 0x68, 0x6f, 0x63, 0x68, 0x69, 0x6c, 0x2019, 0x6c, 0x6c, 0x69, +0x6c, 0x6c, 0x69, 0x6b, 0x75, 0x67, 0xfa, 0x54, 0x14a, 0x42d, 0x41a, 0x50, 0x61, 0x73, 0x68, 0x61, 0x6d, 0x69, 0x68, 0x65, +0x6b, 0x69, 0x73, 0x25b, 0x301, 0x6e, 0x64, 0x25b, 0x64, 0x65, 0x20, 0x6c, 0x61, 0x20, 0x74, 0x61, 0x72, 0x64, 0x65, 0x14b, +0x6b, 0x61, 0x20, 0x6d, 0x62, 0x254, 0x301, 0x74, 0x20, 0x6e, 0x6a, 0x69, 0x6e, 0x63, 0x77, 0xf2, 0x6e, 0x7a, 0xe9, 0x6d, +0x92c, 0x93e, 0x926, 0x20, 0x926, 0x92a, 0x948, 0x939, 0x930, 0x9aa, 0x9bf, 0x20, 0x98f, 0x9ae, 0x1c67, 0x1c64, 0x1c6b, 0x1c5f, 0x1c79, 0x62f, +0x2e, 0x646, 0x77, 0xf3, 0x74, 0x70, 0x6f, 0x142, 0x64, 0x6e, 0x6a, 0x61, 0x70, 0x6f, 0x70, 0x6f, 0x142, 0x64, 0x6e, 0x6a, +0x75, 0x65, 0x70, 0x2e, 0x46, 0x1ecd, 0x20, 0xed, 0x76, 0x6e, 0x69, 0x6e }; static const ushort currency_symbol_data[] = { @@ -3349,14 +3344,14 @@ 0x24, 0x48, 0x52, 0x4b, 0x4b, 0x4d, 0x4b, 0x10d, 0x6b, 0x72, 0x2e, 0x41, 0x66, 0x6c, 0x2e, 0x4e, 0x41, 0x66, 0x2e, 0x55, 0x53, 0x24, 0x50, 0x46, 0x42, 0x75, 0x44, 0x47, 0x48, 0x20b5, 0x41, 0x72, 0x4d, 0x4b, 0x52, 0x4d, 0x52, 0x73, 0x20a6, 0x20b1, 0x52, 0x46, 0x57, 0x53, 0x24, 0x53, 0x52, 0x4c, 0x65, 0x45, 0x6b, 0x72, 0x54, 0x53, 0x68, 0x54, 0x24, 0x55, 0x53, 0x68, -0x41, 0x45, 0x44, 0x56, 0x54, 0x44, 0x41, 0x43, 0x46, 0x41, 0x46, 0x43, 0x46, 0x43, 0x46, 0x50, 0x46, 0x47, 0x47, 0x55, -0x4d, 0x4d, 0x41, 0x44, 0x43, 0x48, 0x46, 0x4c, 0x53, 0x44, 0x54, 0x20be, 0x20b2, 0x46, 0x74, 0x49, 0x53, 0x4b, 0x52, 0x70, -0x43, 0x41, 0x24, 0xffe5, 0x20b8, 0x441, 0x43e, 0x43c, 0x20a9, 0x4b, 0x50, 0x57, 0x20ba, 0x20ad, 0x4b, 0x7a, 0x434, 0x435, 0x43d, 0x2e, -0x20ae, 0x43, 0x4e, 0xa5, 0x928, 0x947, 0x930, 0x942, 0x60b, 0x631, 0x6cc, 0x627, 0x644, 0x7a, 0x142, 0x52, 0x24, 0x200b, 0x4d, 0x54, -0x6e, 0x44, 0x62, 0x631, 0x53, 0x2f, 0x42, 0x73, 0x52, 0x4f, 0x4e, 0x4c, 0x20b4, 0x52, 0x53, 0x44, 0x41a, 0x41c, 0xdbb, 0xdd4, -0x2e, 0x20a1, 0x52, 0x44, 0x24, 0x51, 0x43, 0x24, 0x42, 0x2f, 0x2e, 0x47, 0x73, 0x2e, 0x42, 0x73, 0x2e, 0x53, 0x441, 0x43e, -0x43c, 0x2e, 0x52, 0x73, 0x2e, 0xe3f, 0x54, 0x4d, 0x54, 0x73, 0x6f, 0x2bb, 0x6d, 0x441, 0x45e, 0x43c, 0x20ab, 0x4e, 0x54, 0x24, -0x41, 0x24, 0x49, 0x52, 0x52 +0x41, 0x45, 0x44, 0x56, 0x54, 0x44, 0x41, 0x43, 0x46, 0x41, 0x24, 0xa0, 0x43, 0x41, 0x46, 0x43, 0x46, 0x43, 0x46, 0x50, +0x46, 0x47, 0x47, 0x55, 0x4d, 0x4d, 0x41, 0x44, 0x43, 0x48, 0x46, 0x4c, 0x53, 0x44, 0x54, 0x20be, 0x20b2, 0x46, 0x74, 0x49, +0x53, 0x4b, 0x52, 0x70, 0x43, 0x41, 0x24, 0xffe5, 0x20b8, 0x441, 0x43e, 0x43c, 0x20a9, 0x4b, 0x50, 0x57, 0x20ba, 0x20ad, 0x4b, 0x7a, +0x434, 0x435, 0x43d, 0x2e, 0x20ae, 0x43, 0x4e, 0xa5, 0x928, 0x947, 0x930, 0x942, 0x60b, 0x631, 0x6cc, 0x627, 0x644, 0x7a, 0x142, 0x52, +0x24, 0x200b, 0x4d, 0x54, 0x6e, 0x44, 0x62, 0x631, 0x53, 0x2f, 0x42, 0x73, 0x52, 0x4f, 0x4e, 0x4c, 0x20b4, 0x52, 0x53, 0x44, +0x41a, 0x41c, 0xdbb, 0xdd4, 0x2e, 0x20a1, 0x52, 0x44, 0x24, 0x51, 0x43, 0x24, 0x42, 0x2f, 0x2e, 0x47, 0x73, 0x2e, 0x42, 0x73, +0x2e, 0x53, 0x441, 0x43e, 0x43c, 0x2e, 0x52, 0x73, 0x2e, 0xe3f, 0x54, 0x4d, 0x54, 0x73, 0x6f, 0x2bb, 0x6d, 0x441, 0x45e, 0x43c, +0x20ab, 0x4e, 0x54, 0x24, 0x41, 0x24, 0x49, 0x52, 0x52 }; static const ushort currency_display_name_data[] = { @@ -3564,146 +3559,146 @@ 0x3b, 0x42, 0x61, 0x72, 0x62, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x42, 0x65, 0x6c, 0x69, 0x7a, 0x65, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x42, 0x65, 0x6c, 0x69, 0x7a, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x42, 0x65, 0x6c, 0x69, 0x7a, 0x65, 0x20, 0x64, 0x6f, -0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x42, 0x65, 0x72, 0x6d, 0x75, 0x64, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, -0x72, 0x3b, 0x3b, 0x42, 0x65, 0x72, 0x6d, 0x75, 0x64, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, -0x3b, 0x3b, 0x42, 0x65, 0x72, 0x6d, 0x75, 0x64, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x42, -0x6f, 0x74, 0x73, 0x77, 0x61, 0x6e, 0x61, 0x6e, 0x20, 0x50, 0x75, 0x6c, 0x61, 0x3b, 0x3b, 0x42, 0x6f, 0x74, 0x73, 0x77, -0x61, 0x6e, 0x61, 0x6e, 0x20, 0x70, 0x75, 0x6c, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x42, 0x6f, 0x74, 0x73, 0x77, 0x61, 0x6e, -0x61, 0x6e, 0x20, 0x70, 0x75, 0x6c, 0x61, 0x73, 0x3b, 0x42, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x46, -0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x42, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x66, 0x72, 0x61, 0x6e, -0x63, 0x3b, 0x3b, 0x3b, 0x3b, 0x42, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, -0x73, 0x3b, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x43, 0x46, -0x41, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x66, 0x72, -0x69, 0x63, 0x61, 0x6e, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x65, -0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, -0x61, 0x6e, 0x63, 0x73, 0x3b, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, -0x3b, 0x3b, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, -0x3b, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x43, 0x61, -0x79, 0x6d, 0x61, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, -0x3b, 0x43, 0x61, 0x79, 0x6d, 0x61, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x64, 0x6f, 0x6c, 0x6c, -0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x61, 0x79, 0x6d, 0x61, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, -0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x4e, 0x65, 0x77, 0x20, 0x5a, 0x65, 0x61, 0x6c, 0x61, 0x6e, 0x64, -0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x4e, 0x65, 0x77, 0x20, 0x5a, 0x65, 0x61, 0x6c, 0x61, 0x6e, 0x64, -0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x65, 0x77, 0x20, 0x5a, 0x65, 0x61, 0x6c, 0x61, -0x6e, 0x64, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x44, 0x61, 0x6e, 0x69, 0x73, 0x68, 0x20, 0x4b, 0x72, -0x6f, 0x6e, 0x65, 0x3b, 0x3b, 0x44, 0x61, 0x6e, 0x69, 0x73, 0x68, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, -0x3b, 0x44, 0x61, 0x6e, 0x69, 0x73, 0x68, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x72, 0x3b, 0x45, 0x72, 0x69, 0x74, 0x72, -0x65, 0x61, 0x6e, 0x20, 0x4e, 0x61, 0x6b, 0x66, 0x61, 0x3b, 0x3b, 0x45, 0x72, 0x69, 0x74, 0x72, 0x65, 0x61, 0x6e, 0x20, -0x6e, 0x61, 0x6b, 0x66, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x72, 0x69, 0x74, 0x72, 0x65, 0x61, 0x6e, 0x20, 0x6e, 0x61, -0x6b, 0x66, 0x61, 0x73, 0x3b, 0x46, 0x61, 0x6c, 0x6b, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, -0x73, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x46, 0x61, 0x6c, 0x6b, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x49, 0x73, -0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x61, 0x6c, 0x6b, 0x6c, -0x61, 0x6e, 0x64, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x46, -0x69, 0x6a, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x46, 0x69, 0x6a, 0x69, 0x61, 0x6e, -0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x69, 0x6a, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, -0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x55, 0x4b, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x55, 0x4b, 0x20, 0x70, -0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x4b, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x47, 0x61, -0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x61, 0x6c, 0x61, 0x73, 0x69, 0x3b, 0x3b, 0x47, 0x61, 0x6d, 0x62, 0x69, 0x61, -0x6e, 0x20, 0x64, 0x61, 0x6c, 0x61, 0x73, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x47, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, -0x64, 0x61, 0x6c, 0x61, 0x73, 0x69, 0x73, 0x3b, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x69, 0x61, 0x6e, 0x20, 0x43, 0x65, 0x64, -0x69, 0x3b, 0x3b, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x69, 0x61, 0x6e, 0x20, 0x63, 0x65, 0x64, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, -0x47, 0x68, 0x61, 0x6e, 0x61, 0x69, 0x61, 0x6e, 0x20, 0x63, 0x65, 0x64, 0x69, 0x73, 0x3b, 0x47, 0x69, 0x62, 0x72, 0x61, -0x6c, 0x74, 0x61, 0x72, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x47, 0x69, 0x62, 0x72, 0x61, 0x6c, 0x74, 0x61, -0x72, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x47, 0x69, 0x62, 0x72, 0x61, 0x6c, 0x74, 0x61, 0x72, -0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x65, 0x73, 0x65, 0x20, 0x44, 0x6f, -0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x65, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, -0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x65, 0x73, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, -0x61, 0x72, 0x73, 0x3b, 0x48, 0x6f, 0x6e, 0x67, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, -0x3b, 0x3b, 0x48, 0x6f, 0x6e, 0x67, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, -0x3b, 0x3b, 0x48, 0x6f, 0x6e, 0x67, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, -0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x52, 0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, -0x20, 0x72, 0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x72, 0x75, 0x70, -0x65, 0x65, 0x73, 0x3b, 0x49, 0x73, 0x72, 0x61, 0x65, 0x6c, 0x69, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x53, 0x68, 0x65, 0x6b, -0x65, 0x6c, 0x3b, 0x3b, 0x49, 0x73, 0x72, 0x61, 0x65, 0x6c, 0x69, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x73, 0x68, 0x65, 0x6b, -0x65, 0x6c, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x73, 0x72, 0x61, 0x65, 0x6c, 0x69, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x73, 0x68, -0x65, 0x6b, 0x65, 0x6c, 0x73, 0x3b, 0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, -0x72, 0x3b, 0x3b, 0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, -0x3b, 0x3b, 0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x4b, -0x65, 0x6e, 0x79, 0x61, 0x6e, 0x20, 0x53, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x4b, 0x65, 0x6e, 0x79, -0x61, 0x6e, 0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x3b, 0x3b, 0x4b, 0x65, 0x6e, 0x79, 0x61, -0x6e, 0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x3b, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, -0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, -0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x72, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, -0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x72, 0x61, 0x6e, 0x64, 0x3b, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, -0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, 0x6e, 0x20, 0x64, -0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, -0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x4d, 0x61, 0x63, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x50, 0x61, 0x74, 0x61, 0x63, -0x61, 0x3b, 0x3b, 0x4d, 0x61, 0x63, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x70, 0x61, 0x74, 0x61, 0x63, 0x61, 0x3b, 0x3b, -0x3b, 0x3b, 0x4d, 0x61, 0x63, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x70, 0x61, 0x74, 0x61, 0x63, 0x61, 0x73, 0x3b, 0x4d, -0x61, 0x6c, 0x61, 0x67, 0x61, 0x73, 0x79, 0x20, 0x41, 0x72, 0x69, 0x61, 0x72, 0x79, 0x3b, 0x3b, 0x4d, 0x61, 0x6c, 0x61, -0x67, 0x61, 0x73, 0x79, 0x20, 0x61, 0x72, 0x69, 0x61, 0x72, 0x79, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x67, -0x61, 0x73, 0x79, 0x20, 0x61, 0x72, 0x69, 0x61, 0x72, 0x69, 0x65, 0x73, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x77, 0x69, 0x61, -0x6e, 0x20, 0x4b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x3b, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x77, 0x69, 0x61, 0x6e, 0x20, 0x6b, -0x77, 0x61, 0x63, 0x68, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x77, 0x69, 0x61, 0x6e, 0x20, 0x6b, 0x77, -0x61, 0x63, 0x68, 0x61, 0x73, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x6e, 0x20, 0x52, 0x69, 0x6e, 0x67, -0x67, 0x69, 0x74, 0x3b, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x6e, 0x20, 0x72, 0x69, 0x6e, 0x67, 0x67, -0x69, 0x74, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x6e, 0x20, 0x72, 0x69, 0x6e, 0x67, -0x67, 0x69, 0x74, 0x73, 0x3b, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x20, 0x52, 0x75, 0x70, 0x65, 0x65, -0x3b, 0x3b, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x20, 0x72, 0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, 0x3b, -0x3b, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x20, 0x72, 0x75, 0x70, 0x65, 0x65, 0x73, 0x3b, 0x4e, 0x61, -0x6d, 0x69, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x4e, 0x61, 0x6d, 0x69, 0x62, -0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, -0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x69, 0x61, 0x6e, 0x20, -0x4e, 0x61, 0x69, 0x72, 0x61, 0x3b, 0x3b, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x69, 0x61, 0x6e, 0x20, 0x6e, 0x61, 0x69, 0x72, -0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x69, 0x61, 0x6e, 0x20, 0x6e, 0x61, 0x69, 0x72, 0x61, 0x73, -0x3b, 0x50, 0x61, 0x6b, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x69, 0x20, 0x52, 0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, 0x50, 0x61, -0x6b, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x69, 0x20, 0x72, 0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x50, 0x61, 0x6b, -0x69, 0x73, 0x74, 0x61, 0x6e, 0x69, 0x20, 0x72, 0x75, 0x70, 0x65, 0x65, 0x73, 0x3b, 0x50, 0x61, 0x70, 0x75, 0x61, 0x20, -0x4e, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, 0x6e, 0x20, 0x4b, 0x69, 0x6e, 0x61, 0x3b, 0x3b, 0x50, 0x61, -0x70, 0x75, 0x61, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, 0x6e, 0x20, 0x6b, 0x69, 0x6e, 0x61, -0x3b, 0x3b, 0x3b, 0x3b, 0x50, 0x61, 0x70, 0x75, 0x61, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, -0x6e, 0x20, 0x6b, 0x69, 0x6e, 0x61, 0x3b, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x20, 0x50, 0x69, -0x73, 0x6f, 0x3b, 0x3b, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x20, 0x70, 0x69, 0x73, 0x6f, 0x3b, -0x3b, 0x3b, 0x3b, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x20, 0x70, 0x69, 0x73, 0x6f, 0x73, 0x3b, -0x52, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x52, 0x77, 0x61, 0x6e, 0x64, -0x61, 0x6e, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, -0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x3b, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x6e, 0x20, 0x54, 0x61, 0x6c, 0x61, 0x3b, 0x3b, -0x53, 0x61, 0x6d, 0x6f, 0x61, 0x6e, 0x20, 0x74, 0x61, 0x6c, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x61, 0x6d, 0x6f, 0x61, -0x6e, 0x20, 0x74, 0x61, 0x6c, 0x61, 0x3b, 0x53, 0x65, 0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x69, 0x73, 0x20, 0x52, -0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, 0x53, 0x65, 0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x69, 0x73, 0x20, 0x72, 0x75, -0x70, 0x65, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x65, 0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x69, 0x73, 0x20, 0x72, -0x75, 0x70, 0x65, 0x65, 0x73, 0x3b, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x20, 0x4c, 0x65, 0x6f, 0x6e, 0x65, 0x61, 0x6e, -0x20, 0x4c, 0x65, 0x6f, 0x6e, 0x65, 0x3b, 0x3b, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x20, 0x4c, 0x65, 0x6f, 0x6e, 0x65, -0x61, 0x6e, 0x20, 0x6c, 0x65, 0x6f, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x20, 0x4c, -0x65, 0x6f, 0x6e, 0x65, 0x61, 0x6e, 0x20, 0x6c, 0x65, 0x6f, 0x6e, 0x65, 0x73, 0x3b, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, -0x6f, 0x72, 0x65, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, -0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, -0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x53, 0x6f, 0x6c, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x49, 0x73, -0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x53, 0x6f, 0x6c, 0x6f, 0x6d, 0x6f, -0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, -0x53, 0x6f, 0x6c, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x64, 0x6f, 0x6c, 0x6c, -0x61, 0x72, 0x73, 0x3b, 0x53, 0x74, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, -0x3b, 0x53, 0x74, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, -0x53, 0x74, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x53, 0x75, 0x64, -0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, -0x65, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, -0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x53, 0x77, 0x61, 0x7a, 0x69, 0x20, 0x4c, 0x69, 0x6c, 0x61, 0x6e, 0x67, 0x65, -0x6e, 0x69, 0x3b, 0x3b, 0x53, 0x77, 0x61, 0x7a, 0x69, 0x20, 0x6c, 0x69, 0x6c, 0x61, 0x6e, 0x67, 0x65, 0x6e, 0x69, 0x3b, -0x3b, 0x3b, 0x3b, 0x53, 0x77, 0x61, 0x7a, 0x69, 0x20, 0x65, 0x6d, 0x61, 0x6c, 0x61, 0x6e, 0x67, 0x65, 0x6e, 0x69, 0x3b, -0x53, 0x77, 0x65, 0x64, 0x69, 0x73, 0x68, 0x20, 0x4b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b, 0x53, 0x77, 0x65, 0x64, 0x69, -0x73, 0x68, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x77, 0x65, 0x64, 0x69, 0x73, 0x68, 0x20, -0x6b, 0x72, 0x6f, 0x6e, 0x6f, 0x72, 0x3b, 0x53, 0x77, 0x69, 0x73, 0x73, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, -0x53, 0x77, 0x69, 0x73, 0x73, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x77, 0x69, 0x73, 0x73, -0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x3b, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x6e, 0x20, 0x53, 0x68, -0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x6e, 0x20, 0x73, 0x68, -0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x6e, 0x20, -0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x3b, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x6e, 0x20, 0x50, 0x61, 0x2bb, -0x61, 0x6e, 0x67, 0x61, 0x3b, 0x3b, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x6e, 0x20, 0x70, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61, -0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x6e, 0x20, 0x70, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x3b, 0x54, -0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, 0x61, 0x67, 0x6f, 0x20, 0x44, 0x6f, 0x6c, -0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, 0x61, -0x67, 0x6f, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, -0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, 0x61, 0x67, 0x6f, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x55, -0x67, 0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, 0x53, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x55, 0x67, 0x61, -0x6e, 0x64, 0x61, 0x6e, 0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x67, 0x61, -0x6e, 0x64, 0x61, 0x6e, 0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x3b, 0x55, 0x6e, 0x69, 0x74, 0x65, -0x64, 0x20, 0x41, 0x72, 0x61, 0x62, 0x20, 0x45, 0x6d, 0x69, 0x72, 0x61, 0x74, 0x65, 0x73, 0x20, 0x44, 0x69, 0x72, 0x68, -0x61, 0x6d, 0x3b, 0x3b, 0x55, 0x41, 0x45, 0x20, 0x64, 0x69, 0x72, 0x68, 0x61, 0x6d, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x41, -0x45, 0x20, 0x64, 0x69, 0x72, 0x68, 0x61, 0x6d, 0x73, 0x3b, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x50, 0x6f, -0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, -0x3b, 0x3b, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x56, 0x61, 0x6e, -0x75, 0x61, 0x74, 0x75, 0x20, 0x56, 0x61, 0x74, 0x75, 0x3b, 0x3b, 0x56, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x20, 0x76, -0x61, 0x74, 0x75, 0x3b, 0x3b, 0x3b, 0x3b, 0x56, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x20, 0x76, 0x61, 0x74, 0x75, 0x73, +0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x42, 0x65, 0x72, 0x6d, 0x75, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, +0x61, 0x72, 0x3b, 0x3b, 0x42, 0x65, 0x72, 0x6d, 0x75, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, +0x3b, 0x3b, 0x3b, 0x3b, 0x42, 0x65, 0x72, 0x6d, 0x75, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, +0x73, 0x3b, 0x42, 0x6f, 0x74, 0x73, 0x77, 0x61, 0x6e, 0x61, 0x6e, 0x20, 0x50, 0x75, 0x6c, 0x61, 0x3b, 0x3b, 0x42, 0x6f, +0x74, 0x73, 0x77, 0x61, 0x6e, 0x61, 0x6e, 0x20, 0x70, 0x75, 0x6c, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x42, 0x6f, 0x74, 0x73, +0x77, 0x61, 0x6e, 0x61, 0x6e, 0x20, 0x70, 0x75, 0x6c, 0x61, 0x73, 0x3b, 0x42, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x61, +0x6e, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x42, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x66, +0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x3b, 0x3b, 0x42, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x66, 0x72, +0x61, 0x6e, 0x63, 0x73, 0x3b, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, +0x20, 0x43, 0x46, 0x41, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, +0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x3b, +0x3b, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x43, 0x46, 0x41, +0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x3b, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, +0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, +0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, +0x3b, 0x43, 0x61, 0x79, 0x6d, 0x61, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x44, 0x6f, 0x6c, 0x6c, +0x61, 0x72, 0x3b, 0x3b, 0x43, 0x61, 0x79, 0x6d, 0x61, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x64, +0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x61, 0x79, 0x6d, 0x61, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, +0x6e, 0x64, 0x73, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x4e, 0x65, 0x77, 0x20, 0x5a, 0x65, 0x61, 0x6c, +0x61, 0x6e, 0x64, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x4e, 0x65, 0x77, 0x20, 0x5a, 0x65, 0x61, 0x6c, +0x61, 0x6e, 0x64, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x65, 0x77, 0x20, 0x5a, 0x65, +0x61, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x44, 0x61, 0x6e, 0x69, 0x73, 0x68, +0x20, 0x4b, 0x72, 0x6f, 0x6e, 0x65, 0x3b, 0x3b, 0x44, 0x61, 0x6e, 0x69, 0x73, 0x68, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, +0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x61, 0x6e, 0x69, 0x73, 0x68, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x72, 0x3b, 0x45, 0x72, +0x69, 0x74, 0x72, 0x65, 0x61, 0x6e, 0x20, 0x4e, 0x61, 0x6b, 0x66, 0x61, 0x3b, 0x3b, 0x45, 0x72, 0x69, 0x74, 0x72, 0x65, +0x61, 0x6e, 0x20, 0x6e, 0x61, 0x6b, 0x66, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x72, 0x69, 0x74, 0x72, 0x65, 0x61, 0x6e, +0x20, 0x6e, 0x61, 0x6b, 0x66, 0x61, 0x73, 0x3b, 0x46, 0x61, 0x6c, 0x6b, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x49, 0x73, 0x6c, +0x61, 0x6e, 0x64, 0x73, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x46, 0x61, 0x6c, 0x6b, 0x6c, 0x61, 0x6e, 0x64, +0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x61, +0x6c, 0x6b, 0x6c, 0x61, 0x6e, 0x64, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, +0x73, 0x3b, 0x46, 0x69, 0x6a, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x46, 0x69, 0x6a, +0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x69, 0x6a, 0x69, 0x61, 0x6e, +0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x55, 0x4b, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x55, +0x4b, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x4b, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, +0x3b, 0x47, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x61, 0x6c, 0x61, 0x73, 0x69, 0x3b, 0x3b, 0x47, 0x61, 0x6d, +0x62, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x61, 0x6c, 0x61, 0x73, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x47, 0x61, 0x6d, 0x62, 0x69, +0x61, 0x6e, 0x20, 0x64, 0x61, 0x6c, 0x61, 0x73, 0x69, 0x73, 0x3b, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x69, 0x61, 0x6e, 0x20, +0x43, 0x65, 0x64, 0x69, 0x3b, 0x3b, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x69, 0x61, 0x6e, 0x20, 0x63, 0x65, 0x64, 0x69, 0x3b, +0x3b, 0x3b, 0x3b, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x69, 0x61, 0x6e, 0x20, 0x63, 0x65, 0x64, 0x69, 0x73, 0x3b, 0x47, 0x69, +0x62, 0x72, 0x61, 0x6c, 0x74, 0x61, 0x72, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x47, 0x69, 0x62, 0x72, 0x61, +0x6c, 0x74, 0x61, 0x72, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x47, 0x69, 0x62, 0x72, 0x61, 0x6c, +0x74, 0x61, 0x72, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x65, 0x73, 0x65, +0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x65, 0x73, 0x65, 0x20, 0x64, +0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x65, 0x73, 0x65, 0x20, 0x64, +0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x48, 0x6f, 0x6e, 0x67, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x20, 0x44, 0x6f, 0x6c, +0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x48, 0x6f, 0x6e, 0x67, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, +0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x48, 0x6f, 0x6e, 0x67, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, +0x72, 0x73, 0x3b, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, 0x52, 0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, 0x49, 0x6e, 0x64, +0x69, 0x61, 0x6e, 0x20, 0x72, 0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x20, +0x72, 0x75, 0x70, 0x65, 0x65, 0x73, 0x3b, 0x49, 0x73, 0x72, 0x61, 0x65, 0x6c, 0x69, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x53, +0x68, 0x65, 0x6b, 0x65, 0x6c, 0x3b, 0x3b, 0x49, 0x73, 0x72, 0x61, 0x65, 0x6c, 0x69, 0x20, 0x6e, 0x65, 0x77, 0x20, 0x73, +0x68, 0x65, 0x6b, 0x65, 0x6c, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x73, 0x72, 0x61, 0x65, 0x6c, 0x69, 0x20, 0x6e, 0x65, 0x77, +0x20, 0x73, 0x68, 0x65, 0x6b, 0x65, 0x6c, 0x73, 0x3b, 0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x44, 0x6f, +0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, +0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, +0x73, 0x3b, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x6e, 0x20, 0x53, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x4b, +0x65, 0x6e, 0x79, 0x61, 0x6e, 0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x3b, 0x3b, 0x4b, 0x65, +0x6e, 0x79, 0x61, 0x6e, 0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x3b, 0x53, 0x6f, 0x75, 0x74, 0x68, +0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x53, 0x6f, 0x75, 0x74, 0x68, +0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x72, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6f, 0x75, +0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x72, 0x61, 0x6e, 0x64, 0x3b, 0x4c, 0x69, 0x62, 0x65, +0x72, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, +0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x61, 0x6e, +0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x4d, 0x61, 0x63, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x50, 0x61, +0x74, 0x61, 0x63, 0x61, 0x3b, 0x3b, 0x4d, 0x61, 0x63, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x70, 0x61, 0x74, 0x61, 0x63, +0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x61, 0x63, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x70, 0x61, 0x74, 0x61, 0x63, 0x61, +0x73, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x67, 0x61, 0x73, 0x79, 0x20, 0x41, 0x72, 0x69, 0x61, 0x72, 0x79, 0x3b, 0x3b, 0x4d, +0x61, 0x6c, 0x61, 0x67, 0x61, 0x73, 0x79, 0x20, 0x61, 0x72, 0x69, 0x61, 0x72, 0x79, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x61, +0x6c, 0x61, 0x67, 0x61, 0x73, 0x79, 0x20, 0x61, 0x72, 0x69, 0x61, 0x72, 0x79, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x77, 0x69, +0x61, 0x6e, 0x20, 0x4b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x3b, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x77, 0x69, 0x61, 0x6e, 0x20, +0x6b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x77, 0x69, 0x61, 0x6e, 0x20, 0x6b, +0x77, 0x61, 0x63, 0x68, 0x61, 0x73, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x6e, 0x20, 0x52, 0x69, 0x6e, +0x67, 0x67, 0x69, 0x74, 0x3b, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x6e, 0x20, 0x72, 0x69, 0x6e, 0x67, +0x67, 0x69, 0x74, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x6e, 0x20, 0x72, 0x69, 0x6e, +0x67, 0x67, 0x69, 0x74, 0x73, 0x3b, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x20, 0x52, 0x75, 0x70, 0x65, +0x65, 0x3b, 0x3b, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x20, 0x72, 0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, +0x3b, 0x3b, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x61, 0x6e, 0x20, 0x72, 0x75, 0x70, 0x65, 0x65, 0x73, 0x3b, 0x4e, +0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x4e, 0x61, 0x6d, 0x69, +0x62, 0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61, 0x6d, 0x69, 0x62, +0x69, 0x61, 0x6e, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x69, 0x61, 0x6e, +0x20, 0x4e, 0x61, 0x69, 0x72, 0x61, 0x3b, 0x3b, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x69, 0x61, 0x6e, 0x20, 0x6e, 0x61, 0x69, +0x72, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x69, 0x61, 0x6e, 0x20, 0x6e, 0x61, 0x69, 0x72, 0x61, +0x73, 0x3b, 0x50, 0x61, 0x6b, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x69, 0x20, 0x52, 0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, 0x50, +0x61, 0x6b, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x69, 0x20, 0x72, 0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x50, 0x61, +0x6b, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x69, 0x20, 0x72, 0x75, 0x70, 0x65, 0x65, 0x73, 0x3b, 0x50, 0x61, 0x70, 0x75, 0x61, +0x20, 0x4e, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, 0x6e, 0x20, 0x4b, 0x69, 0x6e, 0x61, 0x3b, 0x3b, 0x50, +0x61, 0x70, 0x75, 0x61, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, 0x6e, 0x20, 0x6b, 0x69, 0x6e, +0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x50, 0x61, 0x70, 0x75, 0x61, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6e, 0x65, +0x61, 0x6e, 0x20, 0x6b, 0x69, 0x6e, 0x61, 0x3b, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x20, 0x50, +0x65, 0x73, 0x6f, 0x3b, 0x3b, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x20, 0x70, 0x65, 0x73, 0x6f, +0x3b, 0x3b, 0x3b, 0x3b, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x20, 0x70, 0x65, 0x73, 0x6f, 0x73, +0x3b, 0x52, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x52, 0x77, 0x61, 0x6e, +0x64, 0x61, 0x6e, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x6e, +0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x3b, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x6e, 0x20, 0x54, 0x61, 0x6c, 0x61, 0x3b, +0x3b, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x6e, 0x20, 0x74, 0x61, 0x6c, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x61, 0x6d, 0x6f, +0x61, 0x6e, 0x20, 0x74, 0x61, 0x6c, 0x61, 0x3b, 0x53, 0x65, 0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x69, 0x73, 0x20, +0x52, 0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, 0x53, 0x65, 0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x69, 0x73, 0x20, 0x72, +0x75, 0x70, 0x65, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x65, 0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x6f, 0x69, 0x73, 0x20, +0x72, 0x75, 0x70, 0x65, 0x65, 0x73, 0x3b, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x20, 0x4c, 0x65, 0x6f, 0x6e, 0x65, 0x61, +0x6e, 0x20, 0x4c, 0x65, 0x6f, 0x6e, 0x65, 0x3b, 0x3b, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x20, 0x4c, 0x65, 0x6f, 0x6e, +0x65, 0x61, 0x6e, 0x20, 0x6c, 0x65, 0x6f, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x20, +0x4c, 0x65, 0x6f, 0x6e, 0x65, 0x61, 0x6e, 0x20, 0x6c, 0x65, 0x6f, 0x6e, 0x65, 0x73, 0x3b, 0x53, 0x69, 0x6e, 0x67, 0x61, +0x70, 0x6f, 0x72, 0x65, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, +0x72, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, +0x72, 0x65, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, 0x53, 0x6f, 0x6c, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x49, +0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x53, 0x6f, 0x6c, 0x6f, 0x6d, +0x6f, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, +0x3b, 0x53, 0x6f, 0x6c, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x64, 0x6f, 0x6c, +0x6c, 0x61, 0x72, 0x73, 0x3b, 0x53, 0x74, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, +0x3b, 0x3b, 0x53, 0x74, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, +0x3b, 0x53, 0x74, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x53, 0x75, +0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, 0x20, 0x50, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, +0x73, 0x65, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x65, 0x73, 0x65, +0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x53, 0x77, 0x61, 0x7a, 0x69, 0x20, 0x4c, 0x69, 0x6c, 0x61, 0x6e, 0x67, +0x65, 0x6e, 0x69, 0x3b, 0x3b, 0x53, 0x77, 0x61, 0x7a, 0x69, 0x20, 0x6c, 0x69, 0x6c, 0x61, 0x6e, 0x67, 0x65, 0x6e, 0x69, +0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x77, 0x61, 0x7a, 0x69, 0x20, 0x65, 0x6d, 0x61, 0x6c, 0x61, 0x6e, 0x67, 0x65, 0x6e, 0x69, +0x3b, 0x53, 0x77, 0x65, 0x64, 0x69, 0x73, 0x68, 0x20, 0x4b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b, 0x53, 0x77, 0x65, 0x64, +0x69, 0x73, 0x68, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x77, 0x65, 0x64, 0x69, 0x73, 0x68, +0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x6f, 0x72, 0x3b, 0x53, 0x77, 0x69, 0x73, 0x73, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x3b, +0x3b, 0x53, 0x77, 0x69, 0x73, 0x73, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x77, 0x69, 0x73, +0x73, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, 0x3b, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x6e, 0x20, 0x53, +0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x6e, 0x20, 0x73, +0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x6e, +0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x3b, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x6e, 0x20, 0x50, 0x61, +0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x3b, 0x3b, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x6e, 0x20, 0x70, 0x61, 0x2bb, 0x61, 0x6e, 0x67, +0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x6e, 0x20, 0x70, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x3b, +0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, 0x61, 0x67, 0x6f, 0x20, 0x44, 0x6f, +0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, +0x61, 0x67, 0x6f, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, +0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, 0x61, 0x67, 0x6f, 0x20, 0x64, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x73, 0x3b, +0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, 0x53, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x55, 0x67, +0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x67, +0x61, 0x6e, 0x64, 0x61, 0x6e, 0x20, 0x73, 0x68, 0x69, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x73, 0x3b, 0x55, 0x6e, 0x69, 0x74, +0x65, 0x64, 0x20, 0x41, 0x72, 0x61, 0x62, 0x20, 0x45, 0x6d, 0x69, 0x72, 0x61, 0x74, 0x65, 0x73, 0x20, 0x44, 0x69, 0x72, +0x68, 0x61, 0x6d, 0x3b, 0x3b, 0x55, 0x41, 0x45, 0x20, 0x64, 0x69, 0x72, 0x68, 0x61, 0x6d, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, +0x41, 0x45, 0x20, 0x64, 0x69, 0x72, 0x68, 0x61, 0x6d, 0x73, 0x3b, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x50, +0x6f, 0x75, 0x6e, 0x64, 0x3b, 0x3b, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x3b, +0x3b, 0x3b, 0x3b, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x70, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x3b, 0x56, 0x61, +0x6e, 0x75, 0x61, 0x74, 0x75, 0x20, 0x56, 0x61, 0x74, 0x75, 0x3b, 0x3b, 0x56, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x20, +0x76, 0x61, 0x74, 0x75, 0x3b, 0x3b, 0x3b, 0x3b, 0x56, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x20, 0x76, 0x61, 0x74, 0x75, 0x3b, 0x5a, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x4b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x3b, 0x3b, 0x5a, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x6b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x5a, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x20, 0x6b, 0x77, 0x61, 0x63, 0x68, 0x61, 0x73, 0x3b, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x53, 0x75, 0x64, @@ -3793,478 +3788,474 @@ 0x20, 0xab0, 0xac2, 0xaaa, 0xabf, 0xaaf, 0xabe, 0x3b, 0x3b, 0xaad, 0xabe, 0xab0, 0xaa4, 0xac0, 0xaaf, 0x20, 0xab0, 0xac2, 0xaaa, 0xabf, 0xaaf, 0xabe, 0x3b, 0x3b, 0x3b, 0x3b, 0xaad, 0xabe, 0xab0, 0xaa4, 0xac0, 0xaaf, 0x20, 0xab0, 0xac2, 0xaaa, 0xabf, 0xaaf, 0xabe, 0x3b, 0x4e, 0x61, 0x69, 0x72, 0x61, 0x72, 0x20, 0x4e, 0x61, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x4e, 0x61, 0x69, -0x72, 0x61, 0x72, 0x20, 0x4e, 0x61, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61, 0x69, 0x72, -0x6f, 0x72, 0x69, 0x6e, 0x20, 0x4e, 0x61, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x3b, 0x4b, 0x75, 0x64, 0x69, 0x6e, 0x20, -0x47, 0x68, 0x61, 0x6e, 0x61, 0x3b, 0x3b, 0x6b, 0x75, 0x64, 0x69, 0x6e, 0x20, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x69, 0x6e, -0x69, 0x61, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x4b, 0x75, 0x64, 0x69, 0x6e, 0x20, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x3b, 0x4b, -0x75, 0x257, 0x69, 0x6e, 0x20, 0x53, 0x65, 0x66, 0x61, 0x20, 0x6e, 0x61, 0x20, 0x41, 0x66, 0x69, 0x72, 0x6b, 0x61, 0x20, -0x54, 0x61, 0x20, 0x59, 0x61, 0x6d, 0x6d, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x20, 0x5d7, -0x5d3, 0x5e9, 0x3b, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x5d9, 0x5dd, 0x20, 0x5d7, 0x5d3, -0x5e9, 0x5d9, 0x5dd, 0x3b, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x5d9, 0x5dd, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x5d9, 0x5dd, 0x3b, 0x5e9, 0x5e7, 0x5dc, -0x5d9, 0x5dd, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x5d9, 0x5dd, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, -0x93e, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, -0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x90f, 0x3b, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x20, 0x66, 0x6f, -0x72, 0x69, 0x6e, 0x74, 0x3b, 0x3b, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x69, 0x6e, 0x74, 0x3b, -0x3b, 0x3b, 0x3b, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x69, 0x6e, 0x74, 0x3b, 0xed, 0x73, 0x6c, -0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0xf3, 0x6e, 0x61, 0x3b, 0x3b, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x20, -0x6b, 0x72, 0xf3, 0x6e, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0x72, 0x20, 0x6b, -0x72, 0xf3, 0x6e, 0x75, 0x72, 0x3b, 0x52, 0x75, 0x70, 0x69, 0x61, 0x68, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x73, -0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x75, 0x70, 0x69, 0x61, 0x68, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, -0x65, 0x73, 0x69, 0x61, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, -0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x50, 0x75, 0x6e, 0x74, -0x20, 0x53, 0x74, 0x65, 0x69, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x70, 0x68, 0x75, 0x6e, 0x74, 0x20, 0x73, 0x74, -0x65, 0x69, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x70, 0x68, 0x75, 0x6e, 0x74, 0x20, 0x73, 0x74, 0x65, 0x69, 0x72, 0x6c, -0x69, 0x6e, 0x67, 0x3b, 0x70, 0x68, 0x75, 0x6e, 0x74, 0x20, 0x73, 0x74, 0x65, 0x69, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x3b, -0x62, 0x70, 0x75, 0x6e, 0x74, 0x20, 0x73, 0x74, 0x65, 0x69, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x70, 0x75, 0x6e, 0x74, -0x20, 0x73, 0x74, 0x65, 0x69, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, -0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x76, 0x69, -0x7a, 0x7a, 0x65, 0x72, 0x6f, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, -0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, -0x72, 0x69, 0x3b, 0x65e5, 0x672c, 0x5186, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x5186, 0x3b, 0xcad, 0xcbe, 0xcb0, 0xca4, 0xcc0, 0xcaf, -0x20, 0xcb0, 0xcc2, 0xcaa, 0xcbe, 0xcaf, 0xcbf, 0x3b, 0x3b, 0xcad, 0xcbe, 0xcb0, 0xca4, 0xcc0, 0xcaf, 0x20, 0xcb0, 0xcc2, 0xcaa, 0xcbe, -0xcaf, 0xcbf, 0x3b, 0x3b, 0x3b, 0x3b, 0xcad, 0xcbe, 0xcb0, 0xca4, 0xcc0, 0xcaf, 0x20, 0xcb0, 0xcc2, 0xcaa, 0xcbe, 0xcaf, 0xcbf, 0xc97, -0xcb3, 0xcc1, 0x3b, 0x6c1, 0x650, 0x646, 0x62f, 0x64f, 0x633, 0x62a, 0x672, 0x646, 0x6cd, 0x20, 0x631, 0x6c4, 0x67e, 0x64e, 0x6d2, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x442, 0x435, 0x4a3, 0x433, -0x435, 0x441, 0x456, 0x3b, 0x3b, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x442, 0x435, 0x4a3, 0x433, 0x435, -0x441, 0x456, 0x3b, 0x3b, 0x3b, 0x3b, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x442, 0x435, 0x4a3, 0x433, -0x435, 0x441, 0x456, 0x3b, 0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x443, 0x3b, -0x3b, 0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x443, 0x3b, 0x3b, 0x3b, 0x3b, -0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x443, 0x3b, 0xb300, 0xd55c, 0xbbfc, 0xad6d, -0x20, 0xc6d0, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xb300, 0xd55c, 0xbbfc, 0xad6d, 0x20, 0xc6d0, 0x3b, 0xc870, 0xc120, 0x20, 0xbbfc, 0xc8fc, -0xc8fc, 0xc758, 0x20, 0xc778, 0xbbfc, 0x20, 0xacf5, 0xd654, 0xad6d, 0x20, 0xc6d0, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xc870, 0xc120, 0x20, -0xbbfc, 0xc8fc, 0xc8fc, 0xc758, 0x20, 0xc778, 0xbbfc, 0x20, 0xacf5, 0xd654, 0xad6d, 0x20, 0xc6d0, 0x3b, 0x49, 0x66, 0x61, 0x72, 0x61, 0x6e, -0x67, 0x61, 0x20, 0x72, 0x79, 0x2019, 0x55, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0xea5, 0xeb2, 0xea7, 0x20, 0xe81, 0xeb5, 0xe9a, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xea5, 0xeb2, 0xea7, 0x20, 0xe81, 0xeb5, -0xe9a, 0x3b, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, -0x65, 0x69, 0x72, 0x6f, 0x3b, 0x46, 0x61, 0x6c, 0xe1, 0x6e, 0x67, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, -0xf3, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x20, 0x79, 0x61, 0x20, 0x41, 0x6e, -0x67, 0xf3, 0x6c, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x61, 0x6c, 0xe1, 0x6e, 0x67, 0x61, 0x20, 0x43, -0x46, 0x41, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x75, 0x72, 0x61, 0x73, 0x3b, -0x3b, 0x65, 0x75, 0x72, 0x61, 0x73, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x69, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, -0x75, 0x72, 0x173, 0x3b, 0x41c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x435, 0x43d, 0x430, 0x440, -0x3b, 0x3b, 0x41c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x435, 0x43d, 0x430, 0x440, 0x3b, 0x3b, -0x3b, 0x3b, 0x41c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x435, 0x43d, 0x430, 0x440, 0x438, 0x3b, -0x41, 0x72, 0x69, 0x61, 0x72, 0x79, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x69, 0x6e, 0x67, 0x67, 0x69, 0x74, -0x20, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x69, 0x6e, 0x67, 0x67, -0x69, 0x74, 0x20, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, 0x42, 0x72, -0x75, 0x6e, 0x65, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, 0x42, 0x72, 0x75, 0x6e, -0x65, 0x69, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x75, 0x72, 0x61, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x75, 0x72, 0x61, 0x3b, -0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0xd7b, 0x20, 0xd30, 0xd42, 0xd2a, 0x3b, 0x3b, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0xd7b, -0x20, 0xd30, 0xd42, 0xd2a, 0x3b, 0x3b, 0x3b, 0x3b, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0xd7b, 0x20, 0xd30, 0xd42, 0xd2a, 0x3b, -0x65, 0x77, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b, 0x65, 0x77, 0x72, -0x6f, 0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b, 0x54, 0x101, 0x72, 0x61, 0x20, 0x6f, 0x20, 0x41, 0x6f, 0x74, 0x65, 0x61, 0x72, -0x6f, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x74, 0x101, 0x72, 0x61, 0x20, 0x6f, 0x20, 0x41, 0x6f, 0x74, 0x65, 0x61, -0x72, 0x6f, 0x61, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x92d, 0x93e, -0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, -0x20, 0x930, 0x941, 0x92a, 0x92f, 0x947, 0x3b, 0x41c, 0x43e, 0x43d, 0x433, 0x43e, 0x43b, 0x20, 0x442, 0x4e9, 0x433, 0x440, 0x4e9, 0x433, -0x3b, 0x3b, 0x41c, 0x43e, 0x43d, 0x433, 0x43e, 0x43b, 0x20, 0x442, 0x4e9, 0x433, 0x440, 0x4e9, 0x433, 0x3b, 0x3b, 0x3b, 0x3b, 0x41c, -0x43e, 0x43d, 0x433, 0x43e, 0x43b, 0x20, 0x442, 0x4e9, 0x433, 0x440, 0x4e9, 0x433, 0x3b, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x20, -0x930, 0x942, 0x92a, 0x948, 0x92f, 0x93e, 0x901, 0x3b, 0x3b, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x20, 0x930, 0x942, 0x92a, 0x948, -0x92f, 0x93e, 0x901, 0x3b, 0x3b, 0x3b, 0x3b, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x20, 0x930, 0x942, 0x92a, 0x948, 0x92f, 0x93e, -0x901, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x93f, 0x901, 0x92f, 0x93e, 0x3b, 0x3b, 0x92d, 0x93e, -0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x93f, 0x901, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, -0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x93f, 0x901, 0x92f, 0x93e, 0x3b, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x65, 0x20, 0x6b, 0x72, -0x6f, 0x6e, 0x65, 0x72, 0x3b, 0x3b, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, -0x3b, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x65, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x72, 0x3b, 0xb2d, 0xb3e, 0xb30, 0xb24, 0xb40, -0xb5f, 0x20, 0xb1f, 0xb19, 0xb4d, 0xb15, 0xb3e, 0x3b, 0x3b, 0xb2d, 0xb3e, 0xb30, 0xb24, 0xb40, 0xb5f, 0x20, 0xb1f, 0xb19, 0xb4d, 0xb15, -0xb3e, 0x3b, 0x3b, 0x3b, 0x3b, 0xb2d, 0xb3e, 0xb30, 0xb24, 0xb40, 0xb5f, 0x20, 0xb1f, 0xb19, 0xb4d, 0xb15, 0xb3e, 0x3b, 0x627, 0x641, -0x63a, 0x627, 0x646, 0x6cd, 0x3b, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cd, 0x3b, 0x3b, 0x3b, 0x3b, 0x627, 0x641, 0x63a, 0x627, -0x646, 0x6cd, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cd, 0x20, 0x6a9, 0x644, 0x62f, 0x627, 0x631, 0x647, 0x3b, 0x3b, -0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cd, 0x20, 0x6a9, 0x644, 0x62f, 0x627, 0x631, 0x647, 0x3b, 0x3b, 0x3b, 0x3b, 0x67e, -0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cd, 0x20, 0x6a9, 0x644, 0x62f, 0x627, 0x631, 0x6d2, 0x3b, 0x631, 0x6cc, 0x627, 0x644, 0x20, -0x627, 0x6cc, 0x631, 0x627, 0x646, 0x3b, 0x3b, 0x631, 0x6cc, 0x627, 0x644, 0x20, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x3b, 0x3b, 0x3b, -0x3b, 0x631, 0x6cc, 0x627, 0x644, 0x20, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x20, 0x627, -0x641, 0x63a, 0x627, 0x646, 0x633, 0x62a, 0x627, 0x646, 0x3b, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x20, 0x627, 0x641, 0x63a, -0x627, 0x646, 0x633, 0x62a, 0x627, 0x646, 0x3b, 0x3b, 0x3b, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x20, 0x627, 0x641, 0x63a, -0x627, 0x646, 0x633, 0x62a, 0x627, 0x646, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x79, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x3b, -0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x79, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x3b, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x65, -0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x65, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x79, 0x63, 0x68, 0x20, 0x70, 0x6f, 0x6c, -0x73, 0x6b, 0x69, 0x63, 0x68, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x65, 0x67, 0x6f, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, -0x65, 0x67, 0x6f, 0x3b, 0x52, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f, 0x3b, -0x3b, 0x52, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, -0x52, 0x65, 0x61, 0x69, 0x73, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f, 0x73, 0x3b, 0x6b, 0x77, -0x61, 0x6e, 0x7a, 0x61, 0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x6b, 0x77, 0x61, 0x6e, 0x7a, -0x61, 0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x6b, 0x77, 0x61, 0x6e, 0x7a, 0x61, -0x73, 0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x65, 0x73, 0x63, 0x75, 0x64, 0x6f, 0x20, 0x63, -0x61, 0x62, 0x6f, 0x2d, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x65, 0x73, 0x63, 0x75, 0x64, 0x6f, -0x20, 0x63, 0x61, 0x62, 0x6f, 0x2d, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x73, -0x63, 0x75, 0x64, 0x6f, 0x73, 0x20, 0x63, 0x61, 0x62, 0x6f, 0x2d, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x6f, 0x73, -0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x64, 0x6f, 0x73, 0x20, 0x45, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x73, 0x20, 0x55, -0x6e, 0x69, 0x64, 0x6f, 0x73, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x64, 0x6f, 0x73, 0x20, 0x45, 0x73, 0x74, -0x61, 0x64, 0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, -0x65, 0x73, 0x20, 0x64, 0x6f, 0x73, 0x20, 0x45, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, -0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, +0x72, 0x61, 0x72, 0x20, 0x4e, 0x69, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61, 0x69, 0x72, +0x61, 0x72, 0x20, 0x4e, 0x69, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x3b, 0x53, 0x69, 0x64, 0x69, 0x20, 0x6e, 0x61, 0x20, +0x47, 0x68, 0x61, 0x6e, 0x61, 0x3b, 0x3b, 0x53, 0x69, 0x64, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x47, 0x68, 0x61, 0x6e, 0x61, +0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x64, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x3b, 0x4b, 0x75, +0x257, 0x69, 0x6e, 0x20, 0x53, 0x65, 0x66, 0x61, 0x20, 0x6e, 0x61, 0x20, 0x41, 0x66, 0x69, 0x72, 0x6b, 0x61, 0x20, 0x54, +0x61, 0x20, 0x59, 0x61, 0x6d, 0x6d, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x20, 0x5d7, 0x5d3, +0x5e9, 0x3b, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x5d9, 0x5dd, 0x20, 0x5d7, 0x5d3, 0x5e9, +0x5d9, 0x5dd, 0x3b, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x5d9, 0x5dd, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x5d9, 0x5dd, 0x3b, 0x5e9, 0x5e7, 0x5dc, 0x5d9, +0x5dd, 0x20, 0x5d7, 0x5d3, 0x5e9, 0x5d9, 0x5dd, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, +0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, +0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x90f, 0x3b, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x20, 0x66, 0x6f, 0x72, +0x69, 0x6e, 0x74, 0x3b, 0x3b, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x69, 0x6e, 0x74, 0x3b, 0x3b, +0x3b, 0x3b, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x20, 0x66, 0x6f, 0x72, 0x69, 0x6e, 0x74, 0x3b, 0xed, 0x73, 0x6c, 0x65, +0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0xf3, 0x6e, 0x61, 0x3b, 0x3b, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, +0x72, 0xf3, 0x6e, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0x72, 0x20, 0x6b, 0x72, +0xf3, 0x6e, 0x75, 0x72, 0x3b, 0x52, 0x75, 0x70, 0x69, 0x61, 0x68, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x73, 0x69, +0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x75, 0x70, 0x69, 0x61, 0x68, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0x65, +0x73, 0x69, 0x61, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, +0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x50, 0x75, 0x6e, 0x74, 0x20, +0x53, 0x74, 0x65, 0x69, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x3b, 0x70, 0x68, 0x75, 0x6e, 0x74, 0x20, 0x73, 0x74, 0x65, +0x69, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x70, 0x68, 0x75, 0x6e, 0x74, 0x20, 0x73, 0x74, 0x65, 0x69, 0x72, 0x6c, 0x69, +0x6e, 0x67, 0x3b, 0x70, 0x68, 0x75, 0x6e, 0x74, 0x20, 0x73, 0x74, 0x65, 0x69, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x62, +0x70, 0x75, 0x6e, 0x74, 0x20, 0x73, 0x74, 0x65, 0x69, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x70, 0x75, 0x6e, 0x74, 0x20, +0x73, 0x74, 0x65, 0x69, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, +0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x76, 0x69, 0x7a, +0x7a, 0x65, 0x72, 0x6f, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, +0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x68, 0x69, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, +0x69, 0x3b, 0x65e5, 0x672c, 0x5186, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x5186, 0x3b, 0xcad, 0xcbe, 0xcb0, 0xca4, 0xcc0, 0xcaf, 0x20, +0xcb0, 0xcc2, 0xcaa, 0xcbe, 0xcaf, 0xcbf, 0x3b, 0x3b, 0xcad, 0xcbe, 0xcb0, 0xca4, 0xcc0, 0xcaf, 0x20, 0xcb0, 0xcc2, 0xcaa, 0xcbe, 0xcaf, +0xcbf, 0x3b, 0x3b, 0x3b, 0x3b, 0xcad, 0xcbe, 0xcb0, 0xca4, 0xcc0, 0xcaf, 0x20, 0xcb0, 0xcc2, 0xcaa, 0xcbe, 0xcaf, 0xcbf, 0xc97, 0xcb3, +0xcc1, 0x3b, 0x6c1, 0x650, 0x646, 0x62f, 0x64f, 0x633, 0x62a, 0x672, 0x646, 0x6cd, 0x20, 0x631, 0x6c4, 0x67e, 0x64e, 0x6d2, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x442, 0x435, 0x4a3, 0x433, 0x435, +0x441, 0x456, 0x3b, 0x3b, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x442, 0x435, 0x4a3, 0x433, 0x435, 0x441, +0x456, 0x3b, 0x3b, 0x3b, 0x3b, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x442, 0x435, 0x4a3, 0x433, 0x435, +0x441, 0x456, 0x3b, 0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x443, 0x3b, 0x3b, +0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x443, 0x3b, 0x3b, 0x3b, 0x3b, 0x41a, +0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x443, 0x3b, 0xb300, 0xd55c, 0xbbfc, 0xad6d, 0x20, +0xc6d0, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xb300, 0xd55c, 0xbbfc, 0xad6d, 0x20, 0xc6d0, 0x3b, 0xc870, 0xc120, 0x20, 0xbbfc, 0xc8fc, 0xc8fc, +0xc758, 0x20, 0xc778, 0xbbfc, 0x20, 0xacf5, 0xd654, 0xad6d, 0x20, 0xc6d0, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xc870, 0xc120, 0x20, 0xbbfc, +0xc8fc, 0xc8fc, 0xc758, 0x20, 0xc778, 0xbbfc, 0x20, 0xacf5, 0xd654, 0xad6d, 0x20, 0xc6d0, 0x3b, 0x49, 0x66, 0x61, 0x72, 0x61, 0x6e, 0x67, +0x61, 0x20, 0x72, 0x79, 0x2019, 0x55, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0xea5, 0xeb2, 0xea7, 0x20, 0xe81, 0xeb5, 0xe9a, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xea5, 0xeb2, 0xea7, 0x20, 0xe81, 0xeb5, 0xe9a, +0x3b, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, +0x69, 0x72, 0x6f, 0x3b, 0x46, 0x61, 0x6c, 0xe1, 0x6e, 0x67, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0xf3, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x20, 0x79, 0x61, 0x20, 0x41, 0x6e, 0x67, +0xf3, 0x6c, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x61, 0x6c, 0xe1, 0x6e, 0x67, 0x61, 0x20, 0x43, 0x46, +0x41, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x75, 0x72, 0x61, 0x73, 0x3b, 0x3b, +0x65, 0x75, 0x72, 0x61, 0x73, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x69, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, +0x72, 0x173, 0x3b, 0x41c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x435, 0x43d, 0x430, 0x440, 0x3b, +0x3b, 0x41c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x435, 0x43d, 0x430, 0x440, 0x3b, 0x3b, 0x3b, +0x3b, 0x41c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x435, 0x43d, 0x430, 0x440, 0x438, 0x3b, 0x41, +0x72, 0x69, 0x61, 0x72, 0x79, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x69, 0x6e, 0x67, 0x67, 0x69, 0x74, 0x20, +0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, 0x69, 0x6e, 0x67, 0x67, 0x69, +0x74, 0x20, 0x4d, 0x61, 0x6c, 0x61, 0x79, 0x73, 0x69, 0x61, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, 0x42, 0x72, 0x75, +0x6e, 0x65, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, 0x42, 0x72, 0x75, 0x6e, 0x65, +0x69, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x75, 0x72, 0x61, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x72, 0x20, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x75, 0x72, 0x61, 0x3b, 0xd07, +0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0xd7b, 0x20, 0xd30, 0xd42, 0xd2a, 0x3b, 0x3b, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0xd7b, 0x20, +0xd30, 0xd42, 0xd2a, 0x3b, 0x3b, 0x3b, 0x3b, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0xd7b, 0x20, 0xd30, 0xd42, 0xd2a, 0x3b, 0x65, +0x77, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b, 0x65, 0x77, 0x72, 0x6f, +0x3b, 0x65, 0x77, 0x72, 0x6f, 0x3b, 0x54, 0x101, 0x72, 0x61, 0x20, 0x6f, 0x20, 0x41, 0x6f, 0x74, 0x65, 0x61, 0x72, 0x6f, +0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x74, 0x101, 0x72, 0x61, 0x20, 0x6f, 0x20, 0x41, 0x6f, 0x74, 0x65, 0x61, 0x72, +0x6f, 0x61, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, +0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, +0x930, 0x941, 0x92a, 0x92f, 0x947, 0x3b, 0x41c, 0x43e, 0x43d, 0x433, 0x43e, 0x43b, 0x20, 0x442, 0x4e9, 0x433, 0x440, 0x4e9, 0x433, 0x3b, +0x3b, 0x41c, 0x43e, 0x43d, 0x433, 0x43e, 0x43b, 0x20, 0x442, 0x4e9, 0x433, 0x440, 0x4e9, 0x433, 0x3b, 0x3b, 0x3b, 0x3b, 0x41c, 0x43e, +0x43d, 0x433, 0x43e, 0x43b, 0x20, 0x442, 0x4e9, 0x433, 0x440, 0x4e9, 0x433, 0x3b, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x20, 0x930, +0x942, 0x92a, 0x948, 0x92f, 0x93e, 0x901, 0x3b, 0x3b, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x20, 0x930, 0x942, 0x92a, 0x948, 0x92f, +0x93e, 0x901, 0x3b, 0x3b, 0x3b, 0x3b, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x20, 0x930, 0x942, 0x92a, 0x948, 0x92f, 0x93e, 0x901, +0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x93f, 0x901, 0x92f, 0x93e, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, +0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x93f, 0x901, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, +0x92f, 0x20, 0x930, 0x942, 0x92a, 0x93f, 0x901, 0x92f, 0x93e, 0x3b, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x65, 0x20, 0x6b, 0x72, 0x6f, +0x6e, 0x65, 0x72, 0x3b, 0x3b, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, +0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x65, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x65, 0x72, 0x3b, 0xb2d, 0xb3e, 0xb30, 0xb24, 0xb40, 0xb5f, +0x20, 0xb1f, 0xb19, 0xb4d, 0xb15, 0xb3e, 0x3b, 0x3b, 0xb2d, 0xb3e, 0xb30, 0xb24, 0xb40, 0xb5f, 0x20, 0xb1f, 0xb19, 0xb4d, 0xb15, 0xb3e, +0x3b, 0x3b, 0x3b, 0x3b, 0xb2d, 0xb3e, 0xb30, 0xb24, 0xb40, 0xb5f, 0x20, 0xb1f, 0xb19, 0xb4d, 0xb15, 0xb3e, 0x3b, 0x627, 0x641, 0x63a, +0x627, 0x646, 0x6cd, 0x3b, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cd, 0x3b, 0x3b, 0x3b, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, +0x6cd, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cd, 0x20, 0x6a9, 0x644, 0x62f, 0x627, 0x631, 0x647, 0x3b, 0x3b, 0x67e, +0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cd, 0x20, 0x6a9, 0x644, 0x62f, 0x627, 0x631, 0x647, 0x3b, 0x3b, 0x3b, 0x3b, 0x67e, 0x627, +0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cd, 0x20, 0x6a9, 0x644, 0x62f, 0x627, 0x631, 0x6d2, 0x3b, 0x631, 0x6cc, 0x627, 0x644, 0x20, 0x627, +0x6cc, 0x631, 0x627, 0x646, 0x3b, 0x3b, 0x631, 0x6cc, 0x627, 0x644, 0x20, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x3b, 0x3b, 0x3b, 0x3b, +0x631, 0x6cc, 0x627, 0x644, 0x20, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x20, 0x627, 0x641, +0x63a, 0x627, 0x646, 0x633, 0x62a, 0x627, 0x646, 0x3b, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x20, 0x627, 0x641, 0x63a, 0x627, +0x646, 0x633, 0x62a, 0x627, 0x646, 0x3b, 0x3b, 0x3b, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x20, 0x627, 0x641, 0x63a, 0x627, +0x646, 0x633, 0x62a, 0x627, 0x646, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x79, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x3b, 0x3b, +0x7a, 0x142, 0x6f, 0x74, 0x79, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x3b, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x65, 0x20, +0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x65, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x79, 0x63, 0x68, 0x20, 0x70, 0x6f, 0x6c, 0x73, +0x6b, 0x69, 0x63, 0x68, 0x3b, 0x7a, 0x142, 0x6f, 0x74, 0x65, 0x67, 0x6f, 0x20, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x65, +0x67, 0x6f, 0x3b, 0x52, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x3b, +0x52, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x52, +0x65, 0x61, 0x69, 0x73, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0x69, 0x72, 0x6f, 0x73, 0x3b, 0x6b, 0x77, 0x61, +0x6e, 0x7a, 0x61, 0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x6b, 0x77, 0x61, 0x6e, 0x7a, 0x61, +0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x6b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x73, +0x20, 0x61, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x65, 0x73, 0x63, 0x75, 0x64, 0x6f, 0x20, 0x63, 0x61, +0x62, 0x6f, 0x2d, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x65, 0x73, 0x63, 0x75, 0x64, 0x6f, 0x20, +0x63, 0x61, 0x62, 0x6f, 0x2d, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x73, 0x63, +0x75, 0x64, 0x6f, 0x73, 0x20, 0x63, 0x61, 0x62, 0x6f, 0x2d, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x6f, 0x73, 0x3b, +0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x64, 0x6f, 0x73, 0x20, 0x45, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x73, 0x20, 0x55, 0x6e, +0x69, 0x64, 0x6f, 0x73, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x64, 0x6f, 0x73, 0x20, 0x45, 0x73, 0x74, 0x61, +0x64, 0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x65, +0x73, 0x20, 0x64, 0x6f, 0x73, 0x20, 0x45, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, -0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x73, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, -0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, -0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, -0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x73, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, -0x4f, 0x29, 0x3b, 0x70, 0x61, 0x74, 0x61, 0x63, 0x61, 0x20, 0x6d, 0x61, 0x63, 0x61, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, -0x70, 0x61, 0x74, 0x61, 0x63, 0x61, 0x20, 0x6d, 0x61, 0x63, 0x61, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, -0x61, 0x74, 0x61, 0x63, 0x61, 0x73, 0x20, 0x6d, 0x61, 0x63, 0x61, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x3b, 0x6d, 0x65, 0x74, -0x69, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x6d, 0x65, -0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, -0x3b, 0x6d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x69, 0x73, 0x20, 0x6d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x63, 0x61, 0x6e, -0x6f, 0x73, 0x3b, 0x64, 0x6f, 0x62, 0x72, 0x61, 0x20, 0x64, 0x65, 0x20, 0x53, 0xe3, 0x6f, 0x20, 0x54, 0x6f, 0x6d, 0xe9, -0x20, 0x65, 0x20, 0x50, 0x72, 0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, 0x3b, 0x3b, 0x64, 0x6f, 0x62, 0x72, 0x61, 0x20, 0x64, -0x65, 0x20, 0x53, 0xe3, 0x6f, 0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20, 0x65, 0x20, 0x50, 0x72, 0xed, 0x6e, 0x63, 0x69, 0x70, -0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x6f, 0x62, 0x72, 0x61, 0x73, 0x20, 0x64, 0x65, 0x20, 0x53, 0xe3, 0x6f, 0x20, 0x54, -0x6f, 0x6d, 0xe9, 0x20, 0x65, 0x20, 0x50, 0x72, 0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, -0x6f, 0x20, 0x73, 0x75, 0xed, 0xe7, 0x6f, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x75, 0xed, 0xe7, -0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x73, 0x20, 0x73, 0x75, 0xed, 0xe7, 0x6f, 0x73, 0x3b, -0xa2d, 0xa3e, 0xa30, 0xa24, 0xa40, 0x20, 0xa30, 0xa41, 0xa2a, 0xa07, 0xa06, 0x3b, 0x3b, 0xa2d, 0xa3e, 0xa30, 0xa24, 0xa40, 0x20, 0xa30, -0xa41, 0xa2a, 0xa07, 0xa06, 0x3b, 0x3b, 0x3b, 0x3b, 0xa2d, 0xa3e, 0xa30, 0xa24, 0xa40, 0x20, 0xa30, 0xa41, 0xa2a, 0xa0f, 0x3b, 0x631, -0x648, 0x67e, 0x626, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6f, 0x6c, 0x20, 0x50, 0x65, 0x72, 0x75, -0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6f, 0x6c, 0x20, 0x70, 0x65, 0x72, 0x75, 0x61, 0x6e, 0x6f, -0x3b, 0x42, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x42, 0x6f, 0x6c, 0x69, -0x76, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x44, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e, -0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x61, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, -0x6e, 0x6f, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x3b, 0x3b, 0x66, 0x72, -0x61, 0x6e, 0x63, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, -0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x3b, 0x6c, 0x65, 0x75, 0x20, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x65, 0x73, -0x63, 0x3b, 0x3b, 0x6c, 0x65, 0x75, 0x20, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x65, 0x73, 0x63, 0x3b, 0x3b, 0x6c, 0x65, 0x69, -0x20, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x20, 0x72, 0x6f, 0x6d, 0xe2, -0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x6c, 0x65, 0x75, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x73, -0x63, 0x3b, 0x3b, 0x6c, 0x65, 0x75, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x73, 0x63, 0x3b, 0x3b, -0x6c, 0x65, 0x69, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x3b, 0x6c, 0x65, -0x69, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, -0x439, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44c, 0x3b, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, -0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44c, 0x3b, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, -0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44f, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x440, -0x443, 0x431, 0x43b, 0x435, 0x439, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x440, 0x443, -0x431, 0x43b, 0x44f, 0x3b, 0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b, -0x44c, 0x3b, 0x3b, 0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44c, -0x3b, 0x3b, 0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44f, 0x3b, -0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x435, 0x439, 0x3b, 0x431, -0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44f, 0x3b, 0x43a, 0x430, -0x437, 0x430, 0x445, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b, 0x3b, 0x43a, 0x430, 0x437, 0x430, 0x445, -0x441, 0x43a, 0x438, 0x439, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b, 0x3b, 0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x438, -0x445, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b, 0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x442, 0x435, -0x43d, 0x433, 0x435, 0x3b, 0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, -0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x43a, 0x438, 0x440, -0x433, 0x438, 0x437, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, -0x43a, 0x438, 0x445, 0x20, 0x441, 0x43e, 0x43c, 0x430, 0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x438, 0x445, 0x20, -0x441, 0x43e, 0x43c, 0x43e, 0x432, 0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x441, 0x43e, -0x43c, 0x430, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x43b, 0x435, 0x439, 0x3b, 0x3b, 0x43c, -0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x43b, 0x435, 0x439, 0x3b, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430, -0x432, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x43b, 0x435, 0x44f, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x438, 0x445, -0x20, 0x43b, 0x435, 0x435, 0x432, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x43b, 0x435, -0x44f, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x430, 0x44f, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x430, 0x3b, -0x3b, 0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x430, 0x44f, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x430, 0x3b, 0x3b, -0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x438, 0x435, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44b, 0x3b, 0x443, 0x43a, -0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x433, 0x440, 0x438, 0x432, 0x435, 0x43d, 0x3b, 0x443, 0x43a, 0x440, 0x430, -0x438, 0x43d, 0x441, 0x43a, 0x43e, 0x439, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44b, 0x3b, 0x66, 0x61, 0x72, 0xe2, 0x6e, 0x67, -0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x421, -0x440, 0x43f, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x3b, 0x3b, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x20, -0x434, 0x438, 0x43d, 0x430, 0x440, 0x3b, 0x3b, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x430, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x430, -0x3b, 0x3b, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x430, 0x3b, 0x42, 0x6f, 0x73, -0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x2d, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x61, 0x20, 0x6b, -0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x3b, 0x3b, -0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x2d, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, -0x61, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x72, 0x6b, -0x61, 0x3b, 0x3b, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x2d, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, -0x61, 0x10d, 0x6b, 0x65, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x65, 0x20, 0x6d, -0x61, 0x72, 0x6b, 0x65, 0x3b, 0x3b, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x2d, 0x68, 0x65, 0x72, 0x63, 0x65, -0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x69, 0x68, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, -0x6e, 0x69, 0x68, 0x20, 0x6d, 0x61, 0x72, 0x61, 0x6b, 0x61, 0x3b, 0x45, 0x76, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x76, 0x72, -0x6f, 0x3b, 0x3b, 0x65, 0x76, 0x72, 0x61, 0x3b, 0x3b, 0x65, 0x76, 0x72, 0x61, 0x3b, 0x53, 0x72, 0x70, 0x73, 0x6b, 0x69, -0x20, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x3b, 0x3b, 0x73, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x20, 0x64, 0x69, 0x6e, 0x61, 0x72, -0x3b, 0x3b, 0x73, 0x72, 0x70, 0x73, 0x6b, 0x61, 0x20, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x61, 0x3b, 0x3b, 0x73, 0x72, 0x70, -0x73, 0x6b, 0x69, 0x68, 0x20, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x61, 0x3b, 0x411, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, +0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b, +0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x73, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, +0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, +0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, +0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x73, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, +0x29, 0x3b, 0x70, 0x61, 0x74, 0x61, 0x63, 0x61, 0x20, 0x6d, 0x61, 0x63, 0x61, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x70, +0x61, 0x74, 0x61, 0x63, 0x61, 0x20, 0x6d, 0x61, 0x63, 0x61, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x61, +0x74, 0x61, 0x63, 0x61, 0x73, 0x20, 0x6d, 0x61, 0x63, 0x61, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x3b, 0x6d, 0x65, 0x74, 0x69, +0x63, 0x61, 0x6c, 0x20, 0x6d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x6d, 0x65, 0x74, +0x69, 0x63, 0x61, 0x6c, 0x20, 0x6d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, +0x6d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x69, 0x73, 0x20, 0x6d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x63, 0x61, 0x6e, 0x6f, +0x73, 0x3b, 0x64, 0x6f, 0x62, 0x72, 0x61, 0x20, 0x64, 0x65, 0x20, 0x53, 0xe3, 0x6f, 0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20, +0x65, 0x20, 0x50, 0x72, 0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, 0x3b, 0x3b, 0x64, 0x6f, 0x62, 0x72, 0x61, 0x20, 0x64, 0x65, +0x20, 0x53, 0xe3, 0x6f, 0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20, 0x65, 0x20, 0x50, 0x72, 0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, +0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0x6f, 0x62, 0x72, 0x61, 0x73, 0x20, 0x64, 0x65, 0x20, 0x53, 0xe3, 0x6f, 0x20, 0x54, 0x6f, +0x6d, 0xe9, 0x20, 0x65, 0x20, 0x50, 0x72, 0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, +0x20, 0x73, 0x75, 0xed, 0xe7, 0x6f, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x73, 0x75, 0xed, 0xe7, 0x6f, +0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x73, 0x20, 0x73, 0x75, 0xed, 0xe7, 0x6f, 0x73, 0x3b, 0xa2d, +0xa3e, 0xa30, 0xa24, 0xa40, 0x20, 0xa30, 0xa41, 0xa2a, 0xa07, 0xa06, 0x3b, 0x3b, 0xa2d, 0xa3e, 0xa30, 0xa24, 0xa40, 0x20, 0xa30, 0xa41, +0xa2a, 0xa07, 0xa06, 0x3b, 0x3b, 0x3b, 0x3b, 0xa2d, 0xa3e, 0xa30, 0xa24, 0xa40, 0x20, 0xa30, 0xa41, 0xa2a, 0xa0f, 0x3b, 0x631, 0x648, +0x67e, 0x626, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6f, 0x6c, 0x20, 0x50, 0x65, 0x72, 0x75, 0x61, +0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6f, 0x6c, 0x20, 0x70, 0x65, 0x72, 0x75, 0x61, 0x6e, 0x6f, 0x3b, +0x42, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x42, 0x6f, 0x6c, 0x69, 0x76, +0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x44, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x6f, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x61, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e, +0x6f, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x3b, 0x3b, 0x66, 0x72, 0x61, +0x6e, 0x63, 0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x73, +0x20, 0x73, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x73, 0x3b, 0x6c, 0x65, 0x75, 0x20, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x65, +0x73, 0x63, 0x3b, 0x3b, 0x6c, 0x65, 0x75, 0x20, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x65, 0x73, 0x63, 0x3b, 0x3b, 0x6c, 0x65, +0x69, 0x20, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x3b, 0x6c, 0x65, 0x69, 0x20, 0x72, 0x6f, 0x6d, +0xe2, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x6c, 0x65, 0x75, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, +0x73, 0x63, 0x3b, 0x3b, 0x6c, 0x65, 0x75, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x73, 0x63, 0x3b, +0x3b, 0x6c, 0x65, 0x69, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x3b, 0x6c, +0x65, 0x69, 0x20, 0x6d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x65, 0x6e, 0x65, 0x219, 0x74, 0x69, 0x3b, 0x440, 0x43e, 0x441, 0x441, +0x438, 0x439, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44c, 0x3b, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, +0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44c, 0x3b, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, +0x438, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44f, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x438, 0x445, 0x20, +0x440, 0x443, 0x431, 0x43b, 0x435, 0x439, 0x3b, 0x440, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x440, +0x443, 0x431, 0x43b, 0x44f, 0x3b, 0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, +0x43b, 0x44c, 0x3b, 0x3b, 0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x440, 0x443, 0x431, 0x43b, +0x44c, 0x3b, 0x3b, 0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44f, +0x3b, 0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x435, 0x439, 0x3b, +0x431, 0x435, 0x43b, 0x43e, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x440, 0x443, 0x431, 0x43b, 0x44f, 0x3b, 0x43a, +0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b, 0x3b, 0x43a, 0x430, 0x437, 0x430, +0x445, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b, 0x3b, 0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, +0x438, 0x445, 0x20, 0x442, 0x435, 0x43d, 0x433, 0x435, 0x3b, 0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x442, +0x435, 0x43d, 0x433, 0x435, 0x3b, 0x43a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x442, 0x435, 0x43d, 0x433, +0x435, 0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x43a, 0x438, +0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, +0x441, 0x43a, 0x438, 0x445, 0x20, 0x441, 0x43e, 0x43c, 0x430, 0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x438, 0x445, +0x20, 0x441, 0x43e, 0x43c, 0x43e, 0x432, 0x3b, 0x43a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x441, +0x43e, 0x43c, 0x430, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x43b, 0x435, 0x439, 0x3b, 0x3b, +0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x438, 0x439, 0x20, 0x43b, 0x435, 0x439, 0x3b, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, +0x430, 0x432, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x43b, 0x435, 0x44f, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x438, +0x445, 0x20, 0x43b, 0x435, 0x435, 0x432, 0x3b, 0x43c, 0x43e, 0x43b, 0x434, 0x430, 0x432, 0x441, 0x43a, 0x43e, 0x433, 0x43e, 0x20, 0x43b, +0x435, 0x44f, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x430, 0x44f, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x430, +0x3b, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x430, 0x44f, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x430, 0x3b, +0x3b, 0x443, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x438, 0x435, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44b, 0x3b, 0x443, +0x43a, 0x440, 0x430, 0x438, 0x43d, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x433, 0x440, 0x438, 0x432, 0x435, 0x43d, 0x3b, 0x443, 0x43a, 0x440, +0x430, 0x438, 0x43d, 0x441, 0x43a, 0x43e, 0x439, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44b, 0x3b, 0x66, 0x61, 0x72, 0xe2, 0x6e, +0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x94d, 0x92f, 0x915, 0x92e, 0x94d, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x942, 0x92a, 0x94d, 0x92f, 0x915, 0x92e, 0x94d, 0x3b, 0x421, 0x440, 0x43f, +0x441, 0x43a, 0x438, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x3b, 0x3b, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x438, +0x43d, 0x430, 0x440, 0x3b, 0x3b, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x430, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x430, 0x3b, 0x3b, +0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x445, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x430, 0x3b, 0x42, 0x6f, 0x73, 0x61, 0x6e, +0x73, 0x6b, 0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x61, 0x20, 0x6b, 0x6f, 0x6e, 0x76, +0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x3b, 0x3b, 0x62, 0x6f, 0x73, +0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x61, 0x20, 0x6b, 0x6f, +0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x3b, 0x3b, 0x62, +0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x65, 0x20, +0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x3b, +0x3b, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, +0x69, 0x68, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x69, 0x68, 0x20, 0x6d, 0x61, +0x72, 0x61, 0x6b, 0x61, 0x3b, 0x45, 0x76, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x76, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x76, 0x72, +0x61, 0x3b, 0x3b, 0x65, 0x76, 0x72, 0x61, 0x3b, 0x53, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x20, 0x64, 0x69, 0x6e, 0x61, 0x72, +0x3b, 0x3b, 0x73, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x20, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x3b, 0x3b, 0x73, 0x72, 0x70, 0x73, +0x6b, 0x61, 0x20, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x61, 0x3b, 0x3b, 0x73, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x68, 0x20, 0x64, +0x69, 0x6e, 0x61, 0x72, 0x61, 0x3b, 0x411, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, +0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430, +0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x445, 0x435, 0x440, 0x446, +0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, +0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x445, 0x435, +0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x435, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, +0x438, 0x43b, 0x43d, 0x435, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x65, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, +0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x438, 0x445, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, +0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x438, 0x445, 0x20, 0x43c, 0x430, 0x440, 0x430, 0x43a, 0x430, 0x3b, 0x415, 0x432, 0x440, 0x43e, +0x3b, 0x3b, 0x435, 0x432, 0x440, 0x43e, 0x3b, 0x3b, 0x435, 0x432, 0x440, 0x430, 0x3b, 0x3b, 0x435, 0x432, 0x440, 0x430, 0x3b, 0x41b, +0x430, 0x440, 0x3b, 0x3b, 0x43b, 0x430, 0x440, 0x3b, 0x3b, 0x3b, 0x3b, 0x43b, 0x430, 0x440, 0x44b, 0x3b, 0x421, 0x43e, 0x43c, 0x3b, +0x3b, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x3b, 0x3b, 0x441, 0x43e, 0x43c, 0x44b, 0x3b, 0x44, 0x6f, 0x72, 0x61, 0x20, 0x72, 0x65, +0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x6b, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x67e, 0x627, 0x6aa, 0x633, 0x62a, +0x627, 0x646, 0x64a, 0x20, 0x631, 0x67e, 0x64a, 0x3b, 0x3b, 0x67e, 0x627, 0x6aa, 0x633, 0x62a, 0x627, 0x646, 0x64a, 0x20, 0x631, 0x67e, +0x64a, 0x3b, 0x3b, 0x3b, 0x3b, 0x67e, 0x627, 0x6aa, 0x633, 0x62a, 0x627, 0x646, 0x64a, 0x20, 0x631, 0x67e, 0x64a, 0x3b, 0x939, 0x93f, +0x902, 0x926, 0x941, 0x938, 0x94d, 0x924, 0x93e, 0x928, 0x940, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x94b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0x20, 0xdbb, 0xdd4, 0xdb4, 0xdd2, 0xdba, 0xdbd, 0x3b, +0x3b, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0x20, 0xdbb, 0xdd4, 0xdb4, 0xdd2, 0xdba, 0xdbd, 0x3b, 0x3b, +0x3b, 0x3b, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0x20, 0xdbb, 0xdd4, 0xdb4, 0xdd2, 0xdba, 0xdbd, 0x3b, +0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0xe1, 0x3b, 0x65, 0x75, 0x72, +0x61, 0x3b, 0x65, 0x75, 0x72, 0x3b, 0x65, 0x76, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x76, 0x72, 0x6f, 0x3b, 0x65, 0x76, 0x72, +0x61, 0x3b, 0x65, 0x76, 0x72, 0x69, 0x3b, 0x3b, 0x65, 0x76, 0x72, 0x6f, 0x76, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, +0x67, 0x6b, 0x61, 0x20, 0x53, 0x6f, 0x6f, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x46, 0x61, 0x72, 0x61, 0x6e, 0x20, 0x4a, 0x61, 0x62, 0x75, 0x75, 0x74, 0x69, 0x3b, 0x3b, 0x66, 0x61, 0x72, 0x61, +0x6e, 0x6b, 0x61, 0x20, 0x4a, 0x61, 0x62, 0x75, 0x75, 0x74, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x61, 0x72, 0x61, 0x6e, +0x6b, 0x61, 0x20, 0x4a, 0x61, 0x62, 0x75, 0x75, 0x74, 0x69, 0x3b, 0x42, 0x69, 0x72, 0x74, 0x61, 0x20, 0x49, 0x74, 0x6f, +0x6f, 0x62, 0x62, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x62, 0x69, 0x72, 0x74, 0x61, 0x20, 0x49, 0x74, 0x6f, 0x6f, 0x62, 0x62, +0x69, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x62, 0x69, 0x72, 0x74, 0x61, 0x20, 0x49, 0x74, 0x6f, 0x6f, 0x62, 0x62, 0x69, +0x79, 0x61, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x6b, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, +0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x6b, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, +0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x6b, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, +0x61, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x61, 0x72, 0x67, 0x65, +0x6e, 0x74, 0x69, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x61, 0x72, 0x67, 0x65, 0x6e, +0x74, 0x69, 0x6e, 0x6f, 0x73, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x62, 0x65, 0x6c, 0x69, 0x63, 0x65, 0xf1, 0x6f, +0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x62, 0x65, 0x6c, 0x69, 0x63, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, +0x64, 0xf3, 0x6c, 0x61, 0x72, 0x65, 0x73, 0x20, 0x62, 0x65, 0x6c, 0x69, 0x63, 0x65, 0xf1, 0x6f, 0x73, 0x3b, 0x62, 0x6f, +0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x62, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, +0x3b, 0x3b, 0x62, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, +0x61, 0x73, 0x69, 0x6c, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, +0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x72, 0x65, 0x61, 0x6c, 0x65, 0x73, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, +0x65, 0xf1, 0x6f, 0x73, 0x3b, 0x50, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x68, 0x69, 0x6c, 0x65, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, +0x65, 0x73, 0x6f, 0x20, 0x63, 0x68, 0x69, 0x6c, 0x65, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, +0x20, 0x63, 0x68, 0x69, 0x6c, 0x65, 0x6e, 0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6d, +0x62, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, 0x61, +0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, 0x61, +0x6e, 0x6f, 0x73, 0x3b, 0x63, 0x6f, 0x6c, 0xf3, 0x6e, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x72, 0x69, 0x63, 0x65, +0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x63, 0x6f, 0x6c, 0xf3, 0x6e, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x72, 0x69, 0x63, +0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x63, 0x6f, 0x6c, 0x6f, 0x6e, 0x65, 0x73, 0x20, 0x63, 0x6f, 0x73, 0x74, +0x61, 0x72, 0x72, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x75, 0x62, 0x61, +0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x75, 0x62, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, +0x65, 0x73, 0x6f, 0x73, 0x20, 0x63, 0x75, 0x62, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x64, 0x6f, +0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x64, 0x6f, 0x6d, 0x69, 0x6e, +0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x64, 0x6f, 0x6d, 0x69, 0x6e, +0x69, 0x63, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x65, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x75, +0x6e, 0x69, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x65, 0x73, 0x74, 0x61, 0x64, +0x6f, 0x75, 0x6e, 0x69, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x65, 0x73, +0x20, 0x65, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x75, 0x6e, 0x69, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x3b, 0x66, 0x72, 0x61, +0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x64, 0x65, 0x20, 0xc1, 0x66, 0x72, 0x69, 0x63, 0x61, 0x20, 0x43, 0x65, +0x6e, 0x74, 0x72, 0x61, 0x6c, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x64, 0x65, +0x20, 0xc1, 0x66, 0x72, 0x69, 0x63, 0x61, 0x20, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, +0x72, 0x61, 0x6e, 0x63, 0x6f, 0x73, 0x20, 0x43, 0x46, 0x41, 0x20, 0x64, 0x65, 0x20, 0xc1, 0x66, 0x72, 0x69, 0x63, 0x61, +0x20, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x3b, 0x71, 0x75, 0x65, 0x74, 0x7a, 0x61, 0x6c, 0x3b, 0x3b, 0x71, 0x75, +0x65, 0x74, 0x7a, 0x61, 0x6c, 0x3b, 0x3b, 0x3b, 0x3b, 0x71, 0x75, 0x65, 0x74, 0x7a, 0x61, 0x6c, 0x65, 0x73, 0x3b, 0x6c, +0x65, 0x6d, 0x70, 0x69, 0x72, 0x61, 0x20, 0x68, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x6c, 0x65, +0x6d, 0x70, 0x69, 0x72, 0x61, 0x20, 0x68, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x6c, +0x65, 0x6d, 0x70, 0x69, 0x72, 0x61, 0x73, 0x20, 0x68, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x65, 0xf1, 0x6f, 0x73, 0x3b, 0x70, +0x65, 0x73, 0x6f, 0x20, 0x6d, 0x65, 0x78, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x6d, +0x65, 0x78, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x6d, 0x65, 0x78, +0x69, 0x63, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x63, 0xf3, 0x72, 0x64, 0x6f, 0x62, 0x61, 0x20, 0x6e, 0x69, 0x63, 0x61, 0x72, +0x61, 0x67, 0xfc, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x63, 0xf3, 0x72, 0x64, 0x6f, 0x62, 0x61, 0x20, 0x6e, 0x69, 0x63, +0x61, 0x72, 0x61, 0x67, 0xfc, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x63, 0xf3, 0x72, 0x64, 0x6f, 0x62, 0x61, +0x73, 0x20, 0x6e, 0x69, 0x63, 0x61, 0x72, 0x61, 0x67, 0xfc, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x3b, 0x62, 0x61, 0x6c, 0x62, +0x6f, 0x61, 0x20, 0x70, 0x61, 0x6e, 0x61, 0x6d, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x62, 0x61, 0x6c, 0x62, 0x6f, 0x61, 0x20, +0x70, 0x61, 0x6e, 0x61, 0x6d, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x62, 0x61, 0x6c, 0x62, 0x6f, 0x61, 0x73, 0x20, +0x70, 0x61, 0x6e, 0x61, 0x6d, 0x65, 0xf1, 0x6f, 0x73, 0x3b, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0xed, 0x20, 0x70, 0x61, +0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0xed, 0x20, 0x70, 0x61, 0x72, +0x61, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0xed, 0x65, 0x73, 0x20, +0x70, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x73, 0x3b, 0x73, 0x6f, 0x6c, 0x20, 0x70, 0x65, 0x72, 0x75, 0x61, +0x6e, 0x6f, 0x3b, 0x3b, 0x73, 0x6f, 0x6c, 0x20, 0x70, 0x65, 0x72, 0x75, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, +0x6f, 0x6c, 0x65, 0x73, 0x20, 0x70, 0x65, 0x72, 0x75, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x66, +0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x66, 0x69, 0x6c, 0x69, 0x70, 0x69, +0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x6f, +0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x75, 0x72, 0x75, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, +0x6f, 0x20, 0x75, 0x72, 0x75, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, +0x75, 0x72, 0x75, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x73, 0x3b, 0x62, 0x6f, 0x6c, 0xed, 0x76, 0x61, 0x72, 0x20, 0x73, 0x6f, +0x62, 0x65, 0x72, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x62, 0x6f, 0x6c, 0xed, 0x76, 0x61, 0x72, 0x20, 0x73, 0x6f, 0x62, 0x65, +0x72, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x62, 0x6f, 0x6c, 0xed, 0x76, 0x61, 0x72, 0x65, 0x73, 0x20, 0x73, 0x6f, +0x62, 0x65, 0x72, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x52, 0x75, 0x70, 0x65, 0x65, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0xe9, +0x73, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x72, 0x75, 0x70, 0x65, 0x65, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, +0xe9, 0x73, 0x69, 0x61, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, +0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, +0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, +0x7a, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x46, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x61, 0x20, +0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x3b, 0x66, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x79, 0x61, +0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x7a, 0x61, +0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, +0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, +0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x7a, 0x61, 0x20, 0x4b, +0x65, 0x6e, 0x79, 0x61, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x55, 0x67, 0x61, +0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x55, 0x67, 0x61, +0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x7a, 0x61, 0x20, 0x55, +0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b, +0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x76, 0x65, 0x6e, +0x73, 0x6b, 0x61, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x6f, 0x72, 0x3b, 0x421, 0x43e, 0x43c, 0x43e, 0x43d, 0x4e3, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x421, 0x43e, 0x43c, 0x43e, 0x43d, 0x4e3, 0x3b, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0x20, 0xbb0, 0xbc2, 0xbaa, +0xbbe, 0xbaf, 0xbcd, 0x3b, 0x3b, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0x3b, +0x3b, 0x3b, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, 0xbae, +0xbb2, 0xbc7, 0xbb7, 0xbbf, 0xbaf, 0xba9, 0xbcd, 0x20, 0xbb0, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbbf, 0xb9f, 0xbcd, 0x3b, 0x3b, 0xbae, 0xbb2, +0xbc7, 0xbb7, 0xbbf, 0xbaf, 0xba9, 0xbcd, 0x20, 0xbb0, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbbf, 0xb9f, 0xbcd, 0x3b, 0x3b, 0x3b, 0x3b, 0xbae, +0xbb2, 0xbc7, 0xbb7, 0xbbf, 0xbaf, 0xba9, 0xbcd, 0x20, 0xbb0, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbbf, 0xb9f, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, +0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0x20, 0xb9f, 0xbbe, 0xbb2, 0xbb0, 0xbcd, 0x3b, 0x3b, 0xb9a, +0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0x20, 0xb9f, 0xbbe, 0xbb2, 0xbb0, 0xbcd, 0x3b, 0x3b, 0x3b, 0x3b, +0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0x20, 0xb9f, 0xbbe, 0xbb2, 0xbb0, 0xbcd, 0xb95, 0xbb3, 0xbcd, +0x3b, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0x3b, 0xb87, 0xbb2, 0xb99, 0xbcd, +0xb95, 0xbc8, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0x3b, 0x3b, 0x3b, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0x20, +0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x44f, 0x20, 0x441, 0x443, 0x43c, +0x44b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x441, 0x443, 0x43c, 0x3b, 0xc30, 0xc42, 0xc2a, 0xc3e, 0xc2f, 0xc3f, 0x3b, 0x3b, 0xc30, +0xc42, 0xc2a, 0xc3e, 0xc2f, 0xc3f, 0x3b, 0x3b, 0x3b, 0x3b, 0xc30, 0xc42, 0xc2a, 0xc3e, 0xc2f, 0xc32, 0xc41, 0x3b, 0xe1a, 0xe32, 0xe17, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xe1a, 0xe32, 0xe17, 0xe44, 0xe17, 0xe22, 0x3b, 0xf61, 0xf74, 0xf0b, 0xf68, 0xf53, 0xf0b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xf62, 0xf92, 0xfb1, 0xf0b, 0xf42, 0xf62, 0xf0b, 0xf66, 0xf92, 0xf7c, 0xf62, 0xf0b, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x12e8, 0x12a2, 0x1275, 0x12ee, 0x1335, 0x12eb, 0x20, 0x1265, 0x122d, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x50, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x66, 0x61, 0x6b, 0x61, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x50, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x66, 0x61, 0x6b, 0x61, 0x74, 0x6f, 0x6e, 0x67, +0x61, 0x3b, 0x54, 0xfc, 0x72, 0x6b, 0x20, 0x4c, 0x69, 0x72, 0x61, 0x73, 0x131, 0x3b, 0x3b, 0x54, 0xfc, 0x72, 0x6b, 0x20, +0x6c, 0x69, 0x72, 0x61, 0x73, 0x131, 0x3b, 0x3b, 0x3b, 0x3b, 0x54, 0xfc, 0x72, 0x6b, 0x20, 0x6c, 0x69, 0x72, 0x61, 0x73, +0x131, 0x3b, 0x54, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x64, 0x79, 0x3b, 0x3b, 0x74, 0xfc, +0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x64, 0x79, 0x3b, 0x3b, 0x3b, 0x3b, 0x74, 0xfc, 0x72, 0x6b, +0x6d, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x64, 0x79, 0x3b, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x20, 0x64a, 0x6c8, 0x6d5, +0x646, 0x649, 0x3b, 0x3b, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x20, 0x64a, 0x6c8, 0x6d5, 0x646, 0x649, 0x3b, 0x3b, 0x3b, 0x3b, 0x62c, +0x6c7, 0x6ad, 0x6af, 0x648, 0x20, 0x64a, 0x6c8, 0x6d5, 0x646, 0x649, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x441, 0x44c, 0x43a, +0x430, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44f, 0x3b, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x441, 0x44c, 0x43a, 0x430, +0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44f, 0x3b, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x441, 0x44c, 0x43a, 0x456, 0x20, +0x433, 0x440, 0x438, 0x432, 0x43d, 0x456, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x441, 0x44c, 0x43a, 0x438, 0x445, 0x20, 0x433, +0x440, 0x438, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x443, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x441, 0x44c, 0x43a, 0x43e, 0x457, 0x20, 0x433, +0x440, 0x438, 0x432, 0x43d, 0x456, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, +0x3b, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x3b, 0x3b, +0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x628, 0x6be, 0x627, 0x631, 0x62a, +0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x628, 0x6be, 0x627, 0x631, 0x62a, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, +0x6c1, 0x3b, 0x3b, 0x3b, 0x3b, 0x628, 0x6be, 0x627, 0x631, 0x62a, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6d2, 0x3b, 0x4f, 0x2018, 0x7a, +0x62, 0x65, 0x6b, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2018, 0x6d, 0x69, 0x3b, 0x3b, 0x4f, 0x2018, 0x7a, 0x62, +0x65, 0x6b, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2018, 0x6d, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x4f, 0x2018, 0x7a, +0x62, 0x65, 0x6b, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2018, 0x6d, 0x69, 0x3b, 0x627, 0x641, 0x63a, 0x627, 0x646, +0x6cc, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x20, 0x441, +0x45e, 0x43c, 0x3b, 0x3b, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x20, 0x441, 0x45e, 0x43c, 0x3b, 0x3b, +0x3b, 0x3b, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x20, 0x441, 0x45e, 0x43c, 0x3b, 0x110, 0x1ed3, 0x6e, +0x67, 0x20, 0x56, 0x69, 0x1ec7, 0x74, 0x20, 0x4e, 0x61, 0x6d, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x110, 0x1ed3, 0x6e, 0x67, +0x20, 0x56, 0x69, 0x1ec7, 0x74, 0x20, 0x4e, 0x61, 0x6d, 0x3b, 0x50, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, +0x69, 0x6e, 0x3b, 0x70, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x62, 0x75, 0x6e, 0x74, +0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x62, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, +0x6e, 0x3b, 0x70, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x70, 0x75, 0x6e, 0x74, 0x20, +0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x70, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, +0x3b, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20, 0x62, 0x75, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x20, +0x53, 0x6f, 0x77, 0x77, 0x75, 0x2d, 0x6a, 0x61, 0x6e, 0x74, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x61, 0x6e, +0x63, 0x20, 0x43, 0x46, 0x41, 0x20, 0x79, 0x75, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x20, 0x53, 0x6f, 0x77, 0x77, 0x75, +0x2d, 0x6a, 0x61, 0x6e, 0x74, 0x3b, 0x69, 0x52, 0x61, 0x6e, 0x64, 0x69, 0x20, 0x79, 0x61, 0x73, 0x65, 0x4d, 0x7a, 0x61, +0x6e, 0x7a, 0x69, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x3b, 0x3b, 0x69, 0x52, 0x61, 0x6e, 0x64, 0x69, 0x20, 0x59, +0x61, 0x73, 0x65, 0x4d, 0x7a, 0x61, 0x6e, 0x7a, 0x69, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, +0x69, 0x52, 0x61, 0x6e, 0x64, 0x69, 0x20, 0x79, 0x61, 0x73, 0x65, 0x4d, 0x7a, 0x61, 0x6e, 0x7a, 0x69, 0x20, 0x41, 0x66, +0x72, 0x69, 0x6b, 0x61, 0x3b, 0x4e, 0xe1, 0xed, 0x72, 0xe0, 0x20, 0x4e, 0xe0, 0xec, 0x6a, 0xed, 0x72, 0xed, 0xe0, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0xe1, 0xed, 0x72, 0xe0, 0x20, 0x4e, 0xe0, 0xec, 0x6a, 0xed, 0x72, 0xed, 0xe0, 0x3b, +0x46, 0x61, 0x72, 0x61, 0x6e, 0x73, 0xec, 0x20, 0xec, 0x77, 0x254, 0x300, 0x2d, 0x6f, 0x6f, 0x72, 0xf9, 0x6e, 0x20, 0x41, +0x66, 0xed, 0x72, 0xed, 0x6b, 0xe0, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xe0, 0x77, 0x254, 0x6e, 0x20, 0x66, 0x61, 0x72, +0x61, 0x6e, 0x73, 0xec, 0x20, 0xec, 0x77, 0x254, 0x300, 0x2d, 0x6f, 0x6f, 0x72, 0xf9, 0x6e, 0x20, 0x41, 0x66, 0xed, 0x72, +0xed, 0x6b, 0xe0, 0x3b, 0x69, 0x2d, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, +0x52, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x69, 0x2d, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, +0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x69, 0x2d, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, +0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x3b, 0x41a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, +0x438, 0x43b, 0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, -0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, 0x43a, 0x43e, 0x43d, -0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, -0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x435, 0x20, -0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x435, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x65, 0x3b, -0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, -0x43a, 0x438, 0x445, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x438, 0x445, 0x20, 0x43c, -0x430, 0x440, 0x430, 0x43a, 0x430, 0x3b, 0x415, 0x432, 0x440, 0x43e, 0x3b, 0x3b, 0x435, 0x432, 0x440, 0x43e, 0x3b, 0x3b, 0x435, 0x432, -0x440, 0x430, 0x3b, 0x3b, 0x435, 0x432, 0x440, 0x430, 0x3b, 0x41b, 0x430, 0x440, 0x3b, 0x3b, 0x43b, 0x430, 0x440, 0x3b, 0x3b, 0x3b, -0x3b, 0x43b, 0x430, 0x440, 0x44b, 0x3b, 0x421, 0x43e, 0x43c, 0x3b, 0x3b, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x3b, 0x3b, 0x441, 0x43e, -0x43c, 0x44b, 0x3b, 0x44, 0x6f, 0x72, 0x61, 0x20, 0x72, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x6b, 0x61, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x67e, 0x627, 0x6aa, 0x633, 0x62a, 0x627, 0x646, 0x64a, 0x20, 0x631, 0x67e, 0x64a, 0x3b, 0x3b, 0x67e, -0x627, 0x6aa, 0x633, 0x62a, 0x627, 0x646, 0x64a, 0x20, 0x631, 0x67e, 0x64a, 0x3b, 0x3b, 0x3b, 0x3b, 0x67e, 0x627, 0x6aa, 0x633, 0x62a, -0x627, 0x646, 0x64a, 0x20, 0x631, 0x67e, 0x64a, 0x3b, 0x939, 0x93f, 0x902, 0x926, 0x941, 0x938, 0x94d, 0x924, 0x93e, 0x928, 0x940, 0x20, -0x930, 0x941, 0x92a, 0x92f, 0x94b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, -0xd9a, 0xdcf, 0x20, 0xdbb, 0xdd4, 0xdb4, 0xdd2, 0xdba, 0xdbd, 0x3b, 0x3b, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, -0xdcf, 0x20, 0xdbb, 0xdd4, 0xdb4, 0xdd2, 0xdba, 0xdbd, 0x3b, 0x3b, 0x3b, 0x3b, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, -0xd9a, 0xdcf, 0x20, 0xdbb, 0xdd4, 0xdb4, 0xdd2, 0xdba, 0xdbd, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, -0x3b, 0x3b, 0x65, 0x75, 0x72, 0xe1, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x3b, 0x65, 0x75, 0x72, 0x3b, 0x65, 0x76, 0x72, 0x6f, -0x3b, 0x3b, 0x65, 0x76, 0x72, 0x6f, 0x3b, 0x65, 0x76, 0x72, 0x61, 0x3b, 0x65, 0x76, 0x72, 0x69, 0x3b, 0x3b, 0x65, 0x76, -0x72, 0x6f, 0x76, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x6b, 0x61, 0x20, 0x53, 0x6f, 0x6f, 0x6d, 0x61, 0x61, -0x6c, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x61, 0x72, 0x61, 0x6e, 0x20, 0x4a, 0x61, 0x62, -0x75, 0x75, 0x74, 0x69, 0x3b, 0x3b, 0x66, 0x61, 0x72, 0x61, 0x6e, 0x6b, 0x61, 0x20, 0x4a, 0x61, 0x62, 0x75, 0x75, 0x74, -0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x61, 0x72, 0x61, 0x6e, 0x6b, 0x61, 0x20, 0x4a, 0x61, 0x62, 0x75, 0x75, 0x74, 0x69, -0x3b, 0x42, 0x69, 0x72, 0x74, 0x61, 0x20, 0x49, 0x74, 0x6f, 0x6f, 0x62, 0x62, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x62, 0x69, -0x72, 0x74, 0x61, 0x20, 0x49, 0x74, 0x6f, 0x6f, 0x62, 0x62, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x62, 0x69, 0x72, -0x74, 0x61, 0x20, 0x49, 0x74, 0x6f, 0x6f, 0x62, 0x62, 0x69, 0x79, 0x61, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, -0x6b, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x6b, 0x61, 0x20, -0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x6b, 0x61, 0x20, 0x4b, -0x65, 0x6e, 0x79, 0x61, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x61, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x6f, 0x3b, -0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x61, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, -0x65, 0x73, 0x6f, 0x73, 0x20, 0x61, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x6f, 0x73, 0x3b, 0x64, 0xf3, 0x6c, 0x61, -0x72, 0x20, 0x62, 0x65, 0x6c, 0x69, 0x63, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x20, 0x62, 0x65, -0x6c, 0x69, 0x63, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x65, 0x73, 0x20, 0x62, 0x65, -0x6c, 0x69, 0x63, 0x65, 0xf1, 0x6f, 0x73, 0x3b, 0x62, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x62, -0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x62, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x6e, -0x6f, 0x73, 0x3b, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x72, -0x65, 0x61, 0x6c, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x72, 0x65, 0x61, -0x6c, 0x65, 0x73, 0x20, 0x62, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x65, 0xf1, 0x6f, 0x73, 0x3b, 0x50, 0x65, 0x73, 0x6f, 0x20, -0x63, 0x68, 0x69, 0x6c, 0x65, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x68, 0x69, 0x6c, 0x65, 0x6e, -0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x63, 0x68, 0x69, 0x6c, 0x65, 0x6e, 0x6f, 0x73, 0x3b, -0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, -0x6f, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, -0x73, 0x20, 0x63, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x63, 0x6f, 0x6c, 0xf3, 0x6e, 0x20, -0x63, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x72, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x63, 0x6f, 0x6c, 0xf3, 0x6e, -0x20, 0x63, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x72, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x63, 0x6f, -0x6c, 0x6f, 0x6e, 0x65, 0x73, 0x20, 0x63, 0x6f, 0x73, 0x74, 0x61, 0x72, 0x72, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73, -0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, 0x75, 0x62, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x63, -0x75, 0x62, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x63, 0x75, 0x62, 0x61, 0x6e, -0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, -0x70, 0x65, 0x73, 0x6f, 0x20, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, -0x65, 0x73, 0x6f, 0x73, 0x20, 0x64, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x64, 0xf3, 0x6c, -0x61, 0x72, 0x20, 0x65, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x75, 0x6e, 0x69, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x64, -0xf3, 0x6c, 0x61, 0x72, 0x20, 0x65, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x75, 0x6e, 0x69, 0x64, 0x65, 0x6e, 0x73, 0x65, 0x3b, -0x3b, 0x3b, 0x3b, 0x64, 0xf3, 0x6c, 0x61, 0x72, 0x65, 0x73, 0x20, 0x65, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x75, 0x6e, 0x69, -0x64, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x64, 0x65, -0x20, 0xc1, 0x66, 0x72, 0x69, 0x63, 0x61, 0x20, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x3b, 0x3b, 0x66, 0x72, 0x61, -0x6e, 0x63, 0x6f, 0x20, 0x43, 0x46, 0x41, 0x20, 0x64, 0x65, 0x20, 0xc1, 0x66, 0x72, 0x69, 0x63, 0x61, 0x20, 0x43, 0x65, -0x6e, 0x74, 0x72, 0x61, 0x6c, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x73, 0x20, 0x43, 0x46, 0x41, -0x20, 0x64, 0x65, 0x20, 0xc1, 0x66, 0x72, 0x69, 0x63, 0x61, 0x20, 0x43, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x6c, 0x3b, 0x71, -0x75, 0x65, 0x74, 0x7a, 0x61, 0x6c, 0x3b, 0x3b, 0x71, 0x75, 0x65, 0x74, 0x7a, 0x61, 0x6c, 0x3b, 0x3b, 0x3b, 0x3b, 0x71, -0x75, 0x65, 0x74, 0x7a, 0x61, 0x6c, 0x65, 0x73, 0x3b, 0x6c, 0x65, 0x6d, 0x70, 0x69, 0x72, 0x61, 0x20, 0x68, 0x6f, 0x6e, -0x64, 0x75, 0x72, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x6c, 0x65, 0x6d, 0x70, 0x69, 0x72, 0x61, 0x20, 0x68, 0x6f, 0x6e, 0x64, -0x75, 0x72, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x6c, 0x65, 0x6d, 0x70, 0x69, 0x72, 0x61, 0x73, 0x20, 0x68, 0x6f, -0x6e, 0x64, 0x75, 0x72, 0x65, 0xf1, 0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x6d, 0x65, 0x78, 0x69, 0x63, 0x61, -0x6e, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x6d, 0x65, 0x78, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, -0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x6d, 0x65, 0x78, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x63, 0xf3, 0x72, -0x64, 0x6f, 0x62, 0x61, 0x20, 0x6e, 0x69, 0x63, 0x61, 0x72, 0x61, 0x67, 0xfc, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x3b, 0x63, -0xf3, 0x72, 0x64, 0x6f, 0x62, 0x61, 0x20, 0x6e, 0x69, 0x63, 0x61, 0x72, 0x61, 0x67, 0xfc, 0x65, 0x6e, 0x73, 0x65, 0x3b, -0x3b, 0x3b, 0x3b, 0x63, 0xf3, 0x72, 0x64, 0x6f, 0x62, 0x61, 0x73, 0x20, 0x6e, 0x69, 0x63, 0x61, 0x72, 0x61, 0x67, 0xfc, -0x65, 0x6e, 0x73, 0x65, 0x73, 0x3b, 0x62, 0x61, 0x6c, 0x62, 0x6f, 0x61, 0x20, 0x70, 0x61, 0x6e, 0x61, 0x6d, 0x65, 0xf1, -0x6f, 0x3b, 0x3b, 0x62, 0x61, 0x6c, 0x62, 0x6f, 0x61, 0x20, 0x70, 0x61, 0x6e, 0x61, 0x6d, 0x65, 0xf1, 0x6f, 0x3b, 0x3b, -0x3b, 0x3b, 0x62, 0x61, 0x6c, 0x62, 0x6f, 0x61, 0x73, 0x20, 0x70, 0x61, 0x6e, 0x61, 0x6d, 0x65, 0xf1, 0x6f, 0x73, 0x3b, -0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0xed, 0x20, 0x70, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x67, -0x75, 0x61, 0x72, 0x61, 0x6e, 0xed, 0x20, 0x70, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, -0x67, 0x75, 0x61, 0x72, 0x61, 0x6e, 0xed, 0x65, 0x73, 0x20, 0x70, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x73, -0x3b, 0x73, 0x6f, 0x6c, 0x20, 0x70, 0x65, 0x72, 0x75, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x73, 0x6f, 0x6c, 0x20, 0x70, 0x65, -0x72, 0x75, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x6f, 0x6c, 0x65, 0x73, 0x20, 0x70, 0x65, 0x72, 0x75, 0x61, -0x6e, 0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x66, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x6f, 0x3b, 0x3b, 0x70, -0x65, 0x73, 0x6f, 0x20, 0x66, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, -0x73, 0x20, 0x66, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x6f, 0x73, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x75, 0x72, 0x75, -0x67, 0x75, 0x61, 0x79, 0x6f, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x20, 0x75, 0x72, 0x75, 0x67, 0x75, 0x61, 0x79, 0x6f, -0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x65, 0x73, 0x6f, 0x73, 0x20, 0x75, 0x72, 0x75, 0x67, 0x75, 0x61, 0x79, 0x6f, 0x73, 0x3b, -0x62, 0x6f, 0x6c, 0xed, 0x76, 0x61, 0x72, 0x20, 0x73, 0x6f, 0x62, 0x65, 0x72, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x62, 0x6f, -0x6c, 0xed, 0x76, 0x61, 0x72, 0x20, 0x73, 0x6f, 0x62, 0x65, 0x72, 0x61, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x62, 0x6f, -0x6c, 0xed, 0x76, 0x61, 0x72, 0x65, 0x73, 0x20, 0x73, 0x6f, 0x62, 0x65, 0x72, 0x61, 0x6e, 0x6f, 0x73, 0x3b, 0x52, 0x75, -0x70, 0x65, 0x65, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0xe9, 0x73, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x72, -0x75, 0x70, 0x65, 0x65, 0x20, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0xe9, 0x73, 0x69, 0x61, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, -0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x73, 0x68, 0x69, -0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, -0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x7a, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, -0x61, 0x3b, 0x46, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x3b, -0x66, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, -0x66, 0x61, 0x72, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x7a, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x53, 0x68, 0x69, -0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, -0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, -0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x7a, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, -0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, -0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, -0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x7a, 0x61, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x73, 0x76, 0x65, 0x6e, -0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x61, 0x3b, 0x3b, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x20, 0x6b, 0x72, 0x6f, -0x6e, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0x20, 0x6b, 0x72, 0x6f, 0x6e, 0x6f, 0x72, -0x3b, 0x421, 0x43e, 0x43c, 0x43e, 0x43d, 0x4e3, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x421, 0x43e, 0x43c, 0x43e, 0x43d, 0x4e3, 0x3b, -0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0x3b, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, -0xbaf, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0x3b, 0x3b, 0x3b, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0x20, 0xbb0, -0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, 0xbae, 0xbb2, 0xbc7, 0xbb7, 0xbbf, 0xbaf, 0xba9, 0xbcd, 0x20, 0xbb0, 0xbbf, -0xb99, 0xbcd, 0xb95, 0xbbf, 0xb9f, 0xbcd, 0x3b, 0x3b, 0xbae, 0xbb2, 0xbc7, 0xbb7, 0xbbf, 0xbaf, 0xba9, 0xbcd, 0x20, 0xbb0, 0xbbf, 0xb99, -0xbcd, 0xb95, 0xbbf, 0xb9f, 0xbcd, 0x3b, 0x3b, 0x3b, 0x3b, 0xbae, 0xbb2, 0xbc7, 0xbb7, 0xbbf, 0xbaf, 0xba9, 0xbcd, 0x20, 0xbb0, 0xbbf, -0xb99, 0xbcd, 0xb95, 0xbbf, 0xb9f, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, -0xbcd, 0x20, 0xb9f, 0xbbe, 0xbb2, 0xbb0, 0xbcd, 0x3b, 0x3b, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, -0x20, 0xb9f, 0xbbe, 0xbb2, 0xbb0, 0xbcd, 0x3b, 0x3b, 0x3b, 0x3b, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, -0xbcd, 0x20, 0xb9f, 0xbbe, 0xbb2, 0xbb0, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0x20, 0xbb0, 0xbc2, -0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x3b, 0x3b, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0x3b, -0x3b, 0x3b, 0x3b, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0x20, 0xbb0, 0xbc2, 0xbaa, 0xbbe, 0xbaf, 0xbcd, 0xb95, 0xbb3, 0xbcd, 0x3b, -0x420, 0x43e, 0x441, 0x441, 0x438, 0x44f, 0x20, 0x441, 0x443, 0x43c, 0x44b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x441, 0x443, 0x43c, -0x3b, 0xc30, 0xc42, 0xc2a, 0xc3e, 0xc2f, 0xc3f, 0x3b, 0x3b, 0xc30, 0xc42, 0xc2a, 0xc3e, 0xc2f, 0xc3f, 0x3b, 0x3b, 0x3b, 0x3b, 0xc30, -0xc42, 0xc2a, 0xc3e, 0xc2f, 0xc32, 0xc41, 0x3b, 0xe1a, 0xe32, 0xe17, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xe1a, 0xe32, 0xe17, 0xe44, -0xe17, 0xe22, 0x3b, 0xf61, 0xf74, 0xf0b, 0xf68, 0xf53, 0xf0b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xf62, 0xf92, 0xfb1, 0xf0b, -0xf42, 0xf62, 0xf0b, 0xf66, 0xf92, 0xf7c, 0xf62, 0xf0b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x12e8, 0x12a2, 0x1275, 0x12ee, 0x1335, -0x12eb, 0x20, 0x1265, 0x122d, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x50, 0x61, 0x2bb, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x66, -0x61, 0x6b, 0x61, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x50, 0x61, 0x2bb, 0x61, 0x6e, 0x67, -0x61, 0x20, 0x66, 0x61, 0x6b, 0x61, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x3b, 0x54, 0xfc, 0x72, 0x6b, 0x20, 0x4c, 0x69, 0x72, -0x61, 0x73, 0x131, 0x3b, 0x3b, 0x54, 0xfc, 0x72, 0x6b, 0x20, 0x6c, 0x69, 0x72, 0x61, 0x73, 0x131, 0x3b, 0x3b, 0x3b, 0x3b, -0x54, 0xfc, 0x72, 0x6b, 0x20, 0x6c, 0x69, 0x72, 0x61, 0x73, 0x131, 0x3b, 0x54, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x20, -0x6d, 0x61, 0x6e, 0x61, 0x64, 0x79, 0x3b, 0x3b, 0x74, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, -0x64, 0x79, 0x3b, 0x3b, 0x3b, 0x3b, 0x74, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x64, 0x79, -0x3b, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x20, 0x64a, 0x6c8, 0x6d5, 0x646, 0x649, 0x3b, 0x3b, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x20, -0x64a, 0x6c8, 0x6d5, 0x646, 0x649, 0x3b, 0x3b, 0x3b, 0x3b, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x20, 0x64a, 0x6c8, 0x6d5, 0x646, 0x649, -0x3b, 0x443, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x441, 0x44c, 0x43a, 0x430, 0x20, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x44f, 0x3b, 0x3b, -0x433, 0x440, 0x438, 0x432, 0x43d, 0x44f, 0x3b, 0x3b, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x456, 0x3b, 0x433, 0x440, 0x438, 0x432, 0x435, -0x43d, 0x44c, 0x3b, 0x433, 0x440, 0x438, 0x432, 0x43d, 0x456, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cc, 0x20, 0x631, -0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, -0x3b, 0x3b, 0x3b, 0x3b, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x628, -0x6be, 0x627, 0x631, 0x62a, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x628, 0x6be, 0x627, 0x631, 0x62a, 0x6cc, 0x20, -0x631, 0x648, 0x67e, 0x6cc, 0x6c1, 0x3b, 0x3b, 0x3b, 0x3b, 0x628, 0x6be, 0x627, 0x631, 0x62a, 0x6cc, 0x20, 0x631, 0x648, 0x67e, 0x6d2, -0x3b, 0x4f, 0x2018, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2018, 0x6d, 0x69, 0x3b, 0x3b, -0x4f, 0x2018, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2018, 0x6d, 0x69, 0x3b, 0x3b, 0x3b, -0x3b, 0x4f, 0x2018, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x20, 0x73, 0x6f, 0x2018, 0x6d, 0x69, 0x3b, 0x627, -0x641, 0x63a, 0x627, 0x646, 0x6cc, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, -0x43e, 0x43d, 0x20, 0x441, 0x45e, 0x43c, 0x3b, 0x3b, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x20, 0x441, -0x45e, 0x43c, 0x3b, 0x3b, 0x3b, 0x3b, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x20, 0x441, 0x45e, 0x43c, -0x3b, 0x110, 0x1ed3, 0x6e, 0x67, 0x20, 0x56, 0x69, 0x1ec7, 0x74, 0x20, 0x4e, 0x61, 0x6d, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x110, 0x1ed3, 0x6e, 0x67, 0x20, 0x56, 0x69, 0x1ec7, 0x74, 0x20, 0x4e, 0x61, 0x6d, 0x3b, 0x50, 0x75, 0x6e, 0x74, 0x20, 0x50, -0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x70, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, -0x62, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x62, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, -0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x70, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x70, -0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, 0x64, 0x61, 0x69, 0x6e, 0x3b, 0x70, 0x75, 0x6e, 0x74, 0x20, 0x50, 0x72, 0x79, -0x64, 0x61, 0x69, 0x6e, 0x3b, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20, 0x62, 0x75, 0x20, 0x41, 0x66, -0x72, 0x69, 0x6b, 0x20, 0x53, 0x6f, 0x77, 0x77, 0x75, 0x2d, 0x6a, 0x61, 0x6e, 0x74, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x46, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x20, 0x79, 0x75, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x20, 0x53, -0x6f, 0x77, 0x77, 0x75, 0x2d, 0x6a, 0x61, 0x6e, 0x74, 0x3b, 0x69, 0x52, 0x61, 0x6e, 0x64, 0x69, 0x20, 0x79, 0x61, 0x73, -0x65, 0x4d, 0x7a, 0x61, 0x6e, 0x7a, 0x69, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x3b, 0x3b, 0x69, 0x52, 0x61, 0x6e, -0x64, 0x69, 0x20, 0x59, 0x61, 0x73, 0x65, 0x4d, 0x7a, 0x61, 0x6e, 0x7a, 0x69, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, -0x3b, 0x3b, 0x3b, 0x3b, 0x69, 0x52, 0x61, 0x6e, 0x64, 0x69, 0x20, 0x79, 0x61, 0x73, 0x65, 0x4d, 0x7a, 0x61, 0x6e, 0x7a, -0x69, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x3b, 0x4e, 0xe1, 0xec, 0x72, 0xe0, 0x20, 0x74, 0x69, 0x20, 0x4f, 0x72, -0xed, 0x6c, 0x1eb9, 0x300, 0x2d, 0xe8, 0x64, 0xe8, 0x20, 0x4e, 0xe0, 0xec, 0x6a, 0xed, 0x72, 0xed, 0xe0, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x4e, 0xe1, 0xed, 0x72, 0xe0, 0x20, 0x4e, 0xe0, 0xec, 0x6a, 0xed, 0x72, 0xed, 0xe0, 0x3b, 0x46, 0x61, -0x72, 0x61, 0x6e, 0x73, 0x69, 0x20, 0x74, 0x69, 0x20, 0x4f, 0x72, 0xed, 0x6c, 0x25b, 0x301, 0xe8, 0x64, 0x65, 0x20, 0x42, -0x49, 0x4b, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x69, 0x2d, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, -0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x69, 0x2d, 0x53, 0x6f, 0x75, 0x74, -0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x3b, 0x3b, 0x3b, 0x3b, 0x69, 0x2d, -0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x20, 0x52, 0x61, 0x6e, 0x64, 0x3b, 0x42, -0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, 0x61, 0x20, -0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x61, 0x3b, -0x3b, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, 0x10d, 0x6b, -0x61, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x61, 0x20, 0x6d, 0x61, 0x72, 0x6b, -0x61, 0x3b, 0x3b, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, 0x76, 0x61, -0x10d, 0x6b, 0x65, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x65, 0x20, 0x6d, 0x61, -0x72, 0x6b, 0x65, 0x3b, 0x3b, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x6f, 0x68, 0x65, 0x72, 0x63, 0x65, 0x67, 0x6f, -0x76, 0x61, 0x10d, 0x6b, 0x69, 0x68, 0x20, 0x6b, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x69, 0x62, 0x69, 0x6c, 0x6e, 0x69, -0x68, 0x20, 0x6d, 0x61, 0x72, 0x61, 0x6b, 0x61, 0x3b, 0x41a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, -0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, -0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, -0x431, 0x438, 0x43b, 0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, -0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x435, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, -0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x435, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x435, 0x3b, 0x3b, 0x431, 0x43e, 0x441, 0x430, -0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x438, 0x445, 0x20, 0x43a, -0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x438, 0x445, 0x20, 0x43c, 0x430, 0x440, 0x430, 0x43a, 0x430, -0x3b, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x53, 0x69, 0x64, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, -0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61, 0x1ecb, -0x72, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, -0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x67, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x73, 0x69, -0x256, 0x69, 0x3b, 0x3b, 0x67, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x73, 0x69, 0x256, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x67, 0x68, -0x61, 0x6e, 0x61, 0x20, 0x73, 0x69, 0x256, 0x69, 0x3b, 0x263, 0x65, 0x74, 0x6f, 0x256, 0x6f, 0x66, 0x65, 0x20, 0x61, 0x66, -0x72, 0x69, 0x6b, 0x61, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x42, 0x43, 0x45, -0x41, 0x4f, 0x3b, 0x3b, 0x263, 0x65, 0x74, 0x6f, 0x256, 0x6f, 0x66, 0x65, 0x20, 0x61, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x67, -0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, -0x3b, 0x263, 0x65, 0x74, 0x6f, 0x256, 0x6f, 0x66, 0x65, 0x20, 0x61, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x67, 0x61, 0x20, 0x43, -0x46, 0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x50, 0x69, 0x73, 0x6f, 0x20, -0x6e, 0x67, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x3b, 0x70, 0x69, 0x73, 0x6f, 0x20, 0x6e, -0x67, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x69, 0x73, 0x6f, 0x20, -0x6e, 0x67, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, -0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x3b, 0x3b, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, -0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, -0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x75, -0x72, 0x6f, 0x3b, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x6e, -0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, -0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, -0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, -0x6f, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x72, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, -0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x72, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, -0x72, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x72, 0x75, 0x6f, -0x167, 0x167, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, -0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x62, 0x75, 0x75, -0x257, 0x75, 0x20, 0x53, 0x65, 0x65, 0x66, 0x61, 0x61, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x4d, 0x62, 0x75, 0x75, 0x257, 0x69, 0x20, 0x53, 0x65, 0x65, 0x66, 0x61, 0x61, 0x20, 0x42, 0x45, 0x41, 0x43, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x61, 0x6c, 0x61, 0x73, 0x69, 0x20, 0x47, 0x61, 0x6d, 0x6d, 0x62, 0x69, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x61, 0x72, 0x20, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, -0x79, 0x61, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x67, 0x69, 0x79, 0x79, 0x61, 0x20, 0x4d, 0x75, 0x72, -0x69, 0x74, 0x61, 0x6e, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61, 0x79, 0x72, 0x61, 0x61, 0x20, 0x4e, -0x69, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4c, 0x65, 0x77, 0x6f, 0x6f, -0x6e, 0x20, 0x53, 0x65, 0x72, 0x61, 0x61, 0x20, 0x4c, 0x69, 0x79, 0x6f, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x43, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x4e, 0x6a, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x65, 0x65, 0x6c, 0x20, 0x4b, 0x65, 0x6e, 0x79, -0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x64, 0x65, 0x20, 0x4d, -0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x71, 0x75, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x6f, 0x6c, 0x61, -0x20, 0x79, 0x61, 0x73, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x6c, 0x69, 0x6b, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x68, 0x65, 0x6c, 0x65, 0x72, 0x69, 0x20, 0x73, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x2d30, 0x2d37, 0x2d54, 0x2d49, 0x2d4e, 0x20, 0x2d4f, 0x20, 0x2d4d, 0x2d4e, 0x2d56, 0x2d54, 0x2d49, 0x2d31, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x61, 0x64, 0x72, 0x69, 0x6d, 0x20, 0x6e, 0x20, 0x6c, 0x6d, 0x263, 0x72, 0x69, 0x62, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x41, 0x7a, 0x7a, 0x61, 0x79, 0x72, -0x69, 0x3b, 0x3b, 0x41, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x6e, 0x20, 0x5a, 0x7a, 0x61, 0x79, 0x65, 0x72, 0x3b, 0x3b, -0x3b, 0x3b, 0x49, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x65, 0x6e, 0x20, 0x6e, 0x20, 0x5a, 0x7a, 0x61, 0x79, 0x65, 0x72, 0x3b, -0x45, 0x73, 0x68, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x48, 0x75, -0x74, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, -0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x73, 0x65, 0x66, 0x61, 0x20, 0x46, 0x72, 0x61, 0x14b, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x53, 0x20, 0x13a0, 0x13d5, 0x13b3, 0x3b, 0x3b, 0x55, 0x53, 0x20, 0x13a0, 0x13d5, 0x13b3, -0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x53, 0x20, 0x13a0, 0x13d5, 0x13b3, 0x3b, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x20, 0x6d, 0x6f, 0x72, -0x69, 0x73, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0xed, 0x69, 0x6e, 0x67, -0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0xed, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x65, 0x79, 0x61, 0x20, 0x59, 0x75, 0x67, 0x61, 0x6e, 0x64, 0x61, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6b, 0x75, 0x64, 0x75, 0x20, 0x4b, 0x61, 0x62, 0x75, 0x76, 0x65, 0x72, -0x64, 0x69, 0x61, 0x6e, 0x75, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6b, 0x75, 0x64, 0x75, 0x20, 0x4b, 0x61, 0x62, -0x75, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x75, 0x3b, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x74, 0x61, 0x62, -0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61, 0x6d, 0x69, -0x62, 0x69, 0x61, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x75, -0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x72, 0x6f, 0x70, 0x69, 0x79, 0x69, 0x61, 0x6e, 0xed, 0x20, -0x65, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x72, 0x6f, 0x70, 0x69, 0x79, -0x69, 0x61, 0x6e, 0xed, 0x20, 0x65, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x53, 0x69, 0x72, 0x69, 0x6e, 0x6a, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, -0x64, 0x68, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x6e, 0x67, 0x6f, 0x2019, 0x6f, 0x74, -0x6f, 0x6c, 0x20, 0x6c, 0x6f, 0x6b, 0x2019, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x41, 0x6e, 0x67, 0x6f, 0x2019, 0x6f, 0x74, 0x6f, 0x6c, 0x20, 0x6c, 0x6f, 0x6b, 0x2019, 0x20, 0x4b, 0x65, 0x6e, 0x79, -0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x46, 0x41, 0x20, 0x46, 0x72, 0x61, 0x14b, 0x20, 0x28, 0x42, 0x43, -0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x61, -0x72, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x65, 0x72, 0x68, 0x65, 0x6d, -0x20, 0x55, 0x6d, 0x65, 0x1e5b, 0x1e5b, 0x75, 0x6b, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, -0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x930, 0x93e, 0x902, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x43d, -0x20, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x3b, -0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x43d, 0x20, 0x441, 0x43e, 0x44c, 0x43c, 0x430, 0x448, 0x3b, 0x440, 0x461, 0x441, 0x441, -0x456, 0x301, 0x439, 0x441, 0x43a, 0x457, 0x439, 0x20, 0x440, 0xa64b, 0x301, 0x431, 0x43b, 0x44c, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x440, 0x461, 0x441, 0x441, 0x456, 0x301, 0x439, 0x441, 0x43a, 0x430, 0x433, 0x461, 0x20, 0x440, 0xa64b, 0x431, 0x43b, 0x467, 0x300, 0x3b, -0x4e, 0x66, 0x61, 0x6c, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x75, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x46, 0x41, 0x20, 0x46, 0xe0, 0x6c, 0xe2, 0x14b, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x1ce, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, -0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x65, 0x65, 0x66, 0x61, 0x20, 0x79, 0x61, 0x74, 0x69, 0x20, 0x42, 0x43, -0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x259, 0x6c, 0xe1, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x20, -0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0xe1, 0x14b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x6f, 0x6c, 0x61, 0x69, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x46, 0x72, 0x61, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x410, 0x440, 0x430, 0x441, 0x441, 0x44b, 0x44b, 0x439, 0x430, 0x20, 0x441, 0x43e, 0x43b, 0x43a, 0x443, 0x43e, 0x431, 0x430, 0x439, -0x430, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x410, 0x440, 0x430, 0x441, 0x441, 0x44b, 0x44b, 0x439, 0x430, 0x20, 0x441, 0x43e, 0x43b, -0x43a, 0x443, 0x43e, 0x431, 0x430, 0x439, 0x430, 0x3b, 0x49, 0x68, 0x65, 0x6c, 0x61, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, -0x73, 0x61, 0x6e, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xa55e, 0xa524, 0xa52b, 0xa569, 0x20, 0xa55c, 0xa55e, -0xa54c, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4c, 0x61, 0x69, 0x62, 0x68, 0x69, 0x79, 0x61, 0x20, 0x44, 0x61, 0x6c, -0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x25b, 0x6c, 0xe2, 0x14b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, -0x46, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x72, -0xe8, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x65, 0x6c, 0xe1, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x987, 0x9a8, 0x9cd, 0x9a6, 0x9bf, 0x9af, 0x9bc, 0x9be, 0x9a8, 0x20, 0x9b0, 0x9c1, 0x9aa, 0x9bf, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x3b, 0x987, 0x9a8, 0x9cd, 0x9a6, 0x9bf, 0x9af, 0x9bc, 0x9be, 0x9a8, 0x20, 0x9b0, 0x9c1, 0x9aa, 0x9bf, 0x3b, 0x1c65, -0x1c64, 0x1c67, 0x1c5a, 0x1c5b, 0x20, 0x1c68, 0x1c6e, 0x1c71, 0x1c5f, 0x1c5c, 0x20, 0x1c74, 0x1c5f, 0x1c60, 0x1c5f, 0x3b, 0x3b, 0x1c65, 0x1c64, 0x1c67, -0x1c5a, 0x1c5b, 0x20, 0x1c68, 0x1c6e, 0x1c71, 0x1c5f, 0x1c5c, 0x20, 0x1c74, 0x1c5f, 0x1c60, 0x1c5f, 0x3b, 0x1c65, 0x1c64, 0x1c67, 0x1c5a, 0x1c5b, 0x20, -0x1c68, 0x1c6e, 0x1c71, 0x1c5f, 0x1c5c, 0x20, 0x1c74, 0x1c5f, 0x1c60, 0x1c5f, 0x3b, 0x3b, 0x3b, 0x1c65, 0x1c64, 0x1c67, 0x1c5a, 0x1c5b, 0x20, 0x1c68, -0x1c6e, 0x1c71, 0x1c5f, 0x1c5c, 0x20, 0x1c74, 0x1c5f, 0x1c60, 0x1c5f, 0x3b, 0x62f, 0x6cc, 0x646, 0x627, 0x631, 0x6cc, 0x20, 0x639, 0x6ce, 0x631, -0x627, 0x642, 0x6cc, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x695, 0x6cc, 0x627, 0x6b5, 0x6cc, 0x20, 0x626, 0x6ce, 0x631, 0x627, -0x646, 0x6cc, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, -0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, -0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x6a, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x3b, 0x3b, 0x65, -0x75, 0x72, 0x6f, 0x77, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, -0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, -0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x20, 0x631, 0x6cc, 0x627, 0x644, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x3b, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x20, 0x631, 0x6cc, 0x627, 0x644, 0x3b, 0x6e2f, 0x5e63, 0x3b, 0x3b, 0x3b, 0x3b, -0x3b, 0x3b, 0x6e2f, 0x5e63, 0x3b, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x20, 0x50, 0x69, 0x73, 0x6f, -0x3b, 0x3b, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x20, 0x70, 0x69, 0x73, 0x6f, 0x3b, 0x3b, 0x3b, -0x3b, 0x4d, 0x67, 0x61, 0x20, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x20, 0x70, 0x69, 0x73, 0x6f, -0x3b, 0x4e, 0x61, 0x69, 0x6a, 0xed, 0x72, 0x69, 0xe1, 0x20, 0x4e, 0x61, 0xed, 0x72, 0x61, 0x3b, 0x3b, 0x4e, 0x61, 0x69, -0x6a, 0xed, 0x72, 0x69, 0xe1, 0x20, 0x6e, 0x61, 0xed, 0x72, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61, 0x69, 0x6a, 0xed, -0x72, 0x69, 0xe1, 0x20, 0x6e, 0x61, 0xed, 0x72, 0x61, 0x73, 0x3b +0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x435, 0x20, 0x43a, 0x43e, 0x43d, +0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x435, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x435, 0x3b, 0x3b, 0x431, 0x43e, +0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x2d, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x438, 0x445, +0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x438, 0x445, 0x20, 0x43c, 0x430, 0x440, 0x430, +0x43a, 0x430, 0x3b, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x53, 0x69, 0x64, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, +0x61, 0x1ecb, 0x72, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, +0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x67, 0x68, 0x61, 0x6e, 0x61, 0x20, +0x73, 0x69, 0x256, 0x69, 0x3b, 0x3b, 0x67, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x73, 0x69, 0x256, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, +0x67, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x73, 0x69, 0x256, 0x69, 0x3b, 0x263, 0x65, 0x74, 0x6f, 0x256, 0x6f, 0x66, 0x65, 0x20, +0x61, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x42, +0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x263, 0x65, 0x74, 0x6f, 0x256, 0x6f, 0x66, 0x65, 0x20, 0x61, 0x66, 0x72, 0x69, 0x6b, +0x61, 0x67, 0x61, 0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, +0x3b, 0x3b, 0x3b, 0x263, 0x65, 0x74, 0x6f, 0x256, 0x6f, 0x66, 0x65, 0x20, 0x61, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x67, 0x61, +0x20, 0x43, 0x46, 0x41, 0x20, 0x66, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x50, 0x69, 0x73, +0x6f, 0x20, 0x6e, 0x67, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x3b, 0x70, 0x69, 0x73, 0x6f, +0x20, 0x6e, 0x67, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x3b, 0x3b, 0x3b, 0x70, 0x69, 0x73, +0x6f, 0x20, 0x6e, 0x67, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x3b, 0x53, 0x63, 0x68, 0x77, 0x69, +0x69, 0x7a, 0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x3b, 0x3b, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, +0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, +0x65, 0x72, 0x20, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x65, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x45, 0x75, 0x72, 0x6f, 0x3b, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, +0x3b, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x6e, 0x6f, 0x72, 0x67, +0x67, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x6e, 0x6f, 0x72, 0x67, 0x67, 0x61, 0x20, +0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, +0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x72, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b, 0x72, +0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x72, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, +0x6f, 0x3b, 0x72, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x3b, 0x3b, 0x72, +0x75, 0x6f, 0x167, 0x167, 0x61, 0x20, 0x6b, 0x72, 0x75, 0x76, 0x64, 0x6e, 0x6f, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, +0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x62, +0x75, 0x75, 0x257, 0x75, 0x20, 0x53, 0x65, 0x65, 0x66, 0x61, 0x61, 0x20, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x62, 0x75, 0x75, 0x257, 0x69, 0x20, 0x53, 0x65, 0x65, 0x66, 0x61, 0x61, 0x20, 0x42, 0x45, +0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x61, 0x6c, 0x61, 0x73, 0x69, 0x20, 0x47, 0x61, 0x6d, 0x6d, +0x62, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x6f, 0x6c, 0x61, 0x61, 0x72, 0x20, 0x4c, 0x69, 0x62, 0x65, +0x72, 0x69, 0x79, 0x61, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x67, 0x69, 0x79, 0x79, 0x61, 0x20, 0x4d, +0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61, 0x79, 0x72, 0x61, 0x61, +0x20, 0x4e, 0x69, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4c, 0x65, 0x77, +0x6f, 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72, 0x61, 0x61, 0x20, 0x4c, 0x69, 0x79, 0x6f, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x43, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x6a, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x65, 0x65, 0x6c, 0x20, 0x4b, 0x65, +0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x64, 0x65, +0x20, 0x4d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x71, 0x75, 0x65, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x44, 0x6f, +0x6c, 0x61, 0x20, 0x79, 0x61, 0x73, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x6c, 0x69, 0x6b, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x68, 0x65, 0x6c, 0x65, 0x72, 0x69, 0x20, 0x73, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x2d30, 0x2d37, 0x2d54, 0x2d49, 0x2d4e, 0x20, 0x2d4f, 0x20, 0x2d4d, 0x2d4e, 0x2d56, 0x2d54, 0x2d49, +0x2d31, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x61, 0x64, 0x72, 0x69, 0x6d, 0x20, 0x6e, 0x20, 0x6c, 0x6d, 0x263, 0x72, +0x69, 0x62, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x41, 0x7a, 0x7a, 0x61, +0x79, 0x72, 0x69, 0x3b, 0x3b, 0x41, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x20, 0x6e, 0x20, 0x4c, 0x65, 0x7a, 0x7a, 0x61, 0x79, +0x65, 0x72, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x65, 0x6e, 0x20, 0x6e, 0x20, 0x4c, 0x65, 0x7a, +0x7a, 0x61, 0x79, 0x65, 0x72, 0x3b, 0x45, 0x73, 0x68, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x55, +0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, +0x20, 0x79, 0x61, 0x20, 0x48, 0x75, 0x74, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x53, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, +0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x65, 0x66, 0x61, 0x20, 0x46, 0x72, 0x61, 0x14b, 0x20, 0x28, 0x42, +0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x53, 0x20, 0x13a0, 0x13d5, 0x13b3, 0x3b, 0x3b, +0x55, 0x53, 0x20, 0x13a0, 0x13d5, 0x13b3, 0x3b, 0x3b, 0x3b, 0x3b, 0x55, 0x53, 0x20, 0x13a0, 0x13d5, 0x13b3, 0x3b, 0x72, 0x6f, 0x75, +0x70, 0x69, 0x20, 0x6d, 0x6f, 0x72, 0x69, 0x73, 0x69, 0x65, 0x6e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x68, +0x69, 0x6c, 0xed, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0xed, 0x61, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x65, 0x79, 0x61, 0x20, 0x59, +0x75, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6b, 0x75, 0x64, 0x75, 0x20, 0x4b, +0x61, 0x62, 0x75, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x75, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x6b, 0x75, +0x64, 0x75, 0x20, 0x4b, 0x61, 0x62, 0x75, 0x76, 0x65, 0x72, 0x64, 0x69, 0x61, 0x6e, 0x75, 0x3b, 0x53, 0x69, 0x6c, 0x69, +0x6e, 0x67, 0x69, 0x74, 0x61, 0x62, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, 0x20, 0x44, 0x6f, 0x6c, 0x6c, 0x61, 0x72, 0x69, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x45, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x49, 0x72, 0x6f, 0x70, 0x69, +0x79, 0x69, 0x61, 0x6e, 0xed, 0x20, 0x65, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x49, 0x72, 0x6f, 0x70, 0x69, 0x79, 0x69, 0x61, 0x6e, 0xed, 0x20, 0x65, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, +0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x72, 0x69, 0x6e, 0x6a, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, +0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, +0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x64, 0x68, 0x61, 0x6e, 0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, +0x6e, 0x67, 0x6f, 0x2019, 0x6f, 0x74, 0x6f, 0x6c, 0x20, 0x6c, 0x6f, 0x6b, 0x2019, 0x20, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x41, 0x6e, 0x67, 0x6f, 0x2019, 0x6f, 0x74, 0x6f, 0x6c, 0x20, 0x6c, 0x6f, 0x6b, +0x2019, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x46, 0x41, 0x20, 0x46, 0x72, +0x61, 0x14b, 0x20, 0x28, 0x42, 0x43, 0x45, 0x41, 0x4f, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x53, 0x69, 0x6c, +0x69, 0x6e, 0x67, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x44, 0x65, 0x72, 0x68, 0x65, 0x6d, 0x20, 0x55, 0x6d, 0x65, 0x1e5b, 0x1e5b, 0x75, 0x6b, 0x69, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x73, 0x68, 0x69, 0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, +0x69, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x930, 0x93e, 0x902, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x420, +0x43e, 0x441, 0x441, 0x438, 0x439, 0x43d, 0x20, 0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x43d, 0x20, +0x441, 0x43e, 0x43c, 0x3b, 0x3b, 0x3b, 0x3b, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x439, 0x43d, 0x20, 0x441, 0x43e, 0x44c, 0x43c, 0x430, +0x448, 0x3b, 0x4e, 0x66, 0x61, 0x6c, 0x61, 0x6e, 0x67, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x75, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x43, 0x46, 0x41, 0x20, 0x46, 0xe0, 0x6c, 0xe2, 0x14b, 0x20, 0x42, 0x45, 0x41, 0x43, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x1ce, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x20, 0x28, 0x42, 0x45, 0x41, +0x43, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x65, 0x65, 0x66, 0x61, 0x20, 0x79, 0x61, 0x74, 0x69, 0x20, +0x42, 0x43, 0x45, 0x41, 0x4f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x259, 0x6c, 0xe1, 0x14b, 0x20, 0x43, 0x46, +0x41, 0x20, 0x28, 0x42, 0x45, 0x41, 0x43, 0x29, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x72, 0xe1, 0x14b, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x6f, 0x6c, 0x61, 0x69, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x46, 0x72, 0x61, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x20, 0x42, 0x45, 0x41, 0x43, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x410, 0x440, 0x430, 0x441, 0x441, 0x44b, 0x44b, 0x439, 0x430, 0x20, 0x441, 0x43e, 0x43b, 0x43a, 0x443, 0x43e, 0x431, +0x430, 0x439, 0x430, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x410, 0x440, 0x430, 0x441, 0x441, 0x44b, 0x44b, 0x439, 0x430, 0x20, 0x441, +0x43e, 0x43b, 0x43a, 0x443, 0x43e, 0x431, 0x430, 0x439, 0x430, 0x3b, 0x49, 0x68, 0x65, 0x6c, 0x61, 0x20, 0x79, 0x61, 0x20, 0x54, +0x61, 0x6e, 0x73, 0x61, 0x6e, 0x69, 0x79, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0xa55e, 0xa524, 0xa52b, 0xa569, 0x20, +0xa55c, 0xa55e, 0xa54c, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x4c, 0x61, 0x69, 0x62, 0x68, 0x69, 0x79, 0x61, 0x20, 0x44, +0x61, 0x6c, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x46, 0x25b, 0x6c, 0xe2, 0x14b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x20, 0x43, 0x46, 0x41, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x73, 0x68, +0x69, 0x72, 0xe8, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x66, 0x65, 0x6c, 0xe1, 0x14b, 0x20, 0x43, 0x46, 0x41, 0x3b, +0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x20, 0x930, 0x92a, 0x947, 0x93d, 0x3b, 0x3b, 0x92d, 0x93e, +0x930, 0x924, 0x940, 0x20, 0x930, 0x92a, 0x947, 0x93d, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x20, 0x930, 0x92a, +0x947, 0x93d, 0x3b, 0x987, 0x9a8, 0x9cd, 0x9a6, 0x9bf, 0x9af, 0x9bc, 0x9be, 0x9a8, 0x20, 0x9b0, 0x9c1, 0x9aa, 0x9bf, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x3b, 0x987, 0x9a8, 0x9cd, 0x9a6, 0x9bf, 0x9af, 0x9bc, 0x9be, 0x9a8, 0x20, 0x9b0, 0x9c1, 0x9aa, 0x9bf, 0x3b, 0x1c65, 0x1c64, +0x1c67, 0x1c5a, 0x1c5b, 0x20, 0x1c68, 0x1c6e, 0x1c71, 0x1c5f, 0x1c5c, 0x20, 0x1c74, 0x1c5f, 0x1c60, 0x1c5f, 0x3b, 0x3b, 0x1c65, 0x1c64, 0x1c67, 0x1c5a, +0x1c5b, 0x20, 0x1c68, 0x1c6e, 0x1c71, 0x1c5f, 0x1c5c, 0x20, 0x1c74, 0x1c5f, 0x1c60, 0x1c5f, 0x3b, 0x1c65, 0x1c64, 0x1c67, 0x1c5a, 0x1c5b, 0x20, 0x1c68, +0x1c6e, 0x1c71, 0x1c5f, 0x1c5c, 0x20, 0x1c74, 0x1c5f, 0x1c60, 0x1c5f, 0x3b, 0x3b, 0x3b, 0x1c65, 0x1c64, 0x1c67, 0x1c5a, 0x1c5b, 0x20, 0x1c68, 0x1c6e, +0x1c71, 0x1c5f, 0x1c5c, 0x20, 0x1c74, 0x1c5f, 0x1c60, 0x1c5f, 0x3b, 0x62f, 0x6cc, 0x646, 0x627, 0x631, 0x6cc, 0x20, 0x639, 0x6ce, 0x631, 0x627, +0x642, 0x6cc, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x695, 0x6cc, 0x627, 0x6b5, 0x6cc, 0x20, 0x626, 0x6ce, 0x631, 0x627, 0x646, +0x6cc, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, +0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, +0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x6a, 0x3b, 0x65, 0x75, 0x72, 0x61, 0x3b, 0x3b, 0x65, 0x75, +0x72, 0x6f, 0x77, 0x3b, 0x65, 0x75, 0x72, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, +0x92f, 0x20, 0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20, +0x930, 0x941, 0x92a, 0x92f, 0x93e, 0x3b, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x20, 0x631, 0x6cc, 0x627, 0x644, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x3b, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x20, 0x631, 0x6cc, 0x627, 0x644, 0x3b, 0x6e2f, 0x5e63, 0x3b, 0x3b, 0x3b, 0x3b, 0x3b, +0x3b, 0x6e2f, 0x5e63, 0x3b, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x20, 0x50, 0x69, 0x73, 0x6f, 0x3b, +0x3b, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x20, 0x70, 0x69, 0x73, 0x6f, 0x3b, 0x3b, 0x3b, 0x3b, +0x4d, 0x67, 0x61, 0x20, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x20, 0x70, 0x69, 0x73, 0x6f, 0x3b, +0x4e, 0x61, 0x69, 0x6a, 0xed, 0x72, 0x69, 0xe1, 0x20, 0x4e, 0x61, 0xed, 0x72, 0x61, 0x3b, 0x3b, 0x4e, 0x61, 0x69, 0x6a, +0xed, 0x72, 0x69, 0xe1, 0x20, 0x6e, 0x61, 0xed, 0x72, 0x61, 0x3b, 0x3b, 0x3b, 0x3b, 0x4e, 0x61, 0x69, 0x6a, 0xed, 0x72, +0x69, 0xe1, 0x20, 0x6e, 0x61, 0xed, 0x72, 0x61, 0x73, 0x3b }; static const ushort currency_format_data[] = { @@ -4348,236 +4339,234 @@ 0x6c, 0x61, 0x75, 0x50, 0x61, 0x70, 0x75, 0x61, 0x20, 0x4e, 0x65, 0x77, 0x20, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, 0x50, 0x68, 0x69, 0x6c, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x65, 0x73, 0x50, 0x69, 0x74, 0x63, 0x61, 0x69, 0x72, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x50, 0x75, 0x65, 0x72, 0x74, 0x6f, 0x20, 0x52, 0x69, 0x63, 0x6f, 0x52, 0x77, 0x61, -0x6e, 0x64, 0x61, 0x53, 0x74, 0x20, 0x4b, 0x69, 0x74, 0x74, 0x73, 0x20, 0x26, 0x20, 0x4e, 0x65, 0x76, 0x69, 0x73, 0x53, -0x74, 0x20, 0x4c, 0x75, 0x63, 0x69, 0x61, 0x53, 0x74, 0x20, 0x56, 0x69, 0x6e, 0x63, 0x65, 0x6e, 0x74, 0x20, 0x26, 0x20, -0x47, 0x72, 0x65, 0x6e, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x53, 0x65, 0x79, 0x63, 0x68, -0x65, 0x6c, 0x6c, 0x65, 0x73, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x20, 0x4c, 0x65, 0x6f, 0x6e, 0x65, 0x53, 0x69, 0x6e, -0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x69, 0x61, 0x53, 0x6f, 0x6c, 0x6f, 0x6d, 0x6f, -0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, -0x61, 0x53, 0x74, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x45, 0x73, 0x77, 0x61, 0x74, -0x69, 0x6e, 0x69, 0x53, 0x77, 0x65, 0x64, 0x65, 0x6e, 0x53, 0x77, 0x69, 0x74, 0x7a, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x64, -0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x54, 0x6f, 0x6b, 0x65, 0x6c, 0x61, 0x75, 0x54, 0x6f, 0x6e, 0x67, 0x61, -0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, 0x61, 0x67, 0x6f, 0x54, 0x75, 0x72, -0x6b, 0x73, 0x20, 0x26, 0x20, 0x43, 0x61, 0x69, 0x63, 0x6f, 0x73, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x54, -0x75, 0x76, 0x61, 0x6c, 0x75, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x41, 0x72, -0x61, 0x62, 0x20, 0x45, 0x6d, 0x69, 0x72, 0x61, 0x74, 0x65, 0x73, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x45, -0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x4b, 0x69, 0x6e, 0x67, 0x64, 0x6f, 0x6d, -0x55, 0x2e, 0x53, 0x2e, 0x20, 0x4f, 0x75, 0x74, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, -0x73, 0x56, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x56, 0x69, 0x72, 0x67, -0x69, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x55, 0x2e, 0x53, 0x2e, 0x20, 0x56, 0x69, 0x72, 0x67, 0x69, -0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x5a, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x5a, 0x69, 0x6d, 0x62, 0x61, -0x62, 0x77, 0x65, 0x44, 0x69, 0x65, 0x67, 0x6f, 0x20, 0x47, 0x61, 0x72, 0x63, 0x69, 0x61, 0x49, 0x73, 0x6c, 0x65, 0x20, -0x6f, 0x66, 0x20, 0x4d, 0x61, 0x6e, 0x4a, 0x65, 0x72, 0x73, 0x65, 0x79, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x53, 0x75, -0x64, 0x61, 0x6e, 0x53, 0x69, 0x6e, 0x74, 0x20, 0x4d, 0x61, 0x61, 0x72, 0x74, 0x65, 0x6e, 0x57, 0x6f, 0x72, 0x6c, 0x64, -0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x65, 0x73, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x74, 0x6f, 0x4d, 0x6f, 0x6e, 0x64, 0x6f, -0x65, 0x65, 0x73, 0x74, 0x69, 0x45, 0x65, 0x73, 0x74, 0x69, 0x66, 0xf8, 0x72, 0x6f, 0x79, 0x73, 0x6b, 0x74, 0x46, 0xf8, -0x72, 0x6f, 0x79, 0x61, 0x72, 0x73, 0x75, 0x6f, 0x6d, 0x69, 0x53, 0x75, 0x6f, 0x6d, 0x69, 0x66, 0x72, 0x61, 0x6e, 0xe7, -0x61, 0x69, 0x73, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x6c, 0x67, 0xe9, 0x72, 0x69, 0x65, 0x42, 0x65, 0x6c, 0x67, -0x69, 0x71, 0x75, 0x65, 0x42, 0xe9, 0x6e, 0x69, 0x6e, 0x42, 0x75, 0x72, 0x6b, 0x69, 0x6e, 0x61, 0x20, 0x46, 0x61, 0x73, -0x6f, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x6f, 0x75, 0x6e, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x20, 0x63, 0x61, -0x6e, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x52, 0xe9, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x71, 0x75, 0x65, 0x20, 0x63, 0x65, 0x6e, -0x74, 0x72, 0x61, 0x66, 0x72, 0x69, 0x63, 0x61, 0x69, 0x6e, 0x65, 0x54, 0x63, 0x68, 0x61, 0x64, 0x43, 0x6f, 0x6d, 0x6f, -0x72, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x67, 0x6f, 0x2d, 0x4b, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x73, 0x61, 0x43, 0x6f, 0x6e, -0x67, 0x6f, 0x2d, 0x42, 0x72, 0x61, 0x7a, 0x7a, 0x61, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x43, 0xf4, 0x74, 0x65, 0x20, 0x64, -0x2019, 0x49, 0x76, 0x6f, 0x69, 0x72, 0x65, 0x44, 0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74, 0x69, 0x47, 0x75, 0x69, 0x6e, 0xe9, -0x65, 0x20, 0xe9, 0x71, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x65, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x65, 0x20, -0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x79, 0x6e, 0xe9, 0x73, 0x69, 0x65, 0x20, 0x66, -0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x65, 0x47, 0x61, 0x62, 0x6f, 0x6e, 0x47, 0x75, 0x61, 0x64, 0x65, 0x6c, 0x6f, -0x75, 0x70, 0x65, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x65, 0x48, 0x61, 0xef, 0x74, 0x69, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62, -0x6f, 0x75, 0x72, 0x67, 0x4d, 0x61, 0x6c, 0x69, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x4d, 0x61, -0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x65, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x63, 0x65, 0x4d, 0x61, 0x79, 0x6f, 0x74, -0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x61, 0x63, 0x6f, 0x4d, 0x61, 0x72, 0x6f, 0x63, 0x4e, 0x6f, 0x75, 0x76, 0x65, 0x6c, 0x6c, -0x65, 0x2d, 0x43, 0x61, 0x6c, 0xe9, 0x64, 0x6f, 0x6e, 0x69, 0x65, 0x4e, 0x69, 0x67, 0x65, 0x72, 0x4c, 0x61, 0x20, 0x52, -0xe9, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x53, 0xe9, 0x6e, 0xe9, 0x67, 0x61, 0x6c, 0x53, 0x61, 0x69, 0x6e, 0x74, 0x2d, 0x50, -0x69, 0x65, 0x72, 0x72, 0x65, 0x2d, 0x65, 0x74, 0x2d, 0x4d, 0x69, 0x71, 0x75, 0x65, 0x6c, 0x6f, 0x6e, 0x66, 0x72, 0x61, -0x6e, 0xe7, 0x61, 0x69, 0x73, 0x20, 0x73, 0x75, 0x69, 0x73, 0x73, 0x65, 0x53, 0x75, 0x69, 0x73, 0x73, 0x65, 0x53, 0x79, -0x72, 0x69, 0x65, 0x54, 0x6f, 0x67, 0x6f, 0x54, 0x75, 0x6e, 0x69, 0x73, 0x69, 0x65, 0x57, 0x61, 0x6c, 0x6c, 0x69, 0x73, -0x2d, 0x65, 0x74, 0x2d, 0x46, 0x75, 0x74, 0x75, 0x6e, 0x61, 0x53, 0x61, 0x69, 0x6e, 0x74, 0x2d, 0x42, 0x61, 0x72, 0x74, -0x68, 0xe9, 0x6c, 0x65, 0x6d, 0x79, 0x53, 0x61, 0x69, 0x6e, 0x74, 0x2d, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x46, 0x72, -0x79, 0x73, 0x6b, 0x4e, 0x65, 0x64, 0x65, 0x72, 0x6c, 0xe2, 0x6e, 0x47, 0xe0, 0x69, 0x64, 0x68, 0x6c, 0x69, 0x67, 0x41, -0x6e, 0x20, 0x52, 0xec, 0x6f, 0x67, 0x68, 0x61, 0x63, 0x68, 0x64, 0x20, 0x41, 0x6f, 0x6e, 0x61, 0x69, 0x63, 0x68, 0x74, -0x65, 0x67, 0x61, 0x6c, 0x65, 0x67, 0x6f, 0x45, 0x73, 0x70, 0x61, 0xf1, 0x61, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10e3, 0x10da, 0x10d8, -0x10e1, 0x10d0, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10d5, 0x10d4, 0x10da, 0x10dd, 0x44, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0x44, 0x65, 0x75, -0x74, 0x73, 0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0xd6, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x69, 0x63, 0x68, 0x69, 0x73, -0x63, 0x68, 0x65, 0x73, 0x20, 0x44, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0xd6, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x69, -0x63, 0x68, 0x42, 0x65, 0x6c, 0x67, 0x69, 0x65, 0x6e, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x65, 0x6e, 0x4c, 0x69, 0x65, 0x63, -0x68, 0x74, 0x65, 0x6e, 0x73, 0x74, 0x65, 0x69, 0x6e, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62, 0x75, 0x72, 0x67, 0x53, 0x63, -0x68, 0x77, 0x65, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x48, 0x6f, 0x63, 0x68, 0x64, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0x53, -0x63, 0x68, 0x77, 0x65, 0x69, 0x7a, 0x395, 0x3bb, 0x3bb, 0x3b7, 0x3bd, 0x3b9, 0x3ba, 0x3ac, 0x395, 0x3bb, 0x3bb, 0x3ac, 0x3b4, 0x3b1, -0x39a, 0x3cd, 0x3c0, 0x3c1, 0x3bf, 0x3c2, 0x6b, 0x61, 0x6c, 0x61, 0x61, 0x6c, 0x6c, 0x69, 0x73, 0x75, 0x74, 0x4b, 0x61, 0x6c, -0x61, 0x61, 0x6c, 0x6c, 0x69, 0x74, 0x20, 0x4e, 0x75, 0x6e, 0x61, 0x61, 0x74, 0xa97, 0xac1, 0xa9c, 0xab0, 0xabe, 0xaa4, 0xac0, -0xaad, 0xabe, 0xab0, 0xaa4, 0x48, 0x61, 0x75, 0x73, 0x61, 0x4e, 0x61, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, 0x47, 0x61, 0x6e, -0x61, 0x4e, 0x69, 0x6a, 0x61, 0x72, 0x5e2, 0x5d1, 0x5e8, 0x5d9, 0x5ea, 0x5d9, 0x5e9, 0x5e8, 0x5d0, 0x5dc, 0x939, 0x93f, 0x928, 0x94d, -0x926, 0x940, 0x92d, 0x93e, 0x930, 0x924, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x4d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x6f, 0x72, -0x73, 0x7a, 0xe1, 0x67, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0xcd, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x49, 0x6e, -0x64, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x67, 0x75, 0x61, 0x4d, 0x75, -0x6e, 0x64, 0x6f, 0x47, 0x61, 0x65, 0x69, 0x6c, 0x67, 0x65, 0xc9, 0x69, 0x72, 0x65, 0x61, 0x6e, 0x20, 0x52, 0xed, 0x6f, -0x63, 0x68, 0x74, 0x20, 0x41, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x74, 0x68, 0x65, 0x69, 0x74, 0x61, 0x6c, 0x69, 0x61, 0x6e, -0x6f, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x61, 0x53, 0x61, 0x6e, 0x20, 0x4d, 0x61, 0x72, 0x69, 0x6e, 0x6f, 0x53, 0x76, 0x69, -0x7a, 0x7a, 0x65, 0x72, 0x61, 0x43, 0x69, 0x74, 0x74, 0xe0, 0x20, 0x64, 0x65, 0x6c, 0x20, 0x56, 0x61, 0x74, 0x69, 0x63, -0x61, 0x6e, 0x6f, 0x65e5, 0x672c, 0x8a9e, 0x65e5, 0x672c, 0x4a, 0x61, 0x77, 0x61, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0xe9, 0x73, 0x69, -0x61, 0xc95, 0xca8, 0xccd, 0xca8, 0xca1, 0xcad, 0xcbe, 0xcb0, 0xca4, 0x6a9, 0x672, 0x634, 0x64f, 0x631, 0x6c1, 0x650, 0x646, 0x62f, 0x648, -0x633, 0x62a, 0x627, 0x646, 0x49b, 0x430, 0x437, 0x430, 0x49b, 0x20, 0x442, 0x456, 0x43b, 0x456, 0x49a, 0x430, 0x437, 0x430, 0x49b, 0x441, -0x442, 0x430, 0x43d, 0x4b, 0x69, 0x6e, 0x79, 0x61, 0x72, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x55, 0x20, 0x52, 0x77, 0x61, 0x6e, -0x64, 0x61, 0x43a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x447, 0x430, 0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x441, 0x442, 0x430, 0x43d, -0xd55c, 0xad6d, 0xc5b4, 0xb300, 0xd55c, 0xbbfc, 0xad6d, 0xc870, 0xc120, 0xbbfc, 0xc8fc, 0xc8fc, 0xc758, 0xc778, 0xbbfc, 0xacf5, 0xd654, 0xad6d, 0x6b, 0x75, -0x72, 0x64, 0xee, 0x54, 0x69, 0x72, 0x6b, 0x69, 0x79, 0x65, 0x49, 0x6b, 0x69, 0x72, 0x75, 0x6e, 0x64, 0x69, 0x55, 0x62, -0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0xea5, 0xeb2, 0xea7, 0x6c, 0x61, 0x74, 0x76, 0x69, 0x65, 0x161, 0x75, 0x4c, 0x61, 0x74, -0x76, 0x69, 0x6a, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0xe1, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x75, 0x62, 0x6c, 0xed, 0x6b, 0x69, -0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0xf3, 0x20, 0x44, 0x65, 0x6d, 0x6f, 0x6b, 0x72, 0x61, 0x74, 0xed, 0x6b, -0x69, 0x41, 0x6e, 0x67, 0xf3, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x69, 0x62, 0x69, 0x6b, 0x69, 0x20, 0x79, 0x61, 0x20, 0x41, -0x66, 0x72, 0xed, 0x6b, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0xe1, 0x74, 0x69, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x69, -0x65, 0x74, 0x75, 0x76, 0x69, 0x173, 0x4c, 0x69, 0x65, 0x74, 0x75, 0x76, 0x61, 0x43c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, -0x441, 0x43a, 0x438, 0x421, 0x435, 0x432, 0x435, 0x440, 0x43d, 0x430, 0x20, 0x41c, 0x430, 0x43a, 0x435, 0x434, 0x43e, 0x43d, 0x438, 0x458, -0x430, 0x4d, 0x61, 0x6c, 0x61, 0x67, 0x61, 0x73, 0x79, 0x4d, 0x61, 0x64, 0x61, 0x67, 0x61, 0x73, 0x69, 0x6b, 0x61, 0x72, -0x61, 0x4d, 0x65, 0x6c, 0x61, 0x79, 0x75, 0x42, 0x72, 0x75, 0x6e, 0x65, 0x69, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x75, -0x72, 0x61, 0xd2e, 0xd32, 0xd2f, 0xd3e, 0xd33, 0xd02, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0x4d, 0x61, 0x6c, 0x74, 0x69, 0x4d, -0x101, 0x6f, 0x72, 0x69, 0x41, 0x6f, 0x74, 0x65, 0x61, 0x72, 0x6f, 0x61, 0x92e, 0x930, 0x93e, 0x920, 0x940, 0x43c, 0x43e, 0x43d, -0x433, 0x43e, 0x43b, 0x41c, 0x43e, 0x43d, 0x433, 0x43e, 0x43b, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x928, 0x947, 0x92a, 0x93e, 0x932, -0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x20, 0x62, 0x6f, 0x6b, 0x6d, 0xe5, 0x6c, 0x4e, 0x6f, 0x72, 0x67, 0x65, 0x53, 0x76, 0x61, -0x6c, 0x62, 0x61, 0x72, 0x64, 0x20, 0x6f, 0x67, 0x20, 0x4a, 0x61, 0x6e, 0x20, 0x4d, 0x61, 0x79, 0x65, 0x6e, 0xb13, 0xb21, -0xb3c, 0xb3f, 0xb06, 0xb2d, 0xb3e, 0xb30, 0xb24, 0x67e, 0x69a, 0x62a, 0x648, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x633, 0x62a, 0x627, 0x646, -0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x641, 0x627, 0x631, 0x633, 0x6cc, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x62f, 0x631, 0x6cc, -0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x50, 0x6f, 0x6c, 0x73, 0x6b, 0x61, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea, -0x73, 0x42, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x41, 0x6e, 0x67, 0x6f, 0x6c, 0x61, 0x43, 0x61, 0x62, 0x6f, 0x20, 0x56, 0x65, -0x72, 0x64, 0x65, 0x54, 0x69, 0x6d, 0x6f, 0x72, 0x2d, 0x4c, 0x65, 0x73, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x20, -0x45, 0x71, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x2d, 0x42, 0x69, 0x73, 0x73, -0x61, 0x75, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62, 0x75, 0x72, 0x67, 0x6f, 0x4d, 0x61, 0x63, 0x61, 0x75, 0x2c, 0x20, 0x52, -0x41, 0x45, 0x20, 0x64, 0x61, 0x20, 0x43, 0x68, 0x69, 0x6e, 0x61, 0x4d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x71, 0x75, -0x65, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea, 0x73, 0x20, 0x65, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x75, 0x50, 0x6f, -0x72, 0x74, 0x75, 0x67, 0x61, 0x6c, 0x53, 0xe3, 0x6f, 0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20, 0x65, 0x20, 0x50, 0x72, 0xed, -0x6e, 0x63, 0x69, 0x70, 0x65, 0x53, 0x75, 0xed, 0xe7, 0x61, 0xa2a, 0xa70, 0xa1c, 0xa3e, 0xa2c, 0xa40, 0xa2d, 0xa3e, 0xa30, 0xa24, -0x67e, 0x646, 0x62c, 0x627, 0x628, 0x6cc, 0x52, 0x75, 0x6e, 0x61, 0x73, 0x69, 0x6d, 0x69, 0x50, 0x65, 0x72, 0xfa, 0x42, 0x6f, -0x6c, 0x69, 0x76, 0x69, 0x61, 0x45, 0x63, 0x75, 0x61, 0x64, 0x6f, 0x72, 0x72, 0x75, 0x6d, 0x61, 0x6e, 0x74, 0x73, 0x63, -0x68, 0x53, 0x76, 0x69, 0x7a, 0x72, 0x61, 0x72, 0x6f, 0x6d, 0xe2, 0x6e, 0x103, 0x52, 0x6f, 0x6d, 0xe2, 0x6e, 0x69, 0x61, -0x52, 0x65, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x20, 0x4d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x61, 0x440, 0x443, 0x441, -0x441, 0x43a, 0x438, 0x439, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x44f, 0x41a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x442, 0x430, 0x43d, 0x41a, -0x438, 0x440, 0x433, 0x438, 0x437, 0x438, 0x44f, 0x41c, 0x43e, 0x43b, 0x434, 0x43e, 0x432, 0x430, 0x423, 0x43a, 0x440, 0x430, 0x438, 0x43d, -0x430, 0x53, 0xe4, 0x6e, 0x67, 0xf6, 0x4b, 0xf6, 0x64, 0xf6, 0x72, 0xf6, 0x73, 0xea, 0x73, 0x65, 0x20, 0x74, 0xee, 0x20, -0x42, 0xea, 0x61, 0x66, 0x72, 0xee, 0x6b, 0x61, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x421, 0x440, 0x431, 0x438, 0x458, 0x430, -0x73, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x43, 0x72, 0x6e, 0x61, 0x20, 0x47, 0x6f, 0x72, 0x61, 0x53, 0x72, 0x62, 0x69, 0x6a, -0x61, 0x411, 0x43e, 0x441, 0x43d, 0x430, 0x20, 0x438, 0x20, 0x425, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x438, 0x43d, 0x430, -0x426, 0x440, 0x43d, 0x430, 0x20, 0x413, 0x43e, 0x440, 0x430, 0x41a, 0x43e, 0x441, 0x43e, 0x432, 0x43e, 0x4b, 0x6f, 0x73, 0x6f, 0x76, -0x6f, 0x438, 0x440, 0x43e, 0x43d, 0x413, 0x443, 0x44b, 0x440, 0x434, 0x437, 0x44b, 0x441, 0x442, 0x43e, 0x43d, 0x423, 0x4d5, 0x440, 0x4d5, -0x441, 0x435, 0x63, 0x68, 0x69, 0x53, 0x68, 0x6f, 0x6e, 0x61, 0x633, 0x646, 0x68c, 0x64a, 0x67e, 0x627, 0x6aa, 0x633, 0x62a, 0x627, -0x646, 0x938, 0x93f, 0x928, 0x94d, 0x927, 0x940, 0xdc3, 0xdd2, 0xd82, 0xdc4, 0xdbd, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, -0xd9a, 0xdcf, 0xdc0, 0x73, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x10d, 0x69, 0x6e, 0x61, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x73, -0x6b, 0x6f, 0x73, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x161, 0x10d, 0x69, 0x6e, 0x61, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x69, -0x6a, 0x61, 0x53, 0x6f, 0x6f, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x53, 0x6f, 0x6f, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x79, 0x61, -0x4a, 0x61, 0x62, 0x75, 0x75, 0x74, 0x69, 0x49, 0x74, 0x6f, 0x6f, 0x62, 0x69, 0x79, 0x61, 0x65, 0x73, 0x70, 0x61, 0xf1, -0x6f, 0x6c, 0x20, 0x64, 0x65, 0x20, 0x45, 0x73, 0x70, 0x61, 0xf1, 0x61, 0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x41, -0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x42, 0x65, 0x6c, 0x69, 0x63, 0x65, 0x43, 0x68, 0x69, 0x6c, 0x65, 0x43, -0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, 0x61, 0x43, 0x6f, 0x73, 0x74, 0x61, 0x20, 0x52, 0x69, 0x63, 0x61, 0x43, 0x75, 0x62, -0x61, 0x52, 0x65, 0x70, 0xfa, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x20, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x6e, -0x61, 0x45, 0x6c, 0x20, 0x53, 0x61, 0x6c, 0x76, 0x61, 0x64, 0x6f, 0x72, 0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, 0x20, 0x45, -0x63, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x47, 0x75, 0x61, 0x74, 0x65, 0x6d, 0x61, 0x6c, 0x61, 0x48, 0x6f, -0x6e, 0x64, 0x75, 0x72, 0x61, 0x73, 0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x20, 0x64, 0x65, 0x20, 0x4d, 0xe9, 0x78, -0x69, 0x63, 0x6f, 0x4d, 0xe9, 0x78, 0x69, 0x63, 0x6f, 0x4e, 0x69, 0x63, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x50, 0x61, -0x6e, 0x61, 0x6d, 0xe1, 0x50, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x79, 0x46, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, -0x73, 0x45, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, 0x64, 0x6f, 0x73, 0x55, 0x72, 0x75, 0x67, 0x75, -0x61, 0x79, 0x56, 0x65, 0x6e, 0x65, 0x7a, 0x75, 0x65, 0x6c, 0x61, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x69, 0x61, 0x73, 0x65, -0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x20, 0x6c, 0x61, 0x74, 0x69, 0x6e, 0x6f, 0x61, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, -0x6e, 0x6f, 0x4c, 0x61, 0x74, 0x69, 0x6e, 0x6f, 0x61, 0x6d, 0xe9, 0x72, 0x69, 0x63, 0x61, 0x43, 0x65, 0x75, 0x74, 0x61, -0x20, 0x79, 0x20, 0x4d, 0x65, 0x6c, 0x69, 0x6c, 0x6c, 0x61, 0x42, 0x61, 0x73, 0x61, 0x20, 0x53, 0x75, 0x6e, 0x64, 0x61, -0x4b, 0x69, 0x73, 0x77, 0x61, 0x68, 0x69, 0x6c, 0x69, 0x4a, 0x61, 0x6d, 0x68, 0x75, 0x72, 0x69, 0x20, 0x79, 0x61, 0x20, -0x4b, 0x69, 0x64, 0x65, 0x6d, 0x6f, 0x6b, 0x72, 0x61, 0x73, 0x69, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, -0x6f, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0x53, 0x76, 0x65, 0x72, 0x69, 0x67, 0x65, 0xc5, 0x6c, 0x61, 0x6e, 0x64, -0x442, 0x43e, 0x4b7, 0x438, 0x43a, 0x4e3, 0x422, 0x43e, 0x4b7, 0x438, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0xba4, 0xbae, 0xbbf, 0xbb4, -0xbcd, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0xbbe, 0xbae, 0xbb2, 0xbc7, 0xb9a, 0xbbf, 0xbaf, 0xbbe, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, -0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, 0x442, 0x430, 0x442, 0x430, 0x440, 0xc24, 0xc46, 0xc32, -0xc41, 0xc17, 0xc41, 0xc2d, 0xc3e, 0xc30, 0xc24, 0xc26, 0xc47, 0xc36, 0xc02, 0xe44, 0xe17, 0xe22, 0xf56, 0xf7c, 0xf51, 0xf0b, 0xf66, 0xf90, -0xf51, 0xf0b, 0xf62, 0xf92, 0xfb1, 0xf0b, 0xf53, 0xf42, 0xf62, 0xf92, 0xfb1, 0xf0b, 0xf42, 0xf62, 0xf0b, 0x1275, 0x130d, 0x122d, 0x129b, 0x12a4, -0x122d, 0x1275, 0x122b, 0x6c, 0x65, 0x61, 0x20, 0x66, 0x61, 0x6b, 0x61, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x54, 0xfc, 0x72, 0x6b, -0xe7, 0x65, 0x54, 0xfc, 0x72, 0x6b, 0x69, 0x79, 0x65, 0x4b, 0x131, 0x62, 0x72, 0x131, 0x73, 0x74, 0xfc, 0x72, 0x6b, 0x6d, -0x65, 0x6e, 0x20, 0x64, 0x69, 0x6c, 0x69, 0x54, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x626, -0x6c7, 0x64a, 0x63a, 0x6c7, 0x631, 0x686, 0x6d5, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x443, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x441, 0x44c, -0x43a, 0x430, 0x423, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x430, 0x627, 0x631, 0x62f, 0x648, 0x628, 0x6be, 0x627, 0x631, 0x62a, 0x6f, 0x2018, -0x7a, 0x62, 0x65, 0x6b, 0x4f, 0x2bb, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73, 0x74, 0x6f, 0x6e, 0x627, 0x648, 0x632, 0x628, 0x6cc, -0x6a9, 0x45e, 0x437, 0x431, 0x435, 0x43a, 0x447, 0x430, 0x40e, 0x437, 0x431, 0x435, 0x43a, 0x438, 0x441, 0x442, 0x43e, 0x43d, 0x54, 0x69, -0x1ebf, 0x6e, 0x67, 0x20, 0x56, 0x69, 0x1ec7, 0x74, 0x56, 0x69, 0x1ec7, 0x74, 0x20, 0x4e, 0x61, 0x6d, 0x56, 0x6f, 0x6c, 0x61, -0x70, 0xfc, 0x6b, 0x43, 0x79, 0x6d, 0x72, 0x61, 0x65, 0x67, 0x59, 0x20, 0x44, 0x65, 0x79, 0x72, 0x6e, 0x61, 0x73, 0x20, +0x6e, 0x64, 0x61, 0x53, 0x74, 0x2e, 0x20, 0x4b, 0x69, 0x74, 0x74, 0x73, 0x20, 0x26, 0x20, 0x4e, 0x65, 0x76, 0x69, 0x73, +0x53, 0x74, 0x2e, 0x20, 0x4c, 0x75, 0x63, 0x69, 0x61, 0x53, 0x74, 0x2e, 0x20, 0x56, 0x69, 0x6e, 0x63, 0x65, 0x6e, 0x74, +0x20, 0x26, 0x20, 0x47, 0x72, 0x65, 0x6e, 0x61, 0x64, 0x69, 0x6e, 0x65, 0x73, 0x53, 0x61, 0x6d, 0x6f, 0x61, 0x53, 0x65, +0x79, 0x63, 0x68, 0x65, 0x6c, 0x6c, 0x65, 0x73, 0x53, 0x69, 0x65, 0x72, 0x72, 0x61, 0x20, 0x4c, 0x65, 0x6f, 0x6e, 0x65, +0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x69, 0x61, 0x53, 0x6f, 0x6c, +0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x53, 0x6f, 0x75, 0x74, 0x68, 0x20, 0x41, 0x66, +0x72, 0x69, 0x63, 0x61, 0x53, 0x74, 0x2e, 0x20, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x45, +0x73, 0x77, 0x61, 0x74, 0x69, 0x6e, 0x69, 0x53, 0x77, 0x65, 0x64, 0x65, 0x6e, 0x53, 0x77, 0x69, 0x74, 0x7a, 0x65, 0x72, +0x6c, 0x61, 0x6e, 0x64, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x54, 0x6f, 0x6b, 0x65, 0x6c, 0x61, 0x75, 0x54, +0x6f, 0x6e, 0x67, 0x61, 0x54, 0x72, 0x69, 0x6e, 0x69, 0x64, 0x61, 0x64, 0x20, 0x26, 0x20, 0x54, 0x6f, 0x62, 0x61, 0x67, +0x6f, 0x54, 0x75, 0x72, 0x6b, 0x73, 0x20, 0x26, 0x20, 0x43, 0x61, 0x69, 0x63, 0x6f, 0x73, 0x20, 0x49, 0x73, 0x6c, 0x61, +0x6e, 0x64, 0x73, 0x54, 0x75, 0x76, 0x61, 0x6c, 0x75, 0x55, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x55, 0x6e, 0x69, 0x74, 0x65, +0x64, 0x20, 0x41, 0x72, 0x61, 0x62, 0x20, 0x45, 0x6d, 0x69, 0x72, 0x61, 0x74, 0x65, 0x73, 0x42, 0x72, 0x69, 0x74, 0x69, +0x73, 0x68, 0x20, 0x45, 0x6e, 0x67, 0x6c, 0x69, 0x73, 0x68, 0x55, 0x6e, 0x69, 0x74, 0x65, 0x64, 0x20, 0x4b, 0x69, 0x6e, +0x67, 0x64, 0x6f, 0x6d, 0x55, 0x2e, 0x53, 0x2e, 0x20, 0x4f, 0x75, 0x74, 0x6c, 0x79, 0x69, 0x6e, 0x67, 0x20, 0x49, 0x73, +0x6c, 0x61, 0x6e, 0x64, 0x73, 0x56, 0x61, 0x6e, 0x75, 0x61, 0x74, 0x75, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, +0x56, 0x69, 0x72, 0x67, 0x69, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x55, 0x2e, 0x53, 0x2e, 0x20, 0x56, +0x69, 0x72, 0x67, 0x69, 0x6e, 0x20, 0x49, 0x73, 0x6c, 0x61, 0x6e, 0x64, 0x73, 0x5a, 0x61, 0x6d, 0x62, 0x69, 0x61, 0x5a, +0x69, 0x6d, 0x62, 0x61, 0x62, 0x77, 0x65, 0x44, 0x69, 0x65, 0x67, 0x6f, 0x20, 0x47, 0x61, 0x72, 0x63, 0x69, 0x61, 0x49, +0x73, 0x6c, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x4d, 0x61, 0x6e, 0x4a, 0x65, 0x72, 0x73, 0x65, 0x79, 0x53, 0x6f, 0x75, 0x74, +0x68, 0x20, 0x53, 0x75, 0x64, 0x61, 0x6e, 0x53, 0x69, 0x6e, 0x74, 0x20, 0x4d, 0x61, 0x61, 0x72, 0x74, 0x65, 0x6e, 0x57, +0x6f, 0x72, 0x6c, 0x64, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x65, 0x73, 0x70, 0x65, 0x72, 0x61, 0x6e, 0x74, 0x6f, 0x4d, +0x6f, 0x6e, 0x64, 0x6f, 0x65, 0x65, 0x73, 0x74, 0x69, 0x45, 0x65, 0x73, 0x74, 0x69, 0x66, 0xf8, 0x72, 0x6f, 0x79, 0x73, +0x6b, 0x74, 0x46, 0xf8, 0x72, 0x6f, 0x79, 0x61, 0x72, 0x73, 0x75, 0x6f, 0x6d, 0x69, 0x53, 0x75, 0x6f, 0x6d, 0x69, 0x66, +0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x46, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x41, 0x6c, 0x67, 0xe9, 0x72, 0x69, 0x65, +0x42, 0x65, 0x6c, 0x67, 0x69, 0x71, 0x75, 0x65, 0x42, 0xe9, 0x6e, 0x69, 0x6e, 0x42, 0x75, 0x72, 0x6b, 0x69, 0x6e, 0x61, +0x20, 0x46, 0x61, 0x73, 0x6f, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x6f, 0x75, 0x6e, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, +0x73, 0x20, 0x63, 0x61, 0x6e, 0x61, 0x64, 0x69, 0x65, 0x6e, 0x52, 0xe9, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x71, 0x75, 0x65, +0x20, 0x63, 0x65, 0x6e, 0x74, 0x72, 0x61, 0x66, 0x72, 0x69, 0x63, 0x61, 0x69, 0x6e, 0x65, 0x54, 0x63, 0x68, 0x61, 0x64, +0x43, 0x6f, 0x6d, 0x6f, 0x72, 0x65, 0x73, 0x43, 0x6f, 0x6e, 0x67, 0x6f, 0x2d, 0x4b, 0x69, 0x6e, 0x73, 0x68, 0x61, 0x73, +0x61, 0x43, 0x6f, 0x6e, 0x67, 0x6f, 0x2d, 0x42, 0x72, 0x61, 0x7a, 0x7a, 0x61, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x43, 0xf4, +0x74, 0x65, 0x20, 0x64, 0x2019, 0x49, 0x76, 0x6f, 0x69, 0x72, 0x65, 0x44, 0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74, 0x69, 0x47, +0x75, 0x69, 0x6e, 0xe9, 0x65, 0x20, 0xe9, 0x71, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x65, 0x47, 0x75, 0x79, +0x61, 0x6e, 0x65, 0x20, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x65, 0x50, 0x6f, 0x6c, 0x79, 0x6e, 0xe9, 0x73, +0x69, 0x65, 0x20, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x65, 0x47, 0x61, 0x62, 0x6f, 0x6e, 0x47, 0x75, 0x61, +0x64, 0x65, 0x6c, 0x6f, 0x75, 0x70, 0x65, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x65, 0x48, 0x61, 0xef, 0x74, 0x69, 0x4c, 0x75, +0x78, 0x65, 0x6d, 0x62, 0x6f, 0x75, 0x72, 0x67, 0x4d, 0x61, 0x6c, 0x69, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x69, 0x71, +0x75, 0x65, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x65, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x63, 0x65, 0x4d, +0x61, 0x79, 0x6f, 0x74, 0x74, 0x65, 0x4d, 0x6f, 0x6e, 0x61, 0x63, 0x6f, 0x4d, 0x61, 0x72, 0x6f, 0x63, 0x4e, 0x6f, 0x75, +0x76, 0x65, 0x6c, 0x6c, 0x65, 0x2d, 0x43, 0x61, 0x6c, 0xe9, 0x64, 0x6f, 0x6e, 0x69, 0x65, 0x4e, 0x69, 0x67, 0x65, 0x72, +0x4c, 0x61, 0x20, 0x52, 0xe9, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x53, 0xe9, 0x6e, 0xe9, 0x67, 0x61, 0x6c, 0x53, 0x61, 0x69, +0x6e, 0x74, 0x2d, 0x50, 0x69, 0x65, 0x72, 0x72, 0x65, 0x2d, 0x65, 0x74, 0x2d, 0x4d, 0x69, 0x71, 0x75, 0x65, 0x6c, 0x6f, +0x6e, 0x66, 0x72, 0x61, 0x6e, 0xe7, 0x61, 0x69, 0x73, 0x20, 0x73, 0x75, 0x69, 0x73, 0x73, 0x65, 0x53, 0x75, 0x69, 0x73, +0x73, 0x65, 0x53, 0x79, 0x72, 0x69, 0x65, 0x54, 0x6f, 0x67, 0x6f, 0x54, 0x75, 0x6e, 0x69, 0x73, 0x69, 0x65, 0x57, 0x61, +0x6c, 0x6c, 0x69, 0x73, 0x2d, 0x65, 0x74, 0x2d, 0x46, 0x75, 0x74, 0x75, 0x6e, 0x61, 0x53, 0x61, 0x69, 0x6e, 0x74, 0x2d, +0x42, 0x61, 0x72, 0x74, 0x68, 0xe9, 0x6c, 0x65, 0x6d, 0x79, 0x53, 0x61, 0x69, 0x6e, 0x74, 0x2d, 0x4d, 0x61, 0x72, 0x74, +0x69, 0x6e, 0x46, 0x72, 0x79, 0x73, 0x6b, 0x4e, 0x65, 0x64, 0x65, 0x72, 0x6c, 0xe2, 0x6e, 0x47, 0xe0, 0x69, 0x64, 0x68, +0x6c, 0x69, 0x67, 0x41, 0x6e, 0x20, 0x52, 0xec, 0x6f, 0x67, 0x68, 0x61, 0x63, 0x68, 0x64, 0x20, 0x41, 0x6f, 0x6e, 0x61, +0x69, 0x63, 0x68, 0x74, 0x65, 0x67, 0x61, 0x6c, 0x65, 0x67, 0x6f, 0x45, 0x73, 0x70, 0x61, 0xf1, 0x61, 0x10e5, 0x10d0, 0x10e0, +0x10d7, 0x10e3, 0x10da, 0x10d8, 0x10e1, 0x10d0, 0x10e5, 0x10d0, 0x10e0, 0x10d7, 0x10d5, 0x10d4, 0x10da, 0x10dd, 0x44, 0x65, 0x75, 0x74, 0x73, 0x63, +0x68, 0x44, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0xd6, 0x73, 0x74, 0x65, 0x72, 0x72, 0x65, 0x69, +0x63, 0x68, 0x69, 0x73, 0x63, 0x68, 0x65, 0x73, 0x20, 0x44, 0x65, 0x75, 0x74, 0x73, 0x63, 0x68, 0xd6, 0x73, 0x74, 0x65, +0x72, 0x72, 0x65, 0x69, 0x63, 0x68, 0x42, 0x65, 0x6c, 0x67, 0x69, 0x65, 0x6e, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x65, 0x6e, +0x4c, 0x69, 0x65, 0x63, 0x68, 0x74, 0x65, 0x6e, 0x73, 0x74, 0x65, 0x69, 0x6e, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62, 0x75, +0x72, 0x67, 0x53, 0x63, 0x68, 0x77, 0x65, 0x69, 0x7a, 0x65, 0x72, 0x20, 0x48, 0x6f, 0x63, 0x68, 0x64, 0x65, 0x75, 0x74, +0x73, 0x63, 0x68, 0x53, 0x63, 0x68, 0x77, 0x65, 0x69, 0x7a, 0x395, 0x3bb, 0x3bb, 0x3b7, 0x3bd, 0x3b9, 0x3ba, 0x3ac, 0x395, 0x3bb, +0x3bb, 0x3ac, 0x3b4, 0x3b1, 0x39a, 0x3cd, 0x3c0, 0x3c1, 0x3bf, 0x3c2, 0x6b, 0x61, 0x6c, 0x61, 0x61, 0x6c, 0x6c, 0x69, 0x73, 0x75, +0x74, 0x4b, 0x61, 0x6c, 0x61, 0x61, 0x6c, 0x6c, 0x69, 0x74, 0x20, 0x4e, 0x75, 0x6e, 0x61, 0x61, 0x74, 0xa97, 0xac1, 0xa9c, +0xab0, 0xabe, 0xaa4, 0xac0, 0xaad, 0xabe, 0xab0, 0xaa4, 0x48, 0x61, 0x75, 0x73, 0x61, 0x4e, 0x61, 0x6a, 0x65, 0x72, 0x69, 0x79, +0x61, 0x47, 0x61, 0x6e, 0x61, 0x4e, 0x69, 0x6a, 0x61, 0x72, 0x5e2, 0x5d1, 0x5e8, 0x5d9, 0x5ea, 0x5d9, 0x5e9, 0x5e8, 0x5d0, 0x5dc, +0x939, 0x93f, 0x928, 0x94d, 0x926, 0x940, 0x92d, 0x93e, 0x930, 0x924, 0x6d, 0x61, 0x67, 0x79, 0x61, 0x72, 0x4d, 0x61, 0x67, 0x79, +0x61, 0x72, 0x6f, 0x72, 0x73, 0x7a, 0xe1, 0x67, 0xed, 0x73, 0x6c, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0xcd, 0x73, 0x6c, 0x61, +0x6e, 0x64, 0x49, 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x73, 0x69, 0x61, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6c, 0x69, 0x6e, 0x67, +0x75, 0x61, 0x4d, 0x75, 0x6e, 0x64, 0x6f, 0x47, 0x61, 0x65, 0x69, 0x6c, 0x67, 0x65, 0xc9, 0x69, 0x72, 0x65, 0x61, 0x6e, +0x20, 0x52, 0xed, 0x6f, 0x63, 0x68, 0x74, 0x20, 0x41, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x74, 0x68, 0x65, 0x69, 0x74, 0x61, +0x6c, 0x69, 0x61, 0x6e, 0x6f, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x61, 0x53, 0x61, 0x6e, 0x20, 0x4d, 0x61, 0x72, 0x69, 0x6e, +0x6f, 0x53, 0x76, 0x69, 0x7a, 0x7a, 0x65, 0x72, 0x61, 0x43, 0x69, 0x74, 0x74, 0xe0, 0x20, 0x64, 0x65, 0x6c, 0x20, 0x56, +0x61, 0x74, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x65e5, 0x672c, 0x8a9e, 0x65e5, 0x672c, 0x4a, 0x61, 0x77, 0x61, 0x49, 0x6e, 0x64, 0x6f, +0x6e, 0xe9, 0x73, 0x69, 0x61, 0xc95, 0xca8, 0xccd, 0xca8, 0xca1, 0xcad, 0xcbe, 0xcb0, 0xca4, 0x6a9, 0x672, 0x634, 0x64f, 0x631, 0x6c1, +0x650, 0x646, 0x62f, 0x648, 0x633, 0x62a, 0x627, 0x646, 0x49b, 0x430, 0x437, 0x430, 0x49b, 0x20, 0x442, 0x456, 0x43b, 0x456, 0x49a, 0x430, +0x437, 0x430, 0x49b, 0x441, 0x442, 0x430, 0x43d, 0x4b, 0x69, 0x6e, 0x79, 0x61, 0x72, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x55, 0x20, +0x52, 0x77, 0x61, 0x6e, 0x64, 0x61, 0x43a, 0x44b, 0x440, 0x433, 0x44b, 0x437, 0x447, 0x430, 0x41a, 0x44b, 0x440, 0x433, 0x44b, 0x437, +0x441, 0x442, 0x430, 0x43d, 0xd55c, 0xad6d, 0xc5b4, 0xb300, 0xd55c, 0xbbfc, 0xad6d, 0xc870, 0xc120, 0xbbfc, 0xc8fc, 0xc8fc, 0xc758, 0xc778, 0xbbfc, 0xacf5, +0xd654, 0xad6d, 0x6b, 0x75, 0x72, 0x64, 0xee, 0x54, 0x69, 0x72, 0x6b, 0x69, 0x79, 0x65, 0x49, 0x6b, 0x69, 0x72, 0x75, 0x6e, +0x64, 0x69, 0x55, 0x62, 0x75, 0x72, 0x75, 0x6e, 0x64, 0x69, 0xea5, 0xeb2, 0xea7, 0x6c, 0x61, 0x74, 0x76, 0x69, 0x65, 0x161, +0x75, 0x4c, 0x61, 0x74, 0x76, 0x69, 0x6a, 0x61, 0x6c, 0x69, 0x6e, 0x67, 0xe1, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x75, 0x62, +0x6c, 0xed, 0x6b, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0xf3, 0x20, 0x44, 0x65, 0x6d, 0x6f, 0x6b, 0x72, +0x61, 0x74, 0xed, 0x6b, 0x69, 0x41, 0x6e, 0x67, 0xf3, 0x6c, 0x61, 0x52, 0x65, 0x70, 0x69, 0x62, 0x69, 0x6b, 0x69, 0x20, +0x79, 0x61, 0x20, 0x41, 0x66, 0x72, 0xed, 0x6b, 0x61, 0x20, 0x79, 0x61, 0x20, 0x4b, 0xe1, 0x74, 0x69, 0x4b, 0x6f, 0x6e, +0x67, 0x6f, 0x6c, 0x69, 0x65, 0x74, 0x75, 0x76, 0x69, 0x173, 0x4c, 0x69, 0x65, 0x74, 0x75, 0x76, 0x61, 0x43c, 0x430, 0x43a, +0x435, 0x434, 0x43e, 0x43d, 0x441, 0x43a, 0x438, 0x421, 0x435, 0x432, 0x435, 0x440, 0x43d, 0x430, 0x20, 0x41c, 0x430, 0x43a, 0x435, 0x434, +0x43e, 0x43d, 0x438, 0x458, 0x430, 0x4d, 0x61, 0x6c, 0x61, 0x67, 0x61, 0x73, 0x79, 0x4d, 0x61, 0x64, 0x61, 0x67, 0x61, 0x73, +0x69, 0x6b, 0x61, 0x72, 0x61, 0x4d, 0x65, 0x6c, 0x61, 0x79, 0x75, 0x42, 0x72, 0x75, 0x6e, 0x65, 0x69, 0x53, 0x69, 0x6e, +0x67, 0x61, 0x70, 0x75, 0x72, 0x61, 0xd2e, 0xd32, 0xd2f, 0xd3e, 0xd33, 0xd02, 0xd07, 0xd28, 0xd4d, 0xd24, 0xd4d, 0xd2f, 0x4d, 0x61, +0x6c, 0x74, 0x69, 0x74, 0x65, 0x20, 0x72, 0x65, 0x6f, 0x20, 0x4d, 0x101, 0x6f, 0x72, 0x69, 0x41, 0x6f, 0x74, 0x65, 0x61, +0x72, 0x6f, 0x61, 0x92e, 0x930, 0x93e, 0x920, 0x940, 0x43c, 0x43e, 0x43d, 0x433, 0x43e, 0x43b, 0x41c, 0x43e, 0x43d, 0x433, 0x43e, 0x43b, +0x928, 0x947, 0x92a, 0x93e, 0x932, 0x940, 0x928, 0x947, 0x92a, 0x93e, 0x932, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x20, 0x62, 0x6f, 0x6b, +0x6d, 0xe5, 0x6c, 0x4e, 0x6f, 0x72, 0x67, 0x65, 0x53, 0x76, 0x61, 0x6c, 0x62, 0x61, 0x72, 0x64, 0x20, 0x6f, 0x67, 0x20, +0x4a, 0x61, 0x6e, 0x20, 0x4d, 0x61, 0x79, 0x65, 0x6e, 0xb13, 0xb21, 0xb3c, 0xb3f, 0xb06, 0xb2d, 0xb3e, 0xb30, 0xb24, 0x67e, 0x69a, +0x62a, 0x648, 0x627, 0x641, 0x63a, 0x627, 0x646, 0x633, 0x62a, 0x627, 0x646, 0x67e, 0x627, 0x6a9, 0x633, 0x62a, 0x627, 0x646, 0x641, 0x627, +0x631, 0x633, 0x6cc, 0x627, 0x6cc, 0x631, 0x627, 0x646, 0x62f, 0x631, 0x6cc, 0x70, 0x6f, 0x6c, 0x73, 0x6b, 0x69, 0x50, 0x6f, 0x6c, +0x73, 0x6b, 0x61, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea, 0x73, 0x42, 0x72, 0x61, 0x73, 0x69, 0x6c, 0x41, 0x6e, +0x67, 0x6f, 0x6c, 0x61, 0x43, 0x61, 0x62, 0x6f, 0x20, 0x56, 0x65, 0x72, 0x64, 0x65, 0x54, 0x69, 0x6d, 0x6f, 0x72, 0x2d, +0x4c, 0x65, 0x73, 0x74, 0x65, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x20, 0x45, 0x71, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x69, 0x61, +0x6c, 0x47, 0x75, 0x69, 0x6e, 0xe9, 0x2d, 0x42, 0x69, 0x73, 0x73, 0x61, 0x75, 0x4c, 0x75, 0x78, 0x65, 0x6d, 0x62, 0x75, +0x72, 0x67, 0x6f, 0x4d, 0x61, 0x63, 0x61, 0x75, 0x2c, 0x20, 0x52, 0x41, 0x45, 0x20, 0x64, 0x61, 0x20, 0x43, 0x68, 0x69, +0x6e, 0x61, 0x4d, 0x6f, 0xe7, 0x61, 0x6d, 0x62, 0x69, 0x71, 0x75, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x75, 0xea, +0x73, 0x20, 0x65, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x75, 0x50, 0x6f, 0x72, 0x74, 0x75, 0x67, 0x61, 0x6c, 0x53, 0xe3, 0x6f, +0x20, 0x54, 0x6f, 0x6d, 0xe9, 0x20, 0x65, 0x20, 0x50, 0x72, 0xed, 0x6e, 0x63, 0x69, 0x70, 0x65, 0x53, 0x75, 0xed, 0xe7, +0x61, 0xa2a, 0xa70, 0xa1c, 0xa3e, 0xa2c, 0xa40, 0xa2d, 0xa3e, 0xa30, 0xa24, 0x67e, 0x646, 0x62c, 0x627, 0x628, 0x6cc, 0x52, 0x75, 0x6e, +0x61, 0x73, 0x69, 0x6d, 0x69, 0x50, 0x65, 0x72, 0xfa, 0x42, 0x6f, 0x6c, 0x69, 0x76, 0x69, 0x61, 0x45, 0x63, 0x75, 0x61, +0x64, 0x6f, 0x72, 0x72, 0x75, 0x6d, 0x61, 0x6e, 0x74, 0x73, 0x63, 0x68, 0x53, 0x76, 0x69, 0x7a, 0x72, 0x61, 0x72, 0x6f, +0x6d, 0xe2, 0x6e, 0x103, 0x52, 0x6f, 0x6d, 0xe2, 0x6e, 0x69, 0x61, 0x52, 0x65, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x61, +0x20, 0x4d, 0x6f, 0x6c, 0x64, 0x6f, 0x76, 0x61, 0x440, 0x443, 0x441, 0x441, 0x43a, 0x438, 0x439, 0x420, 0x43e, 0x441, 0x441, 0x438, +0x44f, 0x41a, 0x430, 0x437, 0x430, 0x445, 0x441, 0x442, 0x430, 0x43d, 0x41a, 0x438, 0x440, 0x433, 0x438, 0x437, 0x438, 0x44f, 0x41c, 0x43e, +0x43b, 0x434, 0x43e, 0x432, 0x430, 0x423, 0x43a, 0x440, 0x430, 0x438, 0x43d, 0x430, 0x53, 0xe4, 0x6e, 0x67, 0xf6, 0x4b, 0xf6, 0x64, +0xf6, 0x72, 0xf6, 0x73, 0xea, 0x73, 0x65, 0x20, 0x74, 0xee, 0x20, 0x42, 0xea, 0x61, 0x66, 0x72, 0xee, 0x6b, 0x61, 0x938, +0x902, 0x938, 0x94d, 0x915, 0x943, 0x924, 0x20, 0x92d, 0x93e, 0x937, 0x93e, 0x92d, 0x93e, 0x930, 0x924, 0x903, 0x441, 0x440, 0x43f, 0x441, +0x43a, 0x438, 0x421, 0x440, 0x431, 0x438, 0x458, 0x430, 0x73, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x43, 0x72, 0x6e, 0x61, 0x20, 0x47, +0x6f, 0x72, 0x61, 0x53, 0x72, 0x62, 0x69, 0x6a, 0x61, 0x411, 0x43e, 0x441, 0x43d, 0x430, 0x20, 0x438, 0x20, 0x425, 0x435, 0x440, +0x446, 0x435, 0x433, 0x43e, 0x432, 0x438, 0x43d, 0x430, 0x426, 0x440, 0x43d, 0x430, 0x20, 0x413, 0x43e, 0x440, 0x430, 0x41a, 0x43e, 0x441, +0x43e, 0x432, 0x43e, 0x4b, 0x6f, 0x73, 0x6f, 0x76, 0x6f, 0x438, 0x440, 0x43e, 0x43d, 0x413, 0x443, 0x44b, 0x440, 0x434, 0x437, 0x44b, +0x441, 0x442, 0x43e, 0x43d, 0x423, 0x4d5, 0x440, 0x4d5, 0x441, 0x435, 0x63, 0x68, 0x69, 0x53, 0x68, 0x6f, 0x6e, 0x61, 0x633, 0x646, +0x68c, 0x64a, 0x67e, 0x627, 0x6aa, 0x633, 0x62a, 0x627, 0x646, 0x938, 0x93f, 0x928, 0x94d, 0x927, 0x940, 0xdc3, 0xdd2, 0xd82, 0xdc4, 0xdbd, +0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0xdc0, 0x73, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x10d, 0x69, 0x6e, +0x61, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x6f, 0x73, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x161, 0x10d, 0x69, 0x6e, +0x61, 0x53, 0x6c, 0x6f, 0x76, 0x65, 0x6e, 0x69, 0x6a, 0x61, 0x53, 0x6f, 0x6f, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x53, 0x6f, +0x6f, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x79, 0x61, 0x4a, 0x61, 0x62, 0x75, 0x75, 0x74, 0x69, 0x49, 0x74, 0x6f, 0x6f, 0x62, +0x69, 0x79, 0x61, 0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x20, 0x64, 0x65, 0x20, 0x45, 0x73, 0x70, 0x61, 0xf1, 0x61, +0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x41, 0x72, 0x67, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x61, 0x42, 0x65, 0x6c, 0x69, +0x63, 0x65, 0x43, 0x68, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x69, 0x61, 0x43, 0x6f, 0x73, 0x74, 0x61, +0x20, 0x52, 0x69, 0x63, 0x61, 0x43, 0x75, 0x62, 0x61, 0x52, 0x65, 0x70, 0xfa, 0x62, 0x6c, 0x69, 0x63, 0x61, 0x20, 0x44, +0x6f, 0x6d, 0x69, 0x6e, 0x69, 0x63, 0x61, 0x6e, 0x61, 0x45, 0x6c, 0x20, 0x53, 0x61, 0x6c, 0x76, 0x61, 0x64, 0x6f, 0x72, +0x47, 0x75, 0x69, 0x6e, 0x65, 0x61, 0x20, 0x45, 0x63, 0x75, 0x61, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x47, 0x75, 0x61, +0x74, 0x65, 0x6d, 0x61, 0x6c, 0x61, 0x48, 0x6f, 0x6e, 0x64, 0x75, 0x72, 0x61, 0x73, 0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, +0x6c, 0x20, 0x64, 0x65, 0x20, 0x4d, 0xe9, 0x78, 0x69, 0x63, 0x6f, 0x4d, 0xe9, 0x78, 0x69, 0x63, 0x6f, 0x4e, 0x69, 0x63, +0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x50, 0x61, 0x6e, 0x61, 0x6d, 0xe1, 0x50, 0x61, 0x72, 0x61, 0x67, 0x75, 0x61, 0x79, +0x46, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x45, 0x73, 0x74, 0x61, 0x64, 0x6f, 0x73, 0x20, 0x55, 0x6e, 0x69, +0x64, 0x6f, 0x73, 0x55, 0x72, 0x75, 0x67, 0x75, 0x61, 0x79, 0x56, 0x65, 0x6e, 0x65, 0x7a, 0x75, 0x65, 0x6c, 0x61, 0x43, +0x61, 0x6e, 0x61, 0x72, 0x69, 0x61, 0x73, 0x65, 0x73, 0x70, 0x61, 0xf1, 0x6f, 0x6c, 0x20, 0x6c, 0x61, 0x74, 0x69, 0x6e, +0x6f, 0x61, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x4c, 0x61, 0x74, 0x69, 0x6e, 0x6f, 0x61, 0x6d, 0xe9, 0x72, +0x69, 0x63, 0x61, 0x43, 0x65, 0x75, 0x74, 0x61, 0x20, 0x79, 0x20, 0x4d, 0x65, 0x6c, 0x69, 0x6c, 0x6c, 0x61, 0x42, 0x61, +0x73, 0x61, 0x20, 0x53, 0x75, 0x6e, 0x64, 0x61, 0x4b, 0x69, 0x73, 0x77, 0x61, 0x68, 0x69, 0x6c, 0x69, 0x4a, 0x61, 0x6d, +0x68, 0x75, 0x72, 0x69, 0x20, 0x79, 0x61, 0x20, 0x4b, 0x69, 0x64, 0x65, 0x6d, 0x6f, 0x6b, 0x72, 0x61, 0x73, 0x69, 0x61, +0x20, 0x79, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x6f, 0x73, 0x76, 0x65, 0x6e, 0x73, 0x6b, 0x61, 0x53, 0x76, 0x65, 0x72, +0x69, 0x67, 0x65, 0xc5, 0x6c, 0x61, 0x6e, 0x64, 0x442, 0x43e, 0x4b7, 0x438, 0x43a, 0x4e3, 0x422, 0x43e, 0x4b7, 0x438, 0x43a, 0x438, +0x441, 0x442, 0x43e, 0x43d, 0xba4, 0xbae, 0xbbf, 0xbb4, 0xbcd, 0xb87, 0xba8, 0xbcd, 0xba4, 0xbbf, 0xbaf, 0xbbe, 0xbae, 0xbb2, 0xbc7, 0xb9a, +0xbbf, 0xbaf, 0xbbe, 0xb9a, 0xbbf, 0xb99, 0xbcd, 0xb95, 0xbaa, 0xbcd, 0xbaa, 0xbc2, 0xbb0, 0xbcd, 0xb87, 0xbb2, 0xb99, 0xbcd, 0xb95, 0xbc8, +0x442, 0x430, 0x442, 0x430, 0x440, 0xc24, 0xc46, 0xc32, 0xc41, 0xc17, 0xc41, 0xc2d, 0xc3e, 0xc30, 0xc24, 0xc26, 0xc47, 0xc36, 0xc02, 0xe44, +0xe17, 0xe22, 0xf56, 0xf7c, 0xf51, 0xf0b, 0xf66, 0xf90, 0xf51, 0xf0b, 0xf62, 0xf92, 0xfb1, 0xf0b, 0xf53, 0xf42, 0xf62, 0xf92, 0xfb1, 0xf0b, +0xf42, 0xf62, 0xf0b, 0x1275, 0x130d, 0x122d, 0x12a4, 0x122d, 0x1275, 0x122b, 0x6c, 0x65, 0x61, 0x20, 0x66, 0x61, 0x6b, 0x61, 0x74, 0x6f, +0x6e, 0x67, 0x61, 0x54, 0xfc, 0x72, 0x6b, 0xe7, 0x65, 0x54, 0xfc, 0x72, 0x6b, 0x69, 0x79, 0x65, 0x4b, 0x131, 0x62, 0x72, +0x131, 0x73, 0x74, 0xfc, 0x72, 0x6b, 0x6d, 0x65, 0x6e, 0x20, 0x64, 0x69, 0x6c, 0x69, 0x54, 0xfc, 0x72, 0x6b, 0x6d, 0x65, +0x6e, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x626, 0x6c7, 0x64a, 0x63a, 0x6c7, 0x631, 0x686, 0x6d5, 0x62c, 0x6c7, 0x6ad, 0x6af, 0x648, 0x443, +0x43a, 0x440, 0x430, 0x457, 0x43d, 0x441, 0x44c, 0x43a, 0x430, 0x423, 0x43a, 0x440, 0x430, 0x457, 0x43d, 0x430, 0x627, 0x631, 0x62f, 0x648, +0x628, 0x6be, 0x627, 0x631, 0x62a, 0x6f, 0x2018, 0x7a, 0x62, 0x65, 0x6b, 0x4f, 0x2bb, 0x7a, 0x62, 0x65, 0x6b, 0x69, 0x73, 0x74, +0x6f, 0x6e, 0x627, 0x648, 0x632, 0x628, 0x6cc, 0x6a9, 0x45e, 0x437, 0x431, 0x435, 0x43a, 0x447, 0x430, 0x40e, 0x437, 0x431, 0x435, 0x43a, +0x438, 0x441, 0x442, 0x43e, 0x43d, 0x54, 0x69, 0x1ebf, 0x6e, 0x67, 0x20, 0x56, 0x69, 0x1ec7, 0x74, 0x56, 0x69, 0x1ec7, 0x74, 0x20, +0x4e, 0x61, 0x6d, 0x43, 0x79, 0x6d, 0x72, 0x61, 0x65, 0x67, 0x59, 0x20, 0x44, 0x65, 0x79, 0x72, 0x6e, 0x61, 0x73, 0x20, 0x55, 0x6e, 0x65, 0x64, 0x69, 0x67, 0x57, 0x6f, 0x6c, 0x6f, 0x66, 0x53, 0x65, 0x6e, 0x65, 0x67, 0x61, 0x61, 0x6c, 0x69, 0x73, 0x69, 0x58, 0x68, 0x6f, 0x73, 0x61, 0x65, 0x4d, 0x7a, 0x61, 0x6e, 0x74, 0x73, 0x69, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, 0x61, 0x5d9, 0x5d9, 0x5b4, 0x5d3, 0x5d9, 0x5e9, 0x5d5, 0x5d5, 0x5e2, 0x5dc, 0x5d8, 0xc8, 0x64, 0xe8, 0x20, 0x59, 0x6f, 0x72, -0xf9, 0x62, 0xe1, 0x4f, 0x72, 0x69, 0x6c, 0x1eb9, 0x300, 0x2d, 0xe8, 0x64, 0xe8, 0x20, 0x4e, 0xe0, 0xec, 0x6a, 0xed, 0x72, -0xed, 0xe0, 0x4f, 0x72, 0xed, 0x6c, 0x25b, 0x301, 0xe8, 0x64, 0x65, 0x20, 0x42, 0x25b, 0x300, 0x6e, 0x25b, 0x300, 0x69, 0x73, -0x69, 0x5a, 0x75, 0x6c, 0x75, 0x69, 0x4e, 0x69, 0x6e, 0x67, 0x69, 0x7a, 0x69, 0x6d, 0x75, 0x20, 0x41, 0x66, 0x72, 0x69, -0x6b, 0x61, 0x6e, 0x79, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x4e, 0x6f, 0x72, 0x65, 0x67, 0x62, 0x6f, 0x73, 0x61, 0x6e, 0x73, -0x6b, 0x69, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x438, 0x47, 0x61, 0x65, 0x6c, 0x67, 0x45, 0x6c, 0x6c, 0x61, 0x6e, -0x20, 0x56, 0x61, 0x6e, 0x6e, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x77, 0x65, 0x6b, 0x52, 0x79, 0x77, 0x76, 0x61, -0x6e, 0x65, 0x74, 0x68, 0x20, 0x55, 0x6e, 0x79, 0x73, 0x41, 0x6b, 0x61, 0x6e, 0x47, 0x61, 0x61, 0x6e, 0x61, 0x915, 0x94b, -0x902, 0x915, 0x923, 0x940, 0x41, 0x73, 0x1ee5, 0x73, 0x1ee5, 0x20, 0x49, 0x67, 0x62, 0x6f, 0x4e, 0x61, 0x1ecb, 0x6a, 0x1ecb, 0x72, -0x1ecb, 0x61, 0x4b, 0x69, 0x6b, 0x61, 0x6d, 0x62, 0x61, 0x66, 0x75, 0x72, 0x6c, 0x61, 0x6e, 0x49, 0x74, 0x61, 0x6c, 0x69, -0x65, 0x45, 0x28b, 0x65, 0x67, 0x62, 0x65, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x6e, 0x75, 0x74, 0x6f, 0x6d, 0x65, 0x54, -0x6f, 0x67, 0x6f, 0x20, 0x6e, 0x75, 0x74, 0x6f, 0x6d, 0x65, 0x2bb, 0x14c, 0x6c, 0x65, 0x6c, 0x6f, 0x20, 0x48, 0x61, 0x77, -0x61, 0x69, 0x2bb, 0x69, 0x2bb, 0x41, 0x6d, 0x65, 0x6c, 0x69, 0x6b, 0x61, 0x20, 0x48, 0x75, 0x69, 0x20, 0x50, 0x16b, 0x20, -0x2bb, 0x49, 0x61, 0x46, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x6f, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, -0x53, 0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x74, 0xfc, 0xfc, 0x74, 0x73, 0x63, 0x68, 0x53, 0x63, 0x68, 0x77, -0x69, 0x69, 0x7a, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x72, 0x69, 0x69, 0x63, 0x68, 0x4c, 0x69, 0xe4, 0x63, 0x68, 0x74, 0x65, -0x73, 0x63, 0x68, 0x74, 0xe4, 0x69, 0xa188, 0xa320, 0xa259, 0xa34f, 0xa1e9, 0x4e, 0x65, 0x64, 0x64, 0x65, 0x72, 0x73, 0x61, 0x73, -0x73, 0x2019, 0x73, 0x63, 0x68, 0x44, 0xfc, 0xfc, 0x74, 0x73, 0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0x4e, 0x65, 0x64, 0x64, -0x65, 0x72, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x6e, 0x64, 0x61, 0x76, 0x76, 0x69, 0x73, 0xe1, 0x6d, 0x65, 0x67, 0x69, 0x65, -0x6c, 0x6c, 0x61, 0x4e, 0x6f, 0x72, 0x67, 0x61, 0x53, 0x75, 0x6f, 0x70, 0x6d, 0x61, 0x52, 0x75, 0x6f, 0x167, 0x167, 0x61, -0x45, 0x6b, 0x65, 0x67, 0x75, 0x73, 0x69, 0x69, 0x4b, 0x69, 0x74, 0x61, 0x69, 0x74, 0x61, 0x50, 0x75, 0x6c, 0x61, 0x61, -0x72, 0x42, 0x75, 0x72, 0x6b, 0x69, 0x62, 0x61, 0x61, 0x20, 0x46, 0x61, 0x61, 0x73, 0x6f, 0x4b, 0x61, 0x6d, 0x65, 0x72, -0x75, 0x75, 0x6e, 0x47, 0x61, 0x6d, 0x6d, 0x62, 0x69, 0x47, 0x61, 0x6e, 0x61, 0x61, 0x47, 0x69, 0x6e, 0x65, 0x47, 0x69, -0x6e, 0x65, 0x2d, 0x42, 0x69, 0x73, 0x61, 0x61, 0x77, 0x6f, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x79, 0x61, 0x61, 0x4d, -0x75, 0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x4e, 0x69, 0x6a, 0x65, 0x65, 0x72, 0x4e, 0x69, 0x6a, 0x65, 0x72, 0x69, 0x79, -0x61, 0x61, 0x53, 0x65, 0x72, 0x61, 0x61, 0x20, 0x6c, 0x69, 0x79, 0x6f, 0x6e, 0x47, 0x69, 0x6b, 0x75, 0x79, 0x75, 0x4b, -0x69, 0x73, 0x61, 0x6d, 0x70, 0x75, 0x72, 0x73, 0x65, 0x6e, 0x61, 0x69, 0x73, 0x69, 0x4e, 0x64, 0x65, 0x62, 0x65, 0x6c, -0x65, 0x4b, 0x69, 0x68, 0x6f, 0x72, 0x6f, 0x6d, 0x62, 0x6f, 0x2d5c, 0x2d30, 0x2d5b, 0x2d4d, 0x2d43, 0x2d49, 0x2d5c, 0x2d4d, 0x2d4e, 0x2d56, -0x2d54, 0x2d49, 0x2d31, 0x54, 0x61, 0x73, 0x68, 0x65, 0x6c, 0x1e25, 0x69, 0x79, 0x74, 0x6c, 0x6d, 0x263, 0x72, 0x69, 0x62, 0x54, -0x61, 0x71, 0x62, 0x61, 0x79, 0x6c, 0x69, 0x74, 0x4c, 0x65, 0x7a, 0x7a, 0x61, 0x79, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x79, -0x61, 0x6e, 0x6b, 0x6f, 0x72, 0x65, 0x48, 0x69, 0x62, 0x65, 0x6e, 0x61, 0x48, 0x75, 0x74, 0x61, 0x6e, 0x7a, 0x61, 0x6e, -0x69, 0x61, 0x4b, 0x79, 0x69, 0x76, 0x75, 0x6e, 0x6a, 0x6f, 0x62, 0x61, 0x6d, 0x61, 0x6e, 0x61, 0x6b, 0x61, 0x6e, 0x4b, -0x129, 0x65, 0x6d, 0x62, 0x75, 0x13e3, 0x13b3, 0x13a9, 0x13cc, 0x13ca, 0x20, 0x13a2, 0x13f3, 0x13be, 0x13b5, 0x13cd, 0x13d4, 0x13c5, 0x20, 0x13cd, -0x13a6, 0x13da, 0x13a9, 0x6b, 0x72, 0x65, 0x6f, 0x6c, 0x20, 0x6d, 0x6f, 0x72, 0x69, 0x73, 0x69, 0x65, 0x6e, 0x4d, 0x6f, 0x72, -0x69, 0x73, 0x43, 0x68, 0x69, 0x6d, 0x61, 0x6b, 0x6f, 0x6e, 0x64, 0x65, 0x4b, 0x268, 0x6c, 0x61, 0x61, 0x6e, 0x67, 0x69, -0x54, 0x61, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0xed, 0x61, 0x4c, 0x75, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x59, 0x75, 0x67, 0x61, -0x6e, 0x64, 0x61, 0x49, 0x63, 0x68, 0x69, 0x62, 0x65, 0x6d, 0x62, 0x61, 0x6b, 0x61, 0x62, 0x75, 0x76, 0x65, 0x72, 0x64, -0x69, 0x61, 0x6e, 0x75, 0x4b, 0x61, 0x62, 0x75, 0x20, 0x56, 0x65, 0x72, 0x64, 0x69, 0x4b, 0x129, 0x6d, 0x129, 0x72, 0x169, -0x4b, 0x61, 0x6c, 0x65, 0x6e, 0x6a, 0x69, 0x6e, 0x45, 0x6d, 0x65, 0x74, 0x61, 0x62, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, -0x4b, 0x68, 0x6f, 0x65, 0x6b, 0x68, 0x6f, 0x65, 0x67, 0x6f, 0x77, 0x61, 0x62, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, -0x62, 0x4b, 0x69, 0x6d, 0x61, 0x63, 0x68, 0x61, 0x6d, 0x65, 0x4b, 0xf6, 0x6c, 0x73, 0x63, 0x68, 0x44, 0x6f, 0xfc, 0x74, -0x73, 0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0x4d, 0x61, 0x61, 0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x69, 0x61, 0x4f, 0x6c, -0x75, 0x73, 0x6f, 0x67, 0x61, 0x4c, 0x75, 0x6c, 0x75, 0x68, 0x69, 0x61, 0x4b, 0x69, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, -0x64, 0x68, 0x61, 0x6e, 0x69, 0x61, 0x4b, 0x69, 0x74, 0x65, 0x73, 0x6f, 0x4b, 0x65, 0x6e, 0x69, 0x61, 0x4b, 0x6f, 0x79, -0x72, 0x61, 0x20, 0x63, 0x69, 0x69, 0x6e, 0x69, 0x4d, 0x61, 0x61, 0x6c, 0x69, 0x4b, 0x69, 0x72, 0x75, 0x77, 0x61, 0x44, -0x68, 0x6f, 0x6c, 0x75, 0x6f, 0x52, 0x75, 0x6b, 0x69, 0x67, 0x61, 0x54, 0x61, 0x6d, 0x61, 0x7a, 0x69, 0x263, 0x74, 0x20, -0x6e, 0x20, 0x6c, 0x61, 0x1e6d, 0x6c, 0x61, 0x1e63, 0x4d, 0x65, 0x1e5b, 0x1e5b, 0x75, 0x6b, 0x4b, 0x6f, 0x79, 0x72, 0x61, 0x62, -0x6f, 0x72, 0x6f, 0x20, 0x73, 0x65, 0x6e, 0x6e, 0x69, 0x4b, 0x69, 0x73, 0x68, 0x61, 0x6d, 0x62, 0x61, 0x61, 0x92c, 0x921, -0x93c, 0x94b, 0x43d, 0x43e, 0x445, 0x447, 0x438, 0x439, 0x43d, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x446, 0x435, 0x440, 0x43a, 0x43e, 0x432, -0x43d, 0x43e, 0x441, 0x43b, 0x43e, 0x432, 0x435, 0x301, 0x43d, 0x441, 0x43a, 0x457, 0x439, 0x440, 0x461, 0x441, 0x441, 0x456, 0x301, 0x430, -0x54, 0x73, 0x68, 0x69, 0x6c, 0x75, 0x62, 0x61, 0x44, 0x69, 0x74, 0x75, 0x6e, 0x67, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, -0x6f, 0x6e, 0x67, 0x75, 0x4c, 0xeb, 0x74, 0x7a, 0x65, 0x62, 0x75, 0x65, 0x72, 0x67, 0x65, 0x73, 0x63, 0x68, 0x4c, 0xeb, -0x74, 0x7a, 0x65, 0x62, 0x75, 0x65, 0x72, 0x67, 0x41, 0x67, 0x68, 0x65, 0x6d, 0x4b, 0xe0, 0x6d, 0xe0, 0x6c, 0xfb, 0x14b, -0x181, 0xe0, 0x73, 0xe0, 0x61, 0x4b, 0xe0, 0x6d, 0x25b, 0x300, 0x72, 0xfb, 0x6e, 0x5a, 0x61, 0x72, 0x6d, 0x61, 0x63, 0x69, -0x69, 0x6e, 0x65, 0x4e, 0x69, 0x17e, 0x65, 0x72, 0x64, 0x75, 0xe1, 0x6c, 0xe1, 0x6a, 0x6f, 0x6f, 0x6c, 0x61, 0x53, 0x65, -0x6e, 0x65, 0x67, 0x61, 0x6c, 0x65, 0x77, 0x6f, 0x6e, 0x64, 0x6f, 0x4b, 0x61, 0x6d, 0x259, 0x72, 0xfa, 0x6e, 0x72, 0x69, -0x6b, 0x70, 0x61, 0x6b, 0x61, 0x6d, 0x25b, 0x72, 0xfa, 0x6e, 0x4d, 0x61, 0x6b, 0x75, 0x61, 0x55, 0x6d, 0x6f, 0x7a, 0x61, -0x6d, 0x62, 0x69, 0x6b, 0x69, 0x4d, 0x55, 0x4e, 0x44, 0x41, 0x14a, 0x6b, 0x61, 0x6d, 0x65, 0x72, 0x75, 0x14b, 0x4b, 0x77, -0x61, 0x73, 0x69, 0x6f, 0x4b, 0x61, 0x6d, 0x65, 0x72, 0x75, 0x6e, 0x54, 0x68, 0x6f, 0x6b, 0x20, 0x4e, 0x61, 0x74, 0x68, -0x441, 0x430, 0x445, 0x430, 0x20, 0x442, 0x44b, 0x43b, 0x430, 0x410, 0x440, 0x430, 0x441, 0x441, 0x44b, 0x44b, 0x439, 0x430, 0x49, 0x73, -0x68, 0x69, 0x73, 0x61, 0x6e, 0x67, 0x75, 0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x69, 0x79, 0x61, 0x54, 0x61, 0x73, 0x61, -0x77, 0x61, 0x71, 0x20, 0x73, 0x65, 0x6e, 0x6e, 0x69, 0xa559, 0xa524, 0xa55e, 0xa524, 0xa52b, 0xa569, 0x56, 0x61, 0x69, 0x4c, 0x61, -0x69, 0x62, 0x68, 0x69, 0x79, 0x61, 0x57, 0x61, 0x6c, 0x73, 0x65, 0x72, 0x53, 0x63, 0x68, 0x77, 0x69, 0x7a, 0x6e, 0x75, -0x61, 0x73, 0x75, 0x65, 0x4b, 0x65, 0x6d, 0x65, 0x6c, 0xfa, 0x6e, 0x61, 0x73, 0x74, 0x75, 0x72, 0x69, 0x61, 0x6e, 0x75, -0x4e, 0x64, 0x61, 0xa78c, 0x61, 0x4b, 0x61, 0x6d, 0x25b, 0x6c, 0xfb, 0x6e, 0x6b, 0x61, 0x6b, 0x254, 0x4b, 0x61, 0x6d, 0x25b, -0x72, 0x75, 0x6e, 0x6d, 0x65, 0x74, 0x61, 0x2bc, 0x4b, 0x61, 0x6d, 0x61, 0x6c, 0x75, 0x6e, 0x53, 0x68, 0x77, 0xf3, 0x14b, -0xf2, 0x20, 0x6e, 0x67, 0x69, 0x65, 0x6d, 0x62, 0x254, 0x254, 0x6e, 0x4b, 0xe0, 0x6d, 0x61, 0x6c, 0xfb, 0x6d, 0x9ae, 0x9c8, -0x9a4, 0x9c8, 0x9b2, 0x9cb, 0x9a8, 0x9cd, 0x987, 0x9a8, 0x9cd, 0x9a6, 0x9bf, 0x9af, 0x9bc, 0x9be, 0x1c65, 0x1c5f, 0x1c71, 0x1c5b, 0x1c5f, 0x1c72, -0x1c64, 0x1c64, 0x1c71, 0x1c70, 0x1c64, 0x1c6d, 0x1c5f, 0x4c, 0x61, 0x6b, 0x21f, 0xf3, 0x6c, 0x2bc, 0x69, 0x79, 0x61, 0x70, 0x69, 0x4d, -0xed, 0x6c, 0x61, 0x68, 0x61, 0x14b, 0x73, 0x6b, 0x61, 0x20, 0x54, 0x21f, 0x61, 0x6d, 0xe1, 0x6b, 0x21f, 0x6f, 0x10d, 0x68, -0x65, 0x2d5c, 0x2d30, 0x2d4e, 0x2d30, 0x2d63, 0x2d49, 0x2d56, 0x2d5c, 0x6a9, 0x648, 0x631, 0x62f, 0x6cc, 0x6cc, 0x20, 0x646, 0x627, 0x648, 0x6d5, -0x646, 0x62f, 0x6cc, 0x639, 0x6ce, 0x631, 0x627, 0x642, 0x626, 0x6ce, 0x631, 0x627, 0x646, 0x64, 0x6f, 0x6c, 0x6e, 0x6f, 0x73, 0x65, -0x72, 0x62, 0x161, 0x107, 0x69, 0x6e, 0x61, 0x4e, 0x69, 0x6d, 0x73, 0x6b, 0x61, 0x68, 0x6f, 0x72, 0x6e, 0x6a, 0x6f, 0x73, -0x65, 0x72, 0x62, 0x161, 0x107, 0x69, 0x6e, 0x61, 0x4e, 0x11b, 0x6d, 0x73, 0x6b, 0x61, 0x70, 0x72, 0x16b, 0x73, 0x69, 0x73, -0x6b, 0x61, 0x6e, 0x73, 0x77, 0x12b, 0x74, 0x61, 0x69, 0x61, 0x6e, 0x61, 0x72, 0xe2, 0x161, 0x6b, 0x69, 0x65, 0x6c, 0xe2, -0x53, 0x75, 0x6f, 0x6d, 0xe2, 0x92e, 0x948, 0x925, 0x93f, 0x932, 0x940, 0x645, 0x627, 0x632, 0x631, 0x648, 0x646, 0x6cc, 0x644, 0x6ca, -0x631, 0x6cc, 0x20, 0x634, 0x648, 0x645, 0x627, 0x644, 0x6cc, 0x7cb5, 0x8a9e, 0x4e2d, 0x83ef, 0x4eba, 0x6c11, 0x5171, 0x548c, 0x570b, 0x9999, 0x6e2f, -0x7279, 0x5225, 0x884c, 0x653f, 0x5340, 0x7ca4, 0x8bed, 0x4e2d, 0x534e, 0x4eba, 0x6c11, 0x5171, 0x548c, 0x56fd, 0x42, 0x69, 0x6e, 0x69, 0x73, 0x61, -0x79, 0x61, 0x4e, 0x61, 0x69, 0x6a, 0xed, 0x72, 0x69, 0xe1, 0x20, 0x50, 0xed, 0x6a, 0x69, 0x6e, 0x4e, 0x61, 0x69, 0x6a, -0xed, 0x72, 0x69, 0x61 +0xf9, 0x62, 0xe1, 0x4e, 0xe0, 0xec, 0x6a, 0xed, 0x72, 0xed, 0xe0, 0x42, 0x25b, 0x300, 0x6e, 0x25b, 0x300, 0x69, 0x73, 0x69, +0x5a, 0x75, 0x6c, 0x75, 0x69, 0x4e, 0x69, 0x6e, 0x67, 0x69, 0x7a, 0x69, 0x6d, 0x75, 0x20, 0x41, 0x66, 0x72, 0x69, 0x6b, +0x61, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x20, 0x6e, 0x79, 0x6e, 0x6f, 0x72, 0x73, 0x6b, 0x4e, 0x6f, 0x72, 0x65, 0x67, 0x62, +0x6f, 0x73, 0x61, 0x6e, 0x73, 0x6b, 0x69, 0x431, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x438, 0x47, 0x61, 0x65, 0x6c, 0x67, +0x45, 0x6c, 0x6c, 0x61, 0x6e, 0x20, 0x56, 0x61, 0x6e, 0x6e, 0x69, 0x6e, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x77, 0x65, 0x6b, +0x52, 0x79, 0x77, 0x76, 0x61, 0x6e, 0x65, 0x74, 0x68, 0x20, 0x55, 0x6e, 0x79, 0x73, 0x41, 0x6b, 0x61, 0x6e, 0x47, 0x61, +0x61, 0x6e, 0x61, 0x915, 0x94b, 0x902, 0x915, 0x923, 0x940, 0x49, 0x67, 0x62, 0x6f, 0x4e, 0x61, 0x1ecb, 0x6a, 0x1ecb, 0x72, 0x1ecb, +0x61, 0x4b, 0x69, 0x6b, 0x61, 0x6d, 0x62, 0x61, 0x66, 0x75, 0x72, 0x6c, 0x61, 0x6e, 0x49, 0x74, 0x61, 0x6c, 0x69, 0x65, +0x45, 0x28b, 0x65, 0x67, 0x62, 0x65, 0x47, 0x68, 0x61, 0x6e, 0x61, 0x20, 0x6e, 0x75, 0x74, 0x6f, 0x6d, 0x65, 0x54, 0x6f, +0x67, 0x6f, 0x20, 0x6e, 0x75, 0x74, 0x6f, 0x6d, 0x65, 0x2bb, 0x14c, 0x6c, 0x65, 0x6c, 0x6f, 0x20, 0x48, 0x61, 0x77, 0x61, +0x69, 0x2bb, 0x69, 0x2bb, 0x41, 0x6d, 0x65, 0x6c, 0x69, 0x6b, 0x61, 0x20, 0x48, 0x75, 0x69, 0x20, 0x50, 0x16b, 0x20, 0x2bb, +0x49, 0x61, 0x46, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x6f, 0x50, 0x69, 0x6c, 0x69, 0x70, 0x69, 0x6e, 0x61, 0x73, 0x53, +0x63, 0x68, 0x77, 0x69, 0x69, 0x7a, 0x65, 0x72, 0x74, 0xfc, 0xfc, 0x74, 0x73, 0x63, 0x68, 0x53, 0x63, 0x68, 0x77, 0x69, +0x69, 0x7a, 0x46, 0x72, 0x61, 0x6e, 0x6b, 0x72, 0x69, 0x69, 0x63, 0x68, 0x4c, 0x69, 0xe4, 0x63, 0x68, 0x74, 0x65, 0x73, +0x63, 0x68, 0x74, 0xe4, 0x69, 0xa188, 0xa320, 0xa259, 0xa34f, 0xa1e9, 0x4e, 0x65, 0x64, 0x64, 0x65, 0x72, 0x73, 0x61, 0x73, 0x73, +0x2019, 0x73, 0x63, 0x68, 0x44, 0xfc, 0xfc, 0x74, 0x73, 0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0x4e, 0x65, 0x64, 0x64, 0x65, +0x72, 0x6c, 0x61, 0x6e, 0x6e, 0x65, 0x6e, 0x64, 0x61, 0x76, 0x76, 0x69, 0x73, 0xe1, 0x6d, 0x65, 0x67, 0x69, 0x65, 0x6c, +0x6c, 0x61, 0x4e, 0x6f, 0x72, 0x67, 0x61, 0x53, 0x75, 0x6f, 0x70, 0x6d, 0x61, 0x52, 0x75, 0x6f, 0x167, 0x167, 0x61, 0x45, +0x6b, 0x65, 0x67, 0x75, 0x73, 0x69, 0x69, 0x4b, 0x69, 0x74, 0x61, 0x69, 0x74, 0x61, 0x50, 0x75, 0x6c, 0x61, 0x61, 0x72, +0x42, 0x75, 0x72, 0x6b, 0x69, 0x62, 0x61, 0x61, 0x20, 0x46, 0x61, 0x61, 0x73, 0x6f, 0x4b, 0x61, 0x6d, 0x65, 0x72, 0x75, +0x75, 0x6e, 0x47, 0x61, 0x6d, 0x6d, 0x62, 0x69, 0x47, 0x61, 0x6e, 0x61, 0x61, 0x47, 0x69, 0x6e, 0x65, 0x47, 0x69, 0x6e, +0x65, 0x2d, 0x42, 0x69, 0x73, 0x61, 0x61, 0x77, 0x6f, 0x4c, 0x69, 0x62, 0x65, 0x72, 0x69, 0x79, 0x61, 0x61, 0x4d, 0x75, +0x72, 0x69, 0x74, 0x61, 0x6e, 0x69, 0x4e, 0x69, 0x6a, 0x65, 0x65, 0x72, 0x4e, 0x69, 0x6a, 0x65, 0x72, 0x69, 0x79, 0x61, +0x61, 0x53, 0x65, 0x72, 0x61, 0x61, 0x20, 0x6c, 0x69, 0x79, 0x6f, 0x6e, 0x47, 0x69, 0x6b, 0x75, 0x79, 0x75, 0x4b, 0x69, +0x73, 0x61, 0x6d, 0x70, 0x75, 0x72, 0x73, 0x65, 0x6e, 0x61, 0x69, 0x73, 0x69, 0x4e, 0x64, 0x65, 0x62, 0x65, 0x6c, 0x65, +0x4b, 0x69, 0x68, 0x6f, 0x72, 0x6f, 0x6d, 0x62, 0x6f, 0x2d5c, 0x2d30, 0x2d5b, 0x2d4d, 0x2d43, 0x2d49, 0x2d5c, 0x2d4d, 0x2d4e, 0x2d56, 0x2d54, +0x2d49, 0x2d31, 0x54, 0x61, 0x73, 0x68, 0x65, 0x6c, 0x1e25, 0x69, 0x79, 0x74, 0x6c, 0x6d, 0x263, 0x72, 0x69, 0x62, 0x54, 0x61, +0x71, 0x62, 0x61, 0x79, 0x6c, 0x69, 0x74, 0x4c, 0x65, 0x7a, 0x7a, 0x61, 0x79, 0x65, 0x72, 0x52, 0x75, 0x6e, 0x79, 0x61, +0x6e, 0x6b, 0x6f, 0x72, 0x65, 0x48, 0x69, 0x62, 0x65, 0x6e, 0x61, 0x48, 0x75, 0x74, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, +0x61, 0x4b, 0x79, 0x69, 0x76, 0x75, 0x6e, 0x6a, 0x6f, 0x62, 0x61, 0x6d, 0x61, 0x6e, 0x61, 0x6b, 0x61, 0x6e, 0x4b, 0x129, +0x65, 0x6d, 0x62, 0x75, 0x13e3, 0x13b3, 0x13a9, 0x13cc, 0x13ca, 0x20, 0x13a2, 0x13f3, 0x13be, 0x13b5, 0x13cd, 0x13d4, 0x13c5, 0x20, 0x13cd, 0x13a6, +0x13da, 0x13a9, 0x6b, 0x72, 0x65, 0x6f, 0x6c, 0x20, 0x6d, 0x6f, 0x72, 0x69, 0x73, 0x69, 0x65, 0x6e, 0x4d, 0x6f, 0x72, 0x69, +0x73, 0x43, 0x68, 0x69, 0x6d, 0x61, 0x6b, 0x6f, 0x6e, 0x64, 0x65, 0x4b, 0x268, 0x6c, 0x61, 0x61, 0x6e, 0x67, 0x69, 0x54, +0x61, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0xed, 0x61, 0x4c, 0x75, 0x67, 0x61, 0x6e, 0x64, 0x61, 0x59, 0x75, 0x67, 0x61, 0x6e, +0x64, 0x61, 0x49, 0x63, 0x68, 0x69, 0x62, 0x65, 0x6d, 0x62, 0x61, 0x6b, 0x61, 0x62, 0x75, 0x76, 0x65, 0x72, 0x64, 0x69, +0x61, 0x6e, 0x75, 0x4b, 0x61, 0x62, 0x75, 0x20, 0x56, 0x65, 0x72, 0x64, 0x69, 0x4b, 0x129, 0x6d, 0x129, 0x72, 0x169, 0x4b, +0x61, 0x6c, 0x65, 0x6e, 0x6a, 0x69, 0x6e, 0x45, 0x6d, 0x65, 0x74, 0x61, 0x62, 0x20, 0x4b, 0x65, 0x6e, 0x79, 0x61, 0x4b, +0x68, 0x6f, 0x65, 0x6b, 0x68, 0x6f, 0x65, 0x67, 0x6f, 0x77, 0x61, 0x62, 0x4e, 0x61, 0x6d, 0x69, 0x62, 0x69, 0x61, 0x62, +0x4b, 0x69, 0x6d, 0x61, 0x63, 0x68, 0x61, 0x6d, 0x65, 0x4b, 0xf6, 0x6c, 0x73, 0x63, 0x68, 0x44, 0x6f, 0xfc, 0x74, 0x73, +0x63, 0x68, 0x6c, 0x61, 0x6e, 0x64, 0x4d, 0x61, 0x61, 0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x69, 0x61, 0x4f, 0x6c, 0x75, +0x73, 0x6f, 0x67, 0x61, 0x4c, 0x75, 0x6c, 0x75, 0x68, 0x69, 0x61, 0x4b, 0x69, 0x70, 0x61, 0x72, 0x65, 0x54, 0x61, 0x64, +0x68, 0x61, 0x6e, 0x69, 0x61, 0x4b, 0x69, 0x74, 0x65, 0x73, 0x6f, 0x4b, 0x65, 0x6e, 0x69, 0x61, 0x4b, 0x6f, 0x79, 0x72, +0x61, 0x20, 0x63, 0x69, 0x69, 0x6e, 0x69, 0x4d, 0x61, 0x61, 0x6c, 0x69, 0x4b, 0x69, 0x72, 0x75, 0x77, 0x61, 0x44, 0x68, +0x6f, 0x6c, 0x75, 0x6f, 0x52, 0x75, 0x6b, 0x69, 0x67, 0x61, 0x54, 0x61, 0x6d, 0x61, 0x7a, 0x69, 0x263, 0x74, 0x20, 0x6e, +0x20, 0x6c, 0x61, 0x1e6d, 0x6c, 0x61, 0x1e63, 0x4d, 0x65, 0x1e5b, 0x1e5b, 0x75, 0x6b, 0x4b, 0x6f, 0x79, 0x72, 0x61, 0x62, 0x6f, +0x72, 0x6f, 0x20, 0x73, 0x65, 0x6e, 0x6e, 0x69, 0x4b, 0x69, 0x73, 0x68, 0x61, 0x6d, 0x62, 0x61, 0x61, 0x92c, 0x921, 0x93c, +0x94b, 0x43d, 0x43e, 0x445, 0x447, 0x438, 0x439, 0x43d, 0x420, 0x43e, 0x441, 0x441, 0x438, 0x54, 0x73, 0x68, 0x69, 0x6c, 0x75, 0x62, +0x61, 0x44, 0x69, 0x74, 0x75, 0x6e, 0x67, 0x61, 0x20, 0x77, 0x61, 0x20, 0x4b, 0x6f, 0x6e, 0x67, 0x75, 0x4c, 0xeb, 0x74, +0x7a, 0x65, 0x62, 0x75, 0x65, 0x72, 0x67, 0x65, 0x73, 0x63, 0x68, 0x4c, 0xeb, 0x74, 0x7a, 0x65, 0x62, 0x75, 0x65, 0x72, +0x67, 0x41, 0x67, 0x68, 0x65, 0x6d, 0x4b, 0xe0, 0x6d, 0xe0, 0x6c, 0xfb, 0x14b, 0x181, 0xe0, 0x73, 0xe0, 0x61, 0x4b, 0xe0, +0x6d, 0x25b, 0x300, 0x72, 0xfb, 0x6e, 0x5a, 0x61, 0x72, 0x6d, 0x61, 0x63, 0x69, 0x69, 0x6e, 0x65, 0x4e, 0x69, 0x17e, 0x65, +0x72, 0x64, 0x75, 0xe1, 0x6c, 0xe1, 0x6a, 0x6f, 0x6f, 0x6c, 0x61, 0x53, 0x65, 0x6e, 0x65, 0x67, 0x61, 0x6c, 0x65, 0x77, +0x6f, 0x6e, 0x64, 0x6f, 0x4b, 0x61, 0x6d, 0x259, 0x72, 0xfa, 0x6e, 0x72, 0x69, 0x6b, 0x70, 0x61, 0x6b, 0x61, 0x6d, 0x25b, +0x72, 0xfa, 0x6e, 0x4d, 0x61, 0x6b, 0x75, 0x61, 0x55, 0x6d, 0x6f, 0x7a, 0x61, 0x6d, 0x62, 0x69, 0x6b, 0x69, 0x4d, 0x55, +0x4e, 0x44, 0x41, 0x14a, 0x6b, 0x61, 0x6d, 0x65, 0x72, 0x75, 0x14b, 0x4b, 0x77, 0x61, 0x73, 0x69, 0x6f, 0x4b, 0x61, 0x6d, +0x65, 0x72, 0x75, 0x6e, 0x54, 0x68, 0x6f, 0x6b, 0x20, 0x4e, 0x61, 0x74, 0x68, 0x441, 0x430, 0x445, 0x430, 0x20, 0x442, 0x44b, +0x43b, 0x430, 0x410, 0x440, 0x430, 0x441, 0x441, 0x44b, 0x44b, 0x439, 0x430, 0x49, 0x73, 0x68, 0x69, 0x73, 0x61, 0x6e, 0x67, 0x75, +0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x69, 0x79, 0x61, 0x54, 0x61, 0x73, 0x61, 0x77, 0x61, 0x71, 0x20, 0x73, 0x65, 0x6e, +0x6e, 0x69, 0xa559, 0xa524, 0xa55e, 0xa524, 0xa52b, 0xa569, 0x56, 0x61, 0x69, 0x4c, 0x61, 0x69, 0x62, 0x68, 0x69, 0x79, 0x61, 0x57, +0x61, 0x6c, 0x73, 0x65, 0x72, 0x53, 0x63, 0x68, 0x77, 0x69, 0x7a, 0x6e, 0x75, 0x61, 0x73, 0x75, 0x65, 0x4b, 0x65, 0x6d, +0x65, 0x6c, 0xfa, 0x6e, 0x61, 0x73, 0x74, 0x75, 0x72, 0x69, 0x61, 0x6e, 0x75, 0x4e, 0x64, 0x61, 0xa78c, 0x61, 0x4b, 0x61, +0x6d, 0x25b, 0x6c, 0xfb, 0x6e, 0x6b, 0x61, 0x6b, 0x254, 0x4b, 0x61, 0x6d, 0x25b, 0x72, 0x75, 0x6e, 0x6d, 0x65, 0x74, 0x61, +0x2bc, 0x4b, 0x61, 0x6d, 0x61, 0x6c, 0x75, 0x6e, 0x53, 0x68, 0x77, 0xf3, 0x14b, 0xf2, 0x20, 0x6e, 0x67, 0x69, 0x65, 0x6d, +0x62, 0x254, 0x254, 0x6e, 0x4b, 0xe0, 0x6d, 0x61, 0x6c, 0xfb, 0x6d, 0x921, 0x94b, 0x917, 0x930, 0x940, 0x9ae, 0x9c8, 0x9a4, 0x9c8, +0x9b2, 0x9cb, 0x9a8, 0x9cd, 0x987, 0x9a8, 0x9cd, 0x9a6, 0x9bf, 0x9af, 0x9bc, 0x9be, 0x1c65, 0x1c5f, 0x1c71, 0x1c5b, 0x1c5f, 0x1c72, 0x1c64, 0x1c64, +0x1c71, 0x1c70, 0x1c64, 0x1c6d, 0x1c5f, 0x4c, 0x61, 0x6b, 0x21f, 0xf3, 0x6c, 0x2bc, 0x69, 0x79, 0x61, 0x70, 0x69, 0x4d, 0xed, 0x6c, +0x61, 0x68, 0x61, 0x14b, 0x73, 0x6b, 0x61, 0x20, 0x54, 0x21f, 0x61, 0x6d, 0xe1, 0x6b, 0x21f, 0x6f, 0x10d, 0x68, 0x65, 0x2d5c, +0x2d30, 0x2d4e, 0x2d30, 0x2d63, 0x2d49, 0x2d56, 0x2d5c, 0x6a9, 0x648, 0x631, 0x62f, 0x6cc, 0x6cc, 0x20, 0x646, 0x627, 0x648, 0x6d5, 0x646, 0x62f, +0x6cc, 0x639, 0x6ce, 0x631, 0x627, 0x642, 0x626, 0x6ce, 0x631, 0x627, 0x646, 0x64, 0x6f, 0x6c, 0x6e, 0x6f, 0x73, 0x65, 0x72, 0x62, +0x161, 0x107, 0x69, 0x6e, 0x61, 0x4e, 0x69, 0x6d, 0x73, 0x6b, 0x61, 0x68, 0x6f, 0x72, 0x6e, 0x6a, 0x6f, 0x73, 0x65, 0x72, +0x62, 0x161, 0x107, 0x69, 0x6e, 0x61, 0x4e, 0x11b, 0x6d, 0x73, 0x6b, 0x61, 0x61, 0x6e, 0x61, 0x72, 0xe2, 0x161, 0x6b, 0x69, +0x65, 0x6c, 0xe2, 0x53, 0x75, 0x6f, 0x6d, 0xe2, 0x92e, 0x948, 0x925, 0x93f, 0x932, 0x940, 0x645, 0x627, 0x632, 0x631, 0x648, 0x646, +0x6cc, 0x644, 0x6ca, 0x631, 0x6cc, 0x20, 0x634, 0x648, 0x645, 0x627, 0x644, 0x6cc, 0x7cb5, 0x8a9e, 0x4e2d, 0x83ef, 0x4eba, 0x6c11, 0x5171, 0x548c, +0x570b, 0x9999, 0x6e2f, 0x7279, 0x5225, 0x884c, 0x653f, 0x5340, 0x7ca4, 0x8bed, 0x4e2d, 0x534e, 0x4eba, 0x6c11, 0x5171, 0x548c, 0x56fd, 0x42, 0x69, 0x6e, +0x69, 0x73, 0x61, 0x79, 0x61, 0x4e, 0x61, 0x69, 0x6a, 0xed, 0x72, 0x69, 0xe1, 0x20, 0x50, 0xed, 0x6a, 0x69, 0x6e, 0x4e, +0x61, 0x69, 0x6a, 0xed, 0x72, 0x69, 0x61 }; static const char language_name_list[] = diff -Naur a/qtbase/src/corelib/text/qlocale.h b/qtbase/src/corelib/text/qlocale.h --- a/qtbase/src/corelib/text/qlocale.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/text/qlocale.h 2022-01-25 17:23:44.106496427 +0000 @@ -1070,9 +1070,10 @@ QString toString(const QDate &date, FormatType format = LongFormat) const; QString toString(const QTime &time, FormatType format = LongFormat) const; QString toString(const QDateTime &dateTime, FormatType format = LongFormat) const; - /* Removing default value for `format' is done intentionally, - * after all tests we will remove non-calendar-aware version of these functions, - * and add a default value for both calendar instance, and format + /* We can't pass a default for QCalendar (its declaration mentions + * QLocale::FormatType, so it has to #include this header, which thus can't + * #include its, so we can't instantiate QCalendar() as default). This + * precludes any default for format, too. */ QString toString(const QDate &date, QStringView formatStr, QCalendar cal) const; QString toString(const QDate &date, FormatType format, QCalendar cal) const; diff -Naur a/qtbase/src/corelib/text/qlocale.qdoc b/qtbase/src/corelib/text/qlocale.qdoc --- a/qtbase/src/corelib/text/qlocale.qdoc 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/text/qlocale.qdoc 2022-01-25 17:23:44.083496510 +0000 @@ -92,7 +92,7 @@ \note For the current keyboard input locale take a look at QInputMethod::locale(). - QLocale's data is based on Common Locale Data Repository v37. + QLocale's data is based on Common Locale Data Repository v38. \sa QString::arg(), QString::toInt(), QString::toDouble(), QInputMethod::locale() diff -Naur a/qtbase/src/corelib/text/qstring.cpp b/qtbase/src/corelib/text/qstring.cpp --- a/qtbase/src/corelib/text/qstring.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/text/qstring.cpp 2022-01-25 17:23:44.197496100 +0000 @@ -1331,11 +1331,11 @@ \macro QT_RESTRICTED_CAST_FROM_ASCII \relates QString - Defining this macro disables most automatic conversions from source - literals and 8-bit data to unicode QStrings, but allows the use of + Disables most automatic conversions from source literals and 8-bit data + to unicode QStrings, but allows the use of the \c{QChar(char)} and \c{QString(const char (&ch)[N]} constructors, - and the \c{QString::operator=(const char (&ch)[N])} assignment operator - giving most of the type-safety benefits of \c QT_NO_CAST_FROM_ASCII + and the \c{QString::operator=(const char (&ch)[N])} assignment operator. + This gives most of the type-safety benefits of \c QT_NO_CAST_FROM_ASCII but does not require user code to wrap character and string literals with QLatin1Char, QLatin1String or similar. @@ -1358,7 +1358,7 @@ \macro QT_NO_CAST_TO_ASCII \relates QString - disables automatic conversion from QString to 8-bit strings (char *) + Disables automatic conversion from QString to 8-bit strings (char *). \sa QT_NO_CAST_FROM_ASCII, QT_RESTRICTED_CAST_FROM_ASCII, QT_NO_CAST_FROM_BYTEARRAY */ @@ -1616,23 +1616,18 @@ Latin-1, but there is always the risk that an implicit conversion from or to \c{const char *} is done using the wrong 8-bit encoding. To minimize these risks, you can turn off these implicit - conversions by defining the following two preprocessor symbols: + conversions by defining some of the following preprocessor symbols: \list - \li \c QT_NO_CAST_FROM_ASCII disables automatic conversions from + \li \l QT_NO_CAST_FROM_ASCII disables automatic conversions from C string literals and pointers to Unicode. - \li \c QT_RESTRICTED_CAST_FROM_ASCII allows automatic conversions + \li \l QT_RESTRICTED_CAST_FROM_ASCII allows automatic conversions from C characters and character arrays, but disables automatic conversions from character pointers to Unicode. - \li \c QT_NO_CAST_TO_ASCII disables automatic conversion from QString + \li \l QT_NO_CAST_TO_ASCII disables automatic conversion from QString to C strings. \endlist - One way to define these preprocessor symbols globally for your - application is to add the following entry to your \l {Creating Project Files}{qmake project file}: - - \snippet code/src_corelib_tools_qstring.cpp 0 - You then need to explicitly call fromUtf8(), fromLatin1(), or fromLocal8Bit() to construct a QString from an 8-bit string, or use the lightweight QLatin1String class, for @@ -1769,7 +1764,7 @@ and the \c{'+'} will automatically be performed as the \c{QStringBuilder} \c{'%'} everywhere. - \section1 Maximum size and out-of-memory conditions + \section1 Maximum Size and Out-of-memory Conditions The current version of QString is limited to just under 2 GB (2^31 bytes) in size. The exact value is architecture-dependent, since it depends on the @@ -3296,7 +3291,7 @@ replace_helper(indices, pos, 1, after.constData(), after.d->size); - if (Q_LIKELY(index == -1)) // Nothing left to replace + if (Q_LIKELY(index == size())) // Nothing left to replace break; // The call to replace_helper just moved what index points at: index += pos*(after.d->size - 1); @@ -4626,10 +4621,16 @@ Returns the number of times the regular expression \a re matches in the string. - This function counts overlapping matches, so in the example - below, there are four instances of "ana" or "ama": + For historical reasons, this function counts overlapping matches, + so in the example below, there are four instances of "ana" or + "ama": \snippet qstring/main.cpp 95 + + This behavior is different from simply iterating over the matches + in the string using QRegularExpressionMatchIterator. + + \sa QRegularExpression::globalMatch() */ int QString::count(const QRegularExpression &re) const { @@ -4640,7 +4641,7 @@ int count = 0; int index = -1; int len = length(); - while (index < len - 1) { + while (index <= len - 1) { QRegularExpressionMatch match = re.match(*this, index + 1); if (!match.hasMatch()) break; @@ -12290,7 +12291,7 @@ const auto needle = needle0.data(); const auto *end = haystack; haystack += from; - const std::size_t sl_minus_1 = sl - 1; + const std::size_t sl_minus_1 = sl ? sl - 1 : 0; const auto *n = needle + sl_minus_1; const auto *h = haystack + sl_minus_1; std::size_t hashNeedle = 0, hashHaystack = 0; diff -Naur a/qtbase/src/corelib/text/qstring.h b/qtbase/src/corelib/text/qstring.h --- a/qtbase/src/corelib/text/qstring.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/text/qstring.h 2022-01-25 17:23:44.109496416 +0000 @@ -1231,6 +1231,10 @@ { return operator=(QChar::fromLatin1(c)); } inline QT_ASCII_CAST_WARN QCharRef &operator=(uchar c) { return operator=(QChar::fromLatin1(c)); } +#else + // prevent char -> int promotion, bypassing QT_NO_CAST_FROM_ASCII + QCharRef &operator=(char c) = delete; + QCharRef &operator=(uchar c) = delete; #endif inline QCharRef &operator=(const QCharRef &c) { return operator=(QChar(c)); } inline QCharRef &operator=(ushort rc) { return operator=(QChar(rc)); } @@ -2024,13 +2028,13 @@ inline int QStringRef::localeAwareCompare(const QStringRef &s) const { return QString::localeAwareCompare_helper(constData(), length(), s.constData(), s.length()); } inline int QStringRef::localeAwareCompare(QStringView s) const -{ return QString::localeAwareCompare_helper(constData(), length(), s.data(), s.size()); } +{ return QString::localeAwareCompare_helper(constData(), length(), s.data(), int(s.size())); } inline int QStringRef::localeAwareCompare(const QStringRef &s1, const QString &s2) { return QString::localeAwareCompare_helper(s1.constData(), s1.length(), s2.constData(), s2.length()); } inline int QStringRef::localeAwareCompare(const QStringRef &s1, const QStringRef &s2) { return QString::localeAwareCompare_helper(s1.constData(), s1.length(), s2.constData(), s2.length()); } inline int QStringRef::localeAwareCompare(QStringView s1, QStringView s2) -{ return QString::localeAwareCompare_helper(s1.data(), s1.size(), s2.data(), s2.size()); } +{ return QString::localeAwareCompare_helper(s1.data(), int(s1.size()), s2.data(), int(s2.size())); } #if QT_STRINGVIEW_LEVEL < 2 inline bool QStringRef::contains(const QString &s, Qt::CaseSensitivity cs) const diff -Naur a/qtbase/src/corelib/text/qstringview.cpp b/qtbase/src/corelib/text/qstringview.cpp --- a/qtbase/src/corelib/text/qstringview.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/text/qstringview.cpp 2022-01-25 17:23:44.125496359 +0000 @@ -705,8 +705,6 @@ If \a cs is Qt::CaseSensitive (the default), the comparison is case sensitive; otherwise the comparison is case-insensitive. - - \sa operator==(), operator<(), operator>() */ /*! @@ -720,8 +718,6 @@ If \a cs is Qt::CaseSensitive (the default), the comparison is case sensitive; otherwise the comparison is case-insensitive. - - \sa operator==(), operator<(), operator>() */ /*! diff -Naur a/qtbase/src/corelib/text/qt_attribution.json b/qtbase/src/corelib/text/qt_attribution.json --- a/qtbase/src/corelib/text/qt_attribution.json 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/text/qt_attribution.json 2022-01-25 17:23:44.086496499 +0000 @@ -30,7 +30,7 @@ world's languages, with the largest and most extensive standard repository of locale data available.", "Homepage": "http://cldr.unicode.org/", - "Version": "v36", + "Version": "v38", "License": "// as specified in https://spdx.org/licenses/Unicode-DFS-2016.html", "License": "Unicode License Agreement - Data Files and Software (2016)", "LicenseId": "Unicode-DFS-2016", diff -Naur a/qtbase/src/corelib/text/UNICODE_LICENSE.txt b/qtbase/src/corelib/text/UNICODE_LICENSE.txt --- a/qtbase/src/corelib/text/UNICODE_LICENSE.txt 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/text/UNICODE_LICENSE.txt 2022-01-25 17:23:44.082496513 +0000 @@ -13,7 +13,7 @@ COPYRIGHT AND PERMISSION NOTICE -Copyright © 1991-2019 Unicode, Inc. All rights reserved. +Copyright © 1991-2020 Unicode, Inc. All rights reserved. Distributed under the Terms of Use in https://www.unicode.org/copyright.html. Permission is hereby granted, free of charge, to any person obtaining diff -Naur a/qtbase/src/corelib/thread/qmutex.cpp b/qtbase/src/corelib/thread/qmutex.cpp --- a/qtbase/src/corelib/thread/qmutex.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/thread/qmutex.cpp 2022-01-25 17:23:44.148496276 +0000 @@ -152,6 +152,7 @@ /*! \enum QMutex::RecursionMode + \obsolete Use QRecursiveMutex to create a recursive mutex. \value Recursive In this mode, a thread can lock the same mutex multiple times and the mutex won't be unlocked @@ -173,6 +174,7 @@ /*! Constructs a new mutex. The mutex is created in an unlocked state. + \obsolete Use QRecursiveMutex to create a recursive mutex. If \a mode is QMutex::Recursive, a thread can lock the same mutex multiple times and the mutex won't be unlocked until a @@ -197,7 +199,7 @@ QMutex::~QMutex() { QMutexData *d = d_ptr.loadRelaxed(); - if (isRecursive()) { + if (QBasicMutex::isRecursive()) { delete static_cast(d); } else if (d) { #ifndef QT_LINUX_FUTEX @@ -613,7 +615,7 @@ // is set to the BigNumber magic value set in unlockInternal() int old_waiters; do { - old_waiters = d->waiters.loadRelaxed(); + old_waiters = d->waiters.loadAcquire(); if (old_waiters == -QMutexPrivate::BigNumber) { // we are unlocking, and the thread that unlocks is about to change d to 0 // we try to acquire the mutex by changing to dummyLocked() diff -Naur a/qtbase/src/corelib/thread/qmutex.h b/qtbase/src/corelib/thread/qmutex.h --- a/qtbase/src/corelib/thread/qmutex.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/thread/qmutex.h 2022-01-25 17:23:44.148496276 +0000 @@ -129,13 +129,21 @@ class Q_CORE_EXPORT QMutex : public QBasicMutex { public: -#if defined(Q_COMPILER_CONSTEXPR) +#if defined(Q_COMPILER_CONSTEXPR) && !defined(Q_CC_INTEL) constexpr QMutex() = default; #else QMutex() { d_ptr.storeRelaxed(nullptr); } #endif +#if QT_DEPRECATED_SINCE(5,15) enum RecursionMode { NonRecursive, Recursive }; + QT_DEPRECATED_VERSION_X(5, 15, "Use QRecursiveMutex instead of a recursive QMutex") explicit QMutex(RecursionMode mode); + + QT_DEPRECATED_VERSION_X(5, 15, "Use QRecursiveMutex instead of a recursive QMutex") + bool isRecursive() const noexcept + { return QBasicMutex::isRecursive(); } +#endif + ~QMutex(); // BasicLockable concept @@ -166,9 +174,6 @@ } #endif - bool isRecursive() const noexcept - { return QBasicMutex::isRecursive(); } - private: Q_DISABLE_COPY(QMutex) friend class QMutexLocker; diff -Naur a/qtbase/src/corelib/thread/qsemaphore.cpp b/qtbase/src/corelib/thread/qsemaphore.cpp --- a/qtbase/src/corelib/thread/qsemaphore.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/thread/qsemaphore.cpp 2022-01-25 17:23:44.194496111 +0000 @@ -357,47 +357,31 @@ quintptr prevValue = u.fetchAndAddRelease(nn); if (futexNeedsWake(prevValue)) { #ifdef FUTEX_OP - if (!futexHasWaiterCount) { - /* - On 32-bit systems, all waiters are waiting on the same address, - so we'll wake them all and ask the kernel to clear the high bit. - - atomic { - int oldval = u; - u = oldval & ~(1 << 31); - futexWake(u, INT_MAX); - if (oldval == 0) // impossible condition - futexWake(u, INT_MAX); - } - */ - quint32 op = FUTEX_OP_ANDN | FUTEX_OP_OPARG_SHIFT; - quint32 oparg = 31; - quint32 cmp = FUTEX_OP_CMP_EQ; - quint32 cmparg = 0; - futexWakeOp(u, INT_MAX, INT_MAX, u, FUTEX_OP(op, oparg, cmp, cmparg)); - } else { + if (futexHasWaiterCount) { /* On 64-bit systems, the single-token waiters wait on the low half and the multi-token waiters wait on the upper half. So we ask the kernel to wake up n single-token waiters and all multi-token - waiters (if any), then clear the multi-token wait bit. + waiters (if any), and clear the multi-token wait bit. atomic { int oldval = *upper; - *upper = oldval & ~(1 << 31); + *upper = oldval | 0; futexWake(lower, n); - if (oldval < 0) // sign bit set + if (oldval != 0) // always true futexWake(upper, INT_MAX); } */ - quint32 op = FUTEX_OP_ANDN | FUTEX_OP_OPARG_SHIFT; - quint32 oparg = 31; - quint32 cmp = FUTEX_OP_CMP_LT; + quint32 op = FUTEX_OP_OR; + quint32 oparg = 0; + quint32 cmp = FUTEX_OP_CMP_NE; quint32 cmparg = 0; + u.fetchAndAndRelease(futexNeedsWakeAllBit - 1); futexWakeOp(*futexLow32(&u), n, INT_MAX, *futexHigh32(&u), FUTEX_OP(op, oparg, cmp, cmparg)); + return; } -#else - // Unset the bit and wake everyone. There are two possibibilies +#endif + // Unset the bit and wake everyone. There are two possibilities // under which a thread can set the bit between the AND and the // futexWake: // 1) it did see the new counter value, but it wasn't enough for @@ -405,8 +389,12 @@ // 2) it did not see the new counter value, in which case its // futexWait will fail. u.fetchAndAndRelease(futexNeedsWakeAllBit - 1); - futexWakeAll(u); -#endif + if (futexHasWaiterCount) { + futexWakeAll(*futexLow32(&u)); + futexWakeAll(*futexHigh32(&u)); + } else { + futexWakeAll(u); + } } return; } diff -Naur a/qtbase/src/corelib/thread/qthread_p.h b/qtbase/src/corelib/thread/qthread_p.h --- a/qtbase/src/corelib/thread/qthread_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/thread/qthread_p.h 2022-01-25 17:23:44.201496086 +0000 @@ -174,7 +174,7 @@ int returnCode; uint stackSize; - QThread::Priority priority; + std::underlying_type::type priority; static QThread *threadForId(int id); @@ -213,6 +213,13 @@ QCoreApplication::instance()->postEvent(q_ptr, new QEvent(QEvent::Quit)); } } + +#ifndef Q_OS_INTEGRITY +private: + // Used in QThread(Private)::start to avoid racy access to QObject::objectName, + // unset afterwards. On INTEGRITY we set the thread name before starting it. + QString objectName; +#endif }; #else // QT_CONFIG(thread) diff -Naur a/qtbase/src/corelib/thread/qthread_unix.cpp b/qtbase/src/corelib/thread/qthread_unix.cpp --- a/qtbase/src/corelib/thread/qthread_unix.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/thread/qthread_unix.cpp 2022-01-25 17:23:44.201496086 +0000 @@ -296,11 +296,13 @@ QMutexLocker locker(&thr->d_func()->mutex); // do we need to reset the thread priority? - if (int(thr->d_func()->priority) & ThreadPriorityResetFlag) { + if (thr->d_func()->priority & ThreadPriorityResetFlag) { thr->d_func()->setPriority(QThread::Priority(thr->d_func()->priority & ~ThreadPriorityResetFlag)); } - data->threadId.storeRelaxed(to_HANDLE(pthread_self())); + // threadId is set in QThread::start() + Q_ASSERT(pthread_equal(from_HANDLE(data->threadId.loadRelaxed()), + pthread_self())); set_thread_data(data); data->ref(); @@ -314,10 +316,10 @@ // Sets the name of the current thread. We can only do this // when the thread is starting, as we don't have a cross // platform way of setting the name of an arbitrary thread. - if (Q_LIKELY(thr->objectName().isEmpty())) + if (Q_LIKELY(thr->d_func()->objectName.isEmpty())) setCurrentThreadName(thr->metaObject()->className()); else - setCurrentThreadName(thr->objectName().toLocal8Bit()); + setCurrentThreadName(std::exchange(thr->d_func()->objectName, {}).toLocal8Bit()); } #endif @@ -384,6 +386,8 @@ d->interruptionRequested = false; d->isInFinish = false; + d->data->threadId.storeRelaxed(nullptr); + d->thread_done.wakeAll(); } #ifndef QT_NO_EXCEPTIONS @@ -667,7 +671,7 @@ // could not set scheduling hints, fallback to inheriting them // we'll try again from inside the thread pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED); - d->priority = Priority(priority | ThreadPriorityResetFlag); + d->priority = static_cast::type>(priority) | ThreadPriorityResetFlag; } break; } @@ -698,7 +702,10 @@ pthread_attr_setthreadname(&attr, metaObject()->className()); else pthread_attr_setthreadname(&attr, objectName().toLocal8Bit()); +#else + d->objectName = objectName(); #endif + pthread_t threadId; int code = pthread_create(&threadId, &attr, QThreadPrivate::start, this); if (code == EPERM) { @@ -755,6 +762,8 @@ if (!d->thread_done.wait(locker.mutex(), deadline)) return false; } + Q_ASSERT(d->data->threadId.loadRelaxed() == nullptr); + return true; } diff -Naur a/qtbase/src/corelib/thread/qthread_win.cpp b/qtbase/src/corelib/thread/qthread_win.cpp --- a/qtbase/src/corelib/thread/qthread_win.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/thread/qthread_win.cpp 2022-01-25 17:23:44.201496086 +0000 @@ -394,10 +394,9 @@ #if !defined(QT_NO_DEBUG) && defined(Q_CC_MSVC) && !defined(Q_OS_WINRT) // sets the name of the current thread. - QByteArray objectName = thr->objectName().toLocal8Bit(); - qt_set_thread_name(HANDLE(-1), - objectName.isEmpty() ? - thr->metaObject()->className() : objectName.constData()); + qt_set_thread_name(HANDLE(-1), thr->d_func()->objectName.isEmpty() + ? thr->metaObject()->className() + : std::exchange(thr->d_func()->objectName, {}).toLocal8Bit().constData()); #endif emit thr->started(QThread::QPrivateSignal()); @@ -503,6 +502,7 @@ if (d->running) return; + d->objectName = objectName(); d->running = true; d->finished = false; d->exited = false; @@ -548,7 +548,7 @@ int prio; d->priority = priority; - switch (d->priority) { + switch (priority) { case IdlePriority: prio = THREAD_PRIORITY_IDLE; break; @@ -686,7 +686,7 @@ int prio; priority = threadPriority; - switch (priority) { + switch (threadPriority) { case QThread::IdlePriority: prio = THREAD_PRIORITY_IDLE; break; diff -Naur a/qtbase/src/corelib/thread/qwaitcondition_unix.cpp b/qtbase/src/corelib/thread/qwaitcondition_unix.cpp --- a/qtbase/src/corelib/thread/qwaitcondition_unix.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/thread/qwaitcondition_unix.cpp 2022-01-25 17:23:44.148496276 +0000 @@ -213,7 +213,7 @@ { if (! mutex) return false; - if (mutex->isRecursive()) { + if (static_cast(mutex)->isRecursive()) { qWarning("QWaitCondition: cannot wait on recursive mutexes"); return false; } diff -Naur a/qtbase/src/corelib/time/qcalendarbackend_p.h b/qtbase/src/corelib/time/qcalendarbackend_p.h --- a/qtbase/src/corelib/time/qcalendarbackend_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/time/qcalendarbackend_p.h 2022-01-25 17:23:44.125496359 +0000 @@ -123,7 +123,7 @@ static QStringList availableCalendars(); protected: - QCalendarBackend(const QString &name, QCalendar::System id = QCalendar::System::User); + QCalendarBackend(const QString &name, QCalendar::System system = QCalendar::System::User); // Locale support: virtual const QCalendarLocale *localeMonthIndexData() const = 0; diff -Naur a/qtbase/src/corelib/time/qcalendar.cpp b/qtbase/src/corelib/time/qcalendar.cpp --- a/qtbase/src/corelib/time/qcalendar.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/time/qcalendar.cpp 2022-01-25 17:23:44.125496359 +0000 @@ -86,17 +86,20 @@ bool registerName(QCalendarBackend *calendar, const QString &name) { - if (byName.find(name) != byName.end()) { - qWarning() << "Calendar name" << name - << "is already taken, new calendar will not be registered."; - return false; + Q_ASSERT(!name.isEmpty()); + const auto found = byName.find(name); + if (found != byName.end()) { + // Re-registering a calendar with a name it has already is OK (and + // can be used to test whether its constructor successfully + // registered its primary name). + return found.value() == calendar; } byName.insert(name, calendar); return true; } void addCalendar(QCalendarBackend *calendar, const QString &name, QCalendar::System id) { - if (!registerName(calendar, name)) + if (name.isEmpty() || !registerName(calendar, name)) return; Q_ASSERT(byId.size() >= size_t(id)); if (id == QCalendar::System::User) { @@ -138,28 +141,44 @@ static const QCalendarBackend *backendFromEnum(QCalendar::System system) { + QCalendarBackend *backend = nullptr; switch (system) { case QCalendar::System::Gregorian: - return new QGregorianCalendar; + backend = new QGregorianCalendar; + break; #ifndef QT_BOOTSTRAPPED case QCalendar::System::Julian: - return new QJulianCalendar; + backend = new QJulianCalendar; + break; case QCalendar::System::Milankovic: - return new QMilankovicCalendar; + backend = new QMilankovicCalendar; + break; #endif #if QT_CONFIG(jalalicalendar) case QCalendar::System::Jalali: - return new QJalaliCalendar; + backend = new QJalaliCalendar; + break; #endif #if QT_CONFIG(islamiccivilcalendar) case QCalendar::System::IslamicCivil: - return new QIslamicCivilCalendar; + backend = new QIslamicCivilCalendar; + break; #else // When highest-numbered system isn't enabled, ensure we have a case for Last: case QCalendar::System::Last: #endif case QCalendar::System::User: Q_UNREACHABLE(); } + if (!backend) + return backend; + const QString name = backend->name(); + // Check for successful registration: + if (calendarRegistry->registerName(backend, name)) + return backend; + delete backend; + const auto found = calendarRegistry->byName.find(name); + if (found != calendarRegistry->byName.end()) + return found.value(); return nullptr; } @@ -176,11 +195,12 @@ implemented. On construction, the backend is registered with its primary name. - A backend may also be registered with aliases, where the calendar is known - by several names. Registering with the name used by CLDR (the Unicode - consortium's Common Locale Data Repository) is recommended, particularly - when interacting with third-party software. Once a backend is registered for - a name, QCalendar can be constructed using that name to select the backend. + A backend, once successfully registered with its primary name, may also be + registered with aliases, where the calendar is known by several + names. Registering with the name used by CLDR (the Unicode consortium's + Common Locale Data Repository) is recommended, particularly when interacting + with third-party software. Once a backend is registered for a name, + QCalendar can be constructed using that name to select the backend. Each calendar backend must inherit from QCalendarBackend and implement its pure virtual methods. It may also override some other virtual methods, as @@ -200,22 +220,67 @@ */ /*! - Constructs the calendar and registers it under \a name using \a id. + Constructs the calendar and registers it under \a name using \a system. + + On successful registration, the calendar backend registry takes over + ownership of the instance and shall delete it on program exit in the course + of the registry's own destruction. The instance can determine whether it was + successfully registered by calling registerAlias() with the same \a name it + passed to this base-class constructor. If that returns \c false, the + instance has not been registered, QCalendar cannot use it, it should not + attempt to register any other aliases and the code that instantiated the + backend is responsible for deleting it. + + The \a system is optional and should only be passed by built-in + implementations of the standard calendars documented in \l + QCalendar::System. Custom backends should not pass \a system. + + Only one backend instance should ever be registered for any given \a system: + in the event of a backend being created when one with the same \a system + already exists, the new backend is not registered. The \a name passed with a + \a system (other than \l{QCalendar::System}{User}) must be the \c{name()} of + the backend constructed. + + The \a name must be non-empty and unique; after one backend has been + registered for a name or alias, no other backend can be registered with that + name. The presence of another backend registered with the same name may mean + the backend is redundant, as the system already has a backend to handle the + given calendar type. + + \note \c{QCalendar(name).isValid()} will return true precisely when the + given \c name is in use already. This can be used as a test before + instantiating a backend with the given \c name. + + \sa calendarId(), calendarSystem(), registerAlias() */ -QCalendarBackend::QCalendarBackend(const QString &name, QCalendar::System id) +QCalendarBackend::QCalendarBackend(const QString &name, QCalendar::System system) { - calendarRegistry->addCalendar(this, name, id); + Q_ASSERT(!name.isEmpty()); + calendarRegistry->addCalendar(this, name, system); } /*! Destroys the calendar. - Never call this from user code. Each calendar backend, once instantiated, - shall exist for the lifetime of the program. Its destruction is taken care - of by destruction of the registry of calendar backends and their names. + Client code should only call this if instantiation failed to register the + backend, as revealed by the instanee failing to registerAlias() with the + name it passed to this base-class's constructor. Only a backend that fails + to register can safely be deleted; and the client code that instantiated it + is indeed responsible for deleting it. + + Once a backend has been successfully registered, there may be QCalendar + instances using it; deleting it while they still reference it would lead to + undefined behavior. Such a backend shall be deleted when the calendar + backend registry is deleted on program exit; the registry takes over + ownership of the instance on successful registration. + + \sa registerAlias() */ QCalendarBackend::~QCalendarBackend() { + // Either the registry is destroying itself, in which case it takes care of + // dropping any references to this, or this never got registered, so there + // is no need to tell the registry to forget it. } /*! @@ -600,15 +665,20 @@ its name will be included in the list of available calendars and the calendar can be instantiated by name. - Returns \c false if the given \a name is already in use, otherwise it - registers this calendar backend and returns \c true. + Returns \c false if the given \a name is already in use by a different + backend or \c true if this calendar is already registered with this + name. (This can be used, with its primary name, to test whether a backend's + construction successfully registered it.) Otherwise it registers this + calendar backend for this name and returns \c true. \sa availableCalendars(), fromName() */ bool QCalendarBackend::registerAlias(const QString &name) { - if (calendarRegistry.isDestroyed()) + if (calendarRegistry.isDestroyed() || name.isEmpty()) return false; + // Constructing this accessed the registry, so ensured it exists: + Q_ASSERT(calendarRegistry.exists()); return calendarRegistry->registerName(this, name); } @@ -737,7 +807,8 @@ QCalendar::QCalendar(QCalendar::System system) : d(QCalendarBackend::fromEnum(system)) { - Q_ASSERT(d); + // If system is valid, we should get a valid d for that system. + Q_ASSERT(uint(system) > uint(QCalendar::System::Last) || (d && d->calendarSystem() == system)); } QCalendar::QCalendar(QLatin1String name) diff -Naur a/qtbase/src/corelib/time/qdatetime.cpp b/qtbase/src/corelib/time/qdatetime.cpp --- a/qtbase/src/corelib/time/qdatetime.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/time/qdatetime.cpp 2022-01-25 17:23:44.198496097 +0000 @@ -43,6 +43,7 @@ #if QT_CONFIG(datetimeparser) #include "private/qdatetimeparser_p.h" #endif +#include #include "qdatastream.h" #include "qset.h" @@ -240,7 +241,7 @@ const QStringView hhRef = time.left(qMin(hhLen, time.size())); bool ok = false; const int hour = C.toInt(hhRef, &ok); - if (!ok) + if (!ok || hour > 23) // More generous than QTimeZone::MaxUtcOffsetSecs return 0; const QStringView mmRef = time.mid(qMin(mmIndex, time.size())); @@ -1429,9 +1430,11 @@ if (isNull()) return QDate(); - // Due to limits on minJd() and maxJd() we know that any overflow - // will be invalid and caught by fromJulianDay(). - return fromJulianDay(jd + ndays); + qint64 r; + if (Q_UNLIKELY(add_overflow(jd, ndays, &r))) + return QDate(); + else + return fromJulianDay(r); } /*! @@ -5502,7 +5505,13 @@ \snippet code/src_corelib_tools_qdatetime.cpp 12 - If the format is not satisfied, an invalid QDateTime is returned. + If the format is not satisfied, an invalid QDateTime is returned. If the + format is satisfied but \a string represents an invalid date-time (e.g. in a + gap skipped by a time-zone transition), an invalid QDateTime is returned, + whose toMSecsSinceEpoch() represents a near-by date-time that is + valid. Passing that to fromMSecsSinceEpoch() will produce a valid date-time + that isn't faithfully represented by the string parsed. + The expressions that don't have leading zeroes (d, M, h, m, s, z) will be greedy. This means that they will use two digits even if this will put them outside the range and/or leave too few digits for other @@ -5557,7 +5566,7 @@ QDateTimeParser dt(QMetaType::QDateTime, QDateTimeParser::FromString, cal); // dt.setDefaultLocale(QLocale::c()); ### Qt 6 - if (dt.parseFormat(format) && dt.fromString(string, &datetime)) + if (dt.parseFormat(format) && (dt.fromString(string, &datetime) || !datetime.isValid())) return datetime; #else Q_UNUSED(string); diff -Naur a/qtbase/src/corelib/time/qhijricalendar_data_p.h b/qtbase/src/corelib/time/qhijricalendar_data_p.h --- a/qtbase/src/corelib/time/qhijricalendar_data_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/time/qhijricalendar_data_p.h 2022-01-25 17:23:44.087496495 +0000 @@ -59,8 +59,8 @@ // GENERATED PART STARTS HERE /* - This part of the file was generated on 2020-10-27 from the - Common Locale Data Repository v37 + This part of the file was generated on 2020-11-09 from the + Common Locale Data Repository v38 http://www.unicode.org/cldr/ @@ -353,6 +353,7 @@ { 67, 7, 217,{ 0,79 },{ 3885,110 },{ 215,27 },{ 0,79 },{ 3885,110 },{ 215,27 }}, // Kurdish/Latin/Turkey { 68, 7, 35,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Rundi/Latin/Burundi { 69, 23, 117,{ 3995,76 },{ 4071,96 },{ 215,27 },{ 4167,78 },{ 4071,96 },{ 215,27 }}, // Lao/Lao/Laos + { 70, 7, 230,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Latin/Latin/Vatican City State { 71, 7, 118,{ 0,79 },{ 4245,109 },{ 215,27 },{ 0,79 },{ 4245,109 },{ 215,27 }}, // Latvian/Latin/Latvia { 72, 7, 49,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Lingala/Latin/Congo Kinshasa { 72, 7, 6,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Lingala/Latin/Angola @@ -424,17 +425,17 @@ { 102, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Southern Sotho/Latin/South Africa { 103, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tswana/Latin/South Africa { 104, 7, 240,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Shona/Latin/Zimbabwe - { 105, 1, 163,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Sindhi/Arabic/Pakistan + { 105, 1, 163,{ 7163,92 },{ 7163,92 },{ 215,27 },{ 7163,92 },{ 7163,92 },{ 215,27 }}, // Sindhi/Arabic/Pakistan { 105, 13, 100,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Sindhi/Devanagari/India { 106, 32, 198,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Sinhala/Sinhala/Sri Lanka { 107, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Swati/Latin/South Africa - { 108, 7, 191,{ 7163,79 },{ 7242,136 },{ 215,27 },{ 7163,79 },{ 7242,136 },{ 215,27 }}, // Slovak/Latin/Slovakia + { 108, 7, 191,{ 7255,79 },{ 7334,136 },{ 215,27 },{ 7255,79 },{ 7334,136 },{ 215,27 }}, // Slovak/Latin/Slovakia { 109, 7, 192,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Slovenian/Latin/Slovenia - { 110, 7, 194,{ 7378,75 },{ 7453,132 },{ 215,27 },{ 7585,79 },{ 7664,131 },{ 215,27 }}, // Somali/Latin/Somalia - { 110, 7, 59,{ 7378,75 },{ 7453,132 },{ 215,27 },{ 7585,79 },{ 7664,131 },{ 215,27 }}, // Somali/Latin/Djibouti - { 110, 7, 69,{ 7378,75 },{ 7453,132 },{ 215,27 },{ 7585,79 },{ 7664,131 },{ 215,27 }}, // Somali/Latin/Ethiopia - { 110, 7, 111,{ 7378,75 },{ 7453,132 },{ 215,27 },{ 7585,79 },{ 7664,131 },{ 215,27 }}, // Somali/Latin/Kenya - { 111, 7, 197,{ 5227,79 },{ 7795,107 },{ 215,27 },{ 5227,79 },{ 7795,107 },{ 215,27 }}, // Spanish/Latin/Spain + { 110, 7, 194,{ 7470,75 },{ 7545,132 },{ 215,27 },{ 7677,79 },{ 7756,131 },{ 215,27 }}, // Somali/Latin/Somalia + { 110, 7, 59,{ 7470,75 },{ 7545,132 },{ 215,27 },{ 7677,79 },{ 7756,131 },{ 215,27 }}, // Somali/Latin/Djibouti + { 110, 7, 69,{ 7470,75 },{ 7545,132 },{ 215,27 },{ 7677,79 },{ 7756,131 },{ 215,27 }}, // Somali/Latin/Ethiopia + { 110, 7, 111,{ 7470,75 },{ 7545,132 },{ 215,27 },{ 7677,79 },{ 7756,131 },{ 215,27 }}, // Somali/Latin/Kenya + { 111, 7, 197,{ 5227,79 },{ 7887,107 },{ 215,27 },{ 5227,79 },{ 7887,107 },{ 215,27 }}, // Spanish/Latin/Spain { 111, 7, 10,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Argentina { 111, 7, 22,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Belize { 111, 7, 26,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Bolivia @@ -446,7 +447,7 @@ { 111, 7, 61,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Dominican Republic { 111, 7, 63,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Ecuador { 111, 7, 65,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/El Salvador - { 111, 7, 66,{ 5227,79 },{ 7795,107 },{ 215,27 },{ 5227,79 },{ 7795,107 },{ 215,27 }}, // Spanish/Latin/Equatorial Guinea + { 111, 7, 66,{ 5227,79 },{ 7887,107 },{ 215,27 },{ 5227,79 },{ 7887,107 },{ 215,27 }}, // Spanish/Latin/Equatorial Guinea { 111, 7, 90,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Guatemala { 111, 7, 96,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Honduras { 111, 7, 139,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Mexico @@ -454,47 +455,47 @@ { 111, 7, 166,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Panama { 111, 7, 168,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Paraguay { 111, 7, 169,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Peru - { 111, 7, 170,{ 5227,79 },{ 7795,107 },{ 215,27 },{ 5227,79 },{ 7795,107 },{ 215,27 }}, // Spanish/Latin/Philippines + { 111, 7, 170,{ 5227,79 },{ 7887,107 },{ 215,27 },{ 5227,79 },{ 7887,107 },{ 215,27 }}, // Spanish/Latin/Philippines { 111, 7, 174,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Puerto Rico { 111, 7, 225,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/United States { 111, 7, 227,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Uruguay { 111, 7, 231,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Venezuela - { 111, 7, 238,{ 5227,79 },{ 7795,107 },{ 215,27 },{ 5227,79 },{ 7795,107 },{ 215,27 }}, // Spanish/Latin/Canary Islands + { 111, 7, 238,{ 5227,79 },{ 7887,107 },{ 215,27 },{ 5227,79 },{ 7887,107 },{ 215,27 }}, // Spanish/Latin/Canary Islands { 111, 7, 246,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Spanish/Latin/Latin America - { 111, 7, 250,{ 5227,79 },{ 7795,107 },{ 215,27 },{ 5227,79 },{ 7795,107 },{ 215,27 }}, // Spanish/Latin/Ceuta And Melilla + { 111, 7, 250,{ 5227,79 },{ 7887,107 },{ 215,27 },{ 5227,79 },{ 7887,107 },{ 215,27 }}, // Spanish/Latin/Ceuta And Melilla { 112, 7, 101,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Sundanese/Latin/Indonesia { 113, 7, 210,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Swahili/Latin/Tanzania { 113, 7, 49,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Swahili/Latin/Congo Kinshasa { 113, 7, 111,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Swahili/Latin/Kenya { 113, 7, 221,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Swahili/Latin/Uganda - { 114, 7, 205,{ 0,79 },{ 7902,128 },{ 215,27 },{ 0,79 },{ 8030,128 },{ 215,27 }}, // Swedish/Latin/Sweden - { 114, 7, 73,{ 0,79 },{ 7902,128 },{ 215,27 },{ 0,79 },{ 8030,128 },{ 215,27 }}, // Swedish/Latin/Finland - { 114, 7, 248,{ 0,79 },{ 7902,128 },{ 215,27 },{ 0,79 },{ 8030,128 },{ 215,27 }}, // Swedish/Latin/Aland Islands + { 114, 7, 205,{ 0,79 },{ 7994,128 },{ 215,27 },{ 0,79 },{ 8122,128 },{ 215,27 }}, // Swedish/Latin/Sweden + { 114, 7, 73,{ 0,79 },{ 7994,128 },{ 215,27 },{ 0,79 },{ 8122,128 },{ 215,27 }}, // Swedish/Latin/Finland + { 114, 7, 248,{ 0,79 },{ 7994,128 },{ 215,27 },{ 0,79 },{ 8122,128 },{ 215,27 }}, // Swedish/Latin/Aland Islands { 115, 7, 106,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Sardinian/Latin/Italy - { 116, 2, 209,{ 8158,75 },{ 8233,111 },{ 215,27 },{ 8158,75 },{ 8344,111 },{ 215,27 }}, // Tajik/Cyrillic/Tajikistan - { 117, 27, 100,{ 8455,73 },{ 8528,92 },{ 215,27 },{ 8455,73 },{ 8528,92 },{ 215,27 }}, // Tamil/Tamil/India - { 117, 27, 130,{ 8455,73 },{ 8528,92 },{ 215,27 },{ 8455,73 },{ 8528,92 },{ 215,27 }}, // Tamil/Tamil/Malaysia - { 117, 27, 190,{ 8455,73 },{ 8528,92 },{ 215,27 },{ 8455,73 },{ 8528,92 },{ 215,27 }}, // Tamil/Tamil/Singapore - { 117, 27, 198,{ 8455,73 },{ 8528,92 },{ 215,27 },{ 8455,73 },{ 8528,92 },{ 215,27 }}, // Tamil/Tamil/Sri Lanka + { 116, 2, 209,{ 8250,75 },{ 8325,111 },{ 215,27 },{ 8250,75 },{ 8436,111 },{ 215,27 }}, // Tajik/Cyrillic/Tajikistan + { 117, 27, 100,{ 8547,73 },{ 8620,92 },{ 215,27 },{ 8547,73 },{ 8620,92 },{ 215,27 }}, // Tamil/Tamil/India + { 117, 27, 130,{ 8547,73 },{ 8620,92 },{ 215,27 },{ 8547,73 },{ 8620,92 },{ 215,27 }}, // Tamil/Tamil/Malaysia + { 117, 27, 190,{ 8547,73 },{ 8620,92 },{ 215,27 },{ 8547,73 },{ 8620,92 },{ 215,27 }}, // Tamil/Tamil/Singapore + { 117, 27, 198,{ 8547,73 },{ 8620,92 },{ 215,27 },{ 8547,73 },{ 8620,92 },{ 215,27 }}, // Tamil/Tamil/Sri Lanka { 118, 2, 178,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tatar/Cyrillic/Russia - { 119, 28, 100,{ 8620,75 },{ 8695,96 },{ 215,27 },{ 8620,75 },{ 79,107 },{ 215,27 }}, // Telugu/Telugu/India - { 120, 30, 211,{ 8791,90 },{ 8881,103 },{ 215,27 },{ 8791,90 },{ 8881,103 },{ 215,27 }}, // Thai/Thai/Thailand + { 119, 28, 100,{ 8712,75 },{ 8787,96 },{ 215,27 },{ 8712,75 },{ 79,107 },{ 215,27 }}, // Telugu/Telugu/India + { 120, 30, 211,{ 8883,90 },{ 8973,103 },{ 215,27 },{ 8883,90 },{ 8973,103 },{ 215,27 }}, // Thai/Thai/Thailand { 121, 31, 44,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tibetan/Tibetan/China { 121, 31, 100,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tibetan/Tibetan/India { 122, 14, 69,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tigrinya/Ethiopic/Ethiopia { 122, 14, 67,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tigrinya/Ethiopic/Eritrea - { 123, 7, 214,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tongan/Latin/Tonga + { 123, 7, 214,{ 9076,61 },{ 9137,100 },{ 215,27 },{ 9076,61 },{ 9137,100 },{ 215,27 }}, // Tongan/Latin/Tonga { 124, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tsonga/Latin/South Africa - { 125, 7, 217,{ 8984,84 },{ 9068,111 },{ 215,27 },{ 8984,84 },{ 9068,111 },{ 215,27 }}, // Turkish/Latin/Turkey - { 125, 7, 56,{ 8984,84 },{ 9068,111 },{ 215,27 },{ 8984,84 },{ 9068,111 },{ 215,27 }}, // Turkish/Latin/Cyprus + { 125, 7, 217,{ 9237,84 },{ 9321,111 },{ 215,27 },{ 9237,84 },{ 9321,111 },{ 215,27 }}, // Turkish/Latin/Turkey + { 125, 7, 56,{ 9237,84 },{ 9321,111 },{ 215,27 },{ 9237,84 },{ 9321,111 },{ 215,27 }}, // Turkish/Latin/Cyprus { 126, 7, 218,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Turkmen/Latin/Turkmenistan - { 128, 1, 44,{ 9179,119 },{ 9179,119 },{ 215,27 },{ 9179,119 },{ 9179,119 },{ 215,27 }}, // Uighur/Arabic/China - { 129, 2, 222,{ 9298,72 },{ 9370,104 },{ 215,27 },{ 9474,82 },{ 9370,104 },{ 215,27 }}, // Ukrainian/Cyrillic/Ukraine - { 130, 1, 163,{ 9556,99 },{ 9655,97 },{ 215,27 },{ 9556,99 },{ 9655,97 },{ 215,27 }}, // Urdu/Arabic/Pakistan - { 130, 1, 100,{ 9556,99 },{ 9655,97 },{ 215,27 },{ 9556,99 },{ 9655,97 },{ 215,27 }}, // Urdu/Arabic/India - { 131, 7, 228,{ 9752,83 },{ 9835,123 },{ 215,27 },{ 9752,83 },{ 9835,123 },{ 215,27 }}, // Uzbek/Latin/Uzbekistan + { 128, 1, 44,{ 9432,119 },{ 9432,119 },{ 215,27 },{ 9432,119 },{ 9432,119 },{ 215,27 }}, // Uighur/Arabic/China + { 129, 2, 222,{ 9551,72 },{ 9623,104 },{ 215,27 },{ 9727,82 },{ 9623,104 },{ 215,27 }}, // Ukrainian/Cyrillic/Ukraine + { 130, 1, 163,{ 9809,99 },{ 9908,97 },{ 215,27 },{ 10005,97 },{ 9908,97 },{ 215,27 }}, // Urdu/Arabic/Pakistan + { 130, 1, 100,{ 9809,99 },{ 9908,97 },{ 215,27 },{ 10005,97 },{ 9908,97 },{ 215,27 }}, // Urdu/Arabic/India + { 131, 7, 228,{ 10102,83 },{ 10185,123 },{ 215,27 },{ 10102,83 },{ 10185,123 },{ 215,27 }}, // Uzbek/Latin/Uzbekistan { 131, 1, 1,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Uzbek/Arabic/Afghanistan - { 131, 2, 228,{ 0,79 },{ 9958,115 },{ 215,27 },{ 0,79 },{ 9958,115 },{ 215,27 }}, // Uzbek/Cyrillic/Uzbekistan + { 131, 2, 228,{ 0,79 },{ 10308,115 },{ 215,27 },{ 0,79 },{ 10308,115 },{ 215,27 }}, // Uzbek/Cyrillic/Uzbekistan { 132, 7, 232,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Vietnamese/Latin/Vietnam { 133, 7, 260,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Volapuk/Latin/World { 134, 7, 224,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Welsh/Latin/United Kingdom @@ -505,7 +506,7 @@ { 138, 7, 23,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Yoruba/Latin/Benin { 140, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Zulu/Latin/South Africa { 141, 7, 161,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Norwegian Nynorsk/Latin/Norway - { 142, 7, 27,{ 10073,75 },{ 10148,99 },{ 215,27 },{ 10073,75 },{ 10148,99 },{ 215,27 }}, // Bosnian/Latin/Bosnia And Herzegowina + { 142, 7, 27,{ 10423,75 },{ 10498,100 },{ 215,27 },{ 10423,75 },{ 10498,100 },{ 215,27 }}, // Bosnian/Latin/Bosnia And Herzegowina { 142, 2, 27,{ 6638,70 },{ 6708,91 },{ 215,27 },{ 6638,70 },{ 6799,98 },{ 215,27 }}, // Bosnian/Cyrillic/Bosnia And Herzegowina { 143, 29, 131,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Divehi/Thaana/Maldives { 144, 7, 251,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Manx/Latin/Isle Of Man @@ -524,8 +525,8 @@ { 158, 7, 157,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Jju/Latin/Nigeria { 159, 7, 106,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Friulian/Latin/Italy { 160, 7, 195,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Venda/Latin/South Africa - { 161, 7, 83,{ 10247,48 },{ 10295,87 },{ 215,27 },{ 10247,48 },{ 10295,87 },{ 215,27 }}, // Ewe/Latin/Ghana - { 161, 7, 212,{ 10247,48 },{ 10295,87 },{ 215,27 },{ 10247,48 },{ 10295,87 },{ 215,27 }}, // Ewe/Latin/Togo + { 161, 7, 83,{ 10598,48 },{ 10646,87 },{ 215,27 },{ 10598,48 },{ 10646,87 },{ 215,27 }}, // Ewe/Latin/Ghana + { 161, 7, 212,{ 10598,48 },{ 10646,87 },{ 215,27 },{ 10598,48 },{ 10646,87 },{ 215,27 }}, // Ewe/Latin/Togo { 162, 14, 69,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Walamo/Ethiopic/Ethiopia { 163, 7, 225,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Hawaiian/Latin/United States { 164, 7, 157,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Tyap/Latin/Nigeria @@ -605,6 +606,7 @@ { 220, 2, 178,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Chuvash/Cyrillic/Russia { 230, 7, 49,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Luba Katanga/Latin/Congo Kinshasa { 231, 7, 125,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Luxembourgish/Latin/Luxembourg + { 232, 7, 225,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Navaho/Latin/United States { 236, 7, 21,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Walloon/Latin/Belgium { 237, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Aghem/Latin/Cameroon { 238, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Basaa/Latin/Cameroon @@ -624,12 +626,13 @@ { 252, 7, 121,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Vai/Latin/Liberia { 253, 7, 206,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Walser/Latin/Switzerland { 254, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Yangben/Latin/Cameroon - { 256, 7, 197,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 10382,143 },{ 215,27 }}, // Asturian/Latin/Spain + { 256, 7, 197,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 10733,143 },{ 215,27 }}, // Asturian/Latin/Spain { 257, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Ngomba/Latin/Cameroon { 258, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Kako/Latin/Cameroon { 259, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Meta/Latin/Cameroon { 260, 7, 37,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Ngiemboon/Latin/Cameroon { 261, 7, 197,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Aragonese/Latin/Spain + { 275, 13, 100,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Dogri/Devanagari/India { 290, 11, 100,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Manipuri/Bengali/India { 290, 72, 100,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Manipuri/Meitei Mayek/India { 304, 78, 100,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Santali/Ol Chiki/India @@ -658,7 +661,7 @@ { 349, 1, 102,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Northern Luri/Arabic/Iran { 349, 1, 103,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Northern Luri/Arabic/Iraq { 357, 6, 97,{ 930,72 },{ 930,72 },{ 215,27 },{ 930,72 },{ 930,72 },{ 215,27 }}, // Cantonese/Traditional Han/Hong Kong - { 357, 5, 44,{ 10525,72 },{ 10525,72 },{ 215,27 },{ 10525,72 },{ 10525,72 },{ 215,27 }}, // Cantonese/Simplified Han/China + { 357, 5, 44,{ 10876,72 },{ 10876,72 },{ 215,27 },{ 10876,72 },{ 10876,72 },{ 215,27 }}, // Cantonese/Simplified Han/China { 358, 138, 225,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Osage/Osage/United States { 360, 7, 260,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Ido/Latin/World { 361, 7, 260,{ 0,79 },{ 79,107 },{ 215,27 },{ 0,79 },{ 79,107 },{ 215,27 }}, // Lojban/Latin/World @@ -1033,178 +1036,196 @@ 0x64, 0x61, 0x20, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61, 0x111, 0x61, 0x62, 0x3b, 0x160, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x160, 0x61, 0x76, 0x61, 0x6c, 0x3b, 0x44, 0x75, 0x2bb, 0x6c, 0x2d, 0x4b, 0x69, 0x2bb, 0x64, 0x61, 0x3b, 0x44, 0x75, 0x2bb, 0x6c, 0x2d, 0x68, 0x69, -0x111, 0x61, 0x3b, 0x6d, 0x75, 0x68, 0x2e, 0x3b, 0x73, 0x61, 0x66, 0x2e, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b, -0x72, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x64, 0x17e, 0x75, 0x6d, -0x2e, 0x20, 0x49, 0x49, 0x3b, 0x72, 0x61, 0x64, 0x2e, 0x3b, 0x161, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d, 0x2e, 0x3b, 0x161, -0x61, 0x75, 0x2e, 0x3b, 0x64, 0x68, 0xfa, 0x20, 0x6c, 0x2d, 0x6b, 0x2e, 0x3b, 0x64, 0x68, 0xfa, 0x20, 0x6c, 0x2d, 0x68, -0x2e, 0x3b, 0x61, 0x6c, 0x2d, 0x6d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x3b, -0x72, 0x61, 0x62, 0xed, 0xb4, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x76, 0x76, 0x61, 0x6c, 0x3b, 0x72, 0x61, 0x62, 0xed, 0xb4, -0x61, 0x74, 0x68, 0x2d, 0x74, 0x68, 0xe1, 0x6e, 0xed, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0xe1, 0x64, 0xe1, 0x20, 0x6c, 0x2d, -0xfa, 0x6c, 0xe1, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0xe1, 0x64, 0xe1, 0x20, 0x6c, 0x2d, 0xe1, 0x63, 0x68, 0x69, 0x72, 0x61, -0x3b, 0x72, 0x61, 0x64, 0x17e, 0x61, 0x62, 0x3b, 0x161, 0x61, 0xb4, 0x20, 0x62, 0xe1, 0x6e, 0x3b, 0x72, 0x61, 0x6d, 0x61, -0x64, 0xe1, 0x6e, 0x3b, 0x161, 0x61, 0x75, 0x76, 0xe1, 0x6c, 0x3b, 0x64, 0x68, 0xfa, 0x20, 0x6c, 0x2d, 0x6b, 0x61, 0xb4, -0x20, 0x64, 0x61, 0x3b, 0x64, 0x68, 0xfa, 0x20, 0x6c, 0x2d, 0x68, 0x69, 0x64, 0x17e, 0x64, 0x17e, 0x61, 0x3b, 0x4d, 0x75, -0x78, 0x2e, 0x3b, 0x53, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, -0x49, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61, -0x6a, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x77, 0x2e, 0x3b, 0x44, -0x75, 0x6c, 0x2d, 0x51, 0x2e, 0x3b, 0x44, 0x75, 0x6c, 0x2d, 0x58, 0x2e, 0x3b, 0x4d, 0x75, 0x78, 0x61, 0x72, 0x72, 0x61, -0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x63, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x77, 0x77, -0x61, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x63, 0x20, 0x61, 0x6c, 0x2d, 0x74, 0x68, 0x61, 0x6e, 0x69, 0x3b, 0x4a, 0x75, -0x6d, 0x61, 0x64, 0x61, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, -0x20, 0x61, 0x6c, 0x2d, 0x74, 0x68, 0x61, 0x6e, 0x69, 0x3b, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x53, 0x68, 0x61, 0x63, -0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x53, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, -0x44, 0x75, 0x6c, 0x20, 0x61, 0x6c, 0x2d, 0x71, 0x61, 0x63, 0x64, 0x61, 0x68, 0x3b, 0x44, 0x75, 0x6c, 0x20, 0x78, 0x69, -0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x4d, 0x75, 0x78, 0x2e, 0x3b, 0x53, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, -0x49, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x4a, 0x75, 0x6d, -0x2e, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61, 0x6a, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, -0x53, 0x68, 0x61, 0x77, 0x2e, 0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x51, 0x2e, 0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, -0x2d, 0x48, 0x2e, 0x3b, 0x4d, 0x75, 0x78, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, -0x61, 0x62, 0x69, 0x63, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x63, 0x20, -0x61, 0x6c, 0x2d, 0x74, 0x68, 0x61, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x61, 0x6c, 0x2d, 0x61, -0x77, 0x77, 0x61, 0x6c, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x61, 0x6c, 0x2d, 0x74, 0x68, 0x61, 0x6e, 0x69, -0x3b, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x53, 0x68, 0x61, 0x63, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, -0x61, 0x6e, 0x3b, 0x53, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x44, 0x75, 0x6c, 0x20, 0x61, 0x6c, 0x2d, 0x71, 0x61, -0x63, 0x64, 0x61, 0x3b, 0x44, 0x75, 0x6c, 0x20, 0x78, 0x69, 0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x6d, 0x75, 0x68, 0x61, 0x72, -0x72, 0x61, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x72, 0x61, -0x62, 0x69, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x61, -0x64, 0x61, 0x20, 0x49, 0x49, 0x3b, 0x72, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x73, 0x68, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, -0x72, 0x61, 0x6d, 0x61, 0x64, 0xe1, 0x6e, 0x3b, 0x73, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x64, 0x68, 0x75, 0x2bb, -0x6c, 0x2d, 0x71, 0x69, 0x2bb, 0x64, 0x61, 0x68, 0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x68, 0x69, 0x6a, 0x6a, 0x61, -0x68, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0x61, 0x62, -0x69, 0x2019, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2019, 0x20, 0x61, 0x6c, -0x2d, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x2d, 0x6c, 0x2d, 0x75, 0x6c, 0x61, 0x3b, -0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x2d, 0x6c, 0x2d, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x61, 0x3b, 0x52, 0x61, 0x6a, 0x61, -0x62, 0x3b, 0x53, 0x68, 0x61, 0x2019, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x53, 0x68, -0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x44, 0x68, 0x75, 0x2d, 0x6c, 0x2d, 0x67, 0x61, 0x2019, 0x64, 0x61, 0x3b, 0x44, 0x68, -0x75, 0x2d, 0x6c, 0x2d, 0x68, 0x69, 0x6a, 0x6a, 0x61, 0x3b, 0x6d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x73, -0x61, 0x66, 0x61, 0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2019, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, -0x72, 0x61, 0x62, 0x69, 0x2019, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, -0x61, 0x2d, 0x6c, 0x2d, 0x75, 0x6c, 0x61, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x2d, 0x6c, 0x2d, 0x61, 0x6b, 0x68, -0x69, 0x72, 0x61, 0x3b, 0x72, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x73, 0x68, 0x61, 0x2019, 0x62, 0x61, 0x6e, 0x3b, 0x72, 0x61, -0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x73, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x64, 0x68, 0x75, 0x2d, 0x6c, 0x2d, -0x67, 0x61, 0x2019, 0x64, 0x61, 0x3b, 0x64, 0x68, 0x75, 0x2d, 0x6c, 0x2d, 0x68, 0x69, 0x6a, 0x6a, 0x61, 0x3b, 0x41c, 0x443, -0x4b3, 0x2e, 0x3b, 0x421, 0x430, 0x444, 0x2e, 0x3b, 0x420, 0x430, 0x431, 0x2e, 0x20, 0x49, 0x3b, 0x420, 0x430, 0x431, 0x2e, 0x20, -0x49, 0x49, 0x3b, 0x4b6, 0x443, 0x43c, 0x2e, 0x20, 0x49, 0x3b, 0x4b6, 0x443, 0x43c, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x420, 0x430, -0x4b7, 0x2e, 0x3b, 0x428, 0x430, 0x2e, 0x3b, 0x420, 0x430, 0x43c, 0x2e, 0x3b, 0x428, 0x430, 0x432, 0x2e, 0x3b, 0x414, 0x445, 0x443, -0x43b, 0x2d, 0x49a, 0x2e, 0x3b, 0x414, 0x445, 0x443, 0x43b, 0x2d, 0x4b2, 0x2e, 0x3b, 0x43c, 0x443, 0x4b3, 0x430, 0x440, 0x440, 0x430, -0x43c, 0x3b, 0x441, 0x430, 0x444, 0x430, 0x440, 0x3b, 0x420, 0x430, 0x431, 0x435, 0x44a, 0x20, 0x49, 0x3b, 0x420, 0x430, 0x431, 0x435, -0x44a, 0x20, 0x49, 0x49, 0x3b, 0x4b7, 0x438, 0x43c, 0x43e, 0x434, 0x438, 0x2d, 0x443, 0x43b, 0x2d, 0x443, 0x43b, 0x43e, 0x3b, 0x4b7, -0x438, 0x43c, 0x43e, 0x434, 0x438, 0x2d, 0x443, 0x43b, 0x2d, 0x441, 0x43e, 0x43d, 0x438, 0x3b, 0x440, 0x430, 0x4b7, 0x430, 0x431, 0x3b, -0x428, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x420, 0x430, 0x43c, 0x430, 0x434, 0x430, 0x43d, 0x3b, 0x428, 0x430, 0x432, 0x432, 0x430, 0x43b, -0x3b, 0x414, 0x445, 0x443, 0x43b, 0x2d, 0x49a, 0x438, 0x434, 0x430, 0x4b3, 0x3b, 0x414, 0x445, 0x443, 0x43b, 0x2d, 0x4b2, 0x438, 0x4b7, -0x4b7, 0x430, 0x4b3, 0x3b, 0x43c, 0x443, 0x4b3, 0x430, 0x440, 0x440, 0x430, 0x43c, 0x3b, 0x441, 0x430, 0x444, 0x430, 0x440, 0x3b, 0x420, -0x430, 0x431, 0x435, 0x44a, 0x20, 0x49, 0x3b, 0x420, 0x430, 0x431, 0x435, 0x44a, 0x20, 0x49, 0x49, 0x3b, 0x4b7, 0x438, 0x43c, 0x43e, -0x434, 0x438, 0x2d, 0x443, 0x43b, 0x2d, 0x443, 0x43b, 0x43e, 0x3b, 0x4b7, 0x438, 0x43c, 0x43e, 0x434, 0x438, 0x2d, 0x443, 0x43b, 0x2d, -0x441, 0x43e, 0x43d, 0x438, 0x3b, 0x440, 0x430, 0x4b7, 0x430, 0x431, 0x3b, 0x428, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x420, 0x430, 0x43c, -0x430, 0x434, 0x430, 0x43d, 0x3b, 0x428, 0x430, 0x432, 0x432, 0x430, 0x43b, 0x3b, 0x414, 0x445, 0x443, 0x442, 0x2d, 0x49a, 0x438, 0x434, -0x430, 0x4b3, 0x3b, 0x414, 0x445, 0x443, 0x442, 0x2d, 0x4b2, 0x438, 0x4b7, 0x4b7, 0x430, 0x4b3, 0x3b, 0xbae, 0xbc1, 0xbb9, 0x2e, 0x3b, -0xb9a, 0xb83, 0xbaa, 0x2e, 0x3b, 0xbb0, 0xbaa, 0xbbf, 0x20, 0x31, 0x3b, 0xbb0, 0xbaa, 0xbbf, 0x20, 0x32, 0x3b, 0xb9c, 0xbc1, 0xbae, -0x2e, 0x20, 0x31, 0x3b, 0xb9c, 0xbc1, 0xbae, 0x2e, 0x20, 0x32, 0x3b, 0xbb0, 0xb9c, 0x2e, 0x3b, 0xbb7, 0xb83, 0x2e, 0x3b, 0xbb0, -0xbae, 0x2e, 0x3b, 0xbb7, 0xbb5, 0xbcd, 0x2e, 0x3b, 0xba4, 0xbc1, 0xbb2, 0xbcd, 0x20, 0xb95, 0xb83, 0x2e, 0x3b, 0xba4, 0xbc1, 0xbb2, -0xbcd, 0x20, 0xbb9, 0xbbf, 0xb9c, 0xbcd, 0x2e, 0x3b, 0xbae, 0xbc1, 0xbb9, 0xbb0, 0xbcd, 0xbb0, 0xbae, 0xbcd, 0x3b, 0xb9a, 0xb83, 0xbaa, -0xbb0, 0xbcd, 0x3b, 0xbb0, 0xbaa, 0xbbf, 0x20, 0x31, 0x3b, 0xbb0, 0xbaa, 0xbbf, 0x20, 0x32, 0x3b, 0xb9c, 0xbc1, 0xbae, 0xba4, 0xbbe, -0x20, 0x31, 0x3b, 0xb9c, 0xbc1, 0xbae, 0xba4, 0xbbe, 0x20, 0x32, 0x3b, 0xbb0, 0xb9c, 0xbaa, 0xbcd, 0x3b, 0xbb7, 0xb83, 0xbaa, 0xbbe, -0xba9, 0xbcd, 0x3b, 0xbb0, 0xbae, 0xbb2, 0xbbe, 0xba9, 0xbcd, 0x3b, 0xbb7, 0xbb5, 0xbcd, 0xbb5, 0xbbe, 0xbb2, 0xbcd, 0x3b, 0xba4, 0xbc1, -0xbb2, 0xbcd, 0x20, 0xb95, 0xb83, 0xba4, 0xbbe, 0x3b, 0xba4, 0xbc1, 0xbb2, 0xbcd, 0x20, 0xbb9, 0xbbf, 0xb9c, 0xbcd, 0xb9c, 0xbbe, 0x3b, -0xc2e, 0xc41, 0xc39, 0x2e, 0x3b, 0xc38, 0xc2b, 0x2e, 0x3b, 0xc30, 0x2e, 0x20, 0x49, 0x3b, 0xc30, 0x2e, 0x20, 0x49, 0x49, 0x3b, -0xc1c, 0xc41, 0xc2e, 0x2e, 0x20, 0x49, 0x3b, 0xc1c, 0xc41, 0xc2e, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0xc30, 0xc1c, 0x2e, 0x3b, 0xc37, -0xc2c, 0xc3e, 0x2e, 0x3b, 0xc30, 0xc02, 0xc1c, 0xc3e, 0x2e, 0x3b, 0xc37, 0xc35, 0xc4d, 0xc35, 0xc3e, 0x2e, 0x3b, 0xc27, 0xc41, 0xc32, -0xc4d, 0x2d, 0xc15, 0xc3f, 0x2e, 0x3b, 0xc27, 0xc41, 0xc32, 0xc4d, 0x2d, 0xc39, 0xc3f, 0x2e, 0x3b, 0xc2e, 0xc41, 0xc39, 0xc30, 0xc4d, -0xc30, 0xc02, 0x3b, 0xc38, 0xc2b, 0xc30, 0xc4d, 0x3b, 0xc30, 0xc2c, 0xc40, 0x20, 0x49, 0x3b, 0xc30, 0xc2c, 0xc40, 0x20, 0x49, 0x49, -0x3b, 0xc1c, 0xc41, 0xc2e, 0xc26, 0xc3e, 0x20, 0x49, 0x3b, 0xc1c, 0xc41, 0xc2e, 0xc26, 0xc3e, 0x20, 0x49, 0x49, 0x3b, 0xc30, 0xc1c, -0xc2c, 0xc4d, 0x3b, 0xc37, 0xc2c, 0xc3e, 0xc28, 0xc4d, 0x3b, 0xc30, 0xc02, 0xc1c, 0xc3e, 0xc28, 0xc4d, 0x3b, 0xc37, 0xc35, 0xc4d, 0xc35, -0xc3e, 0xc32, 0xc4d, 0x3b, 0xc27, 0xc41, 0xc32, 0xc4d, 0x2d, 0xc15, 0xc3f, 0x20, 0xc26, 0xc3e, 0xc39, 0xc4d, 0x3b, 0xc27, 0xc41, 0xc32, -0xc4d, 0x2d, 0xc39, 0xc3f, 0xc1c, 0xc4d, 0xc1c, 0xc3e, 0xc39, 0xc4d, 0x3b, 0xe21, 0xe38, 0xe2e, 0xe31, 0xe23, 0x2e, 0x3b, 0xe40, 0xe28, -0xe32, 0xe30, 0x2e, 0x3b, 0xe23, 0xe2d, 0xe1a, 0xe35, 0x20, 0x49, 0x3b, 0xe23, 0xe2d, 0xe1a, 0xe35, 0x20, 0x49, 0x49, 0x3b, 0xe08, -0xe38, 0xe21, 0xe32, 0xe14, 0xe32, 0x20, 0x49, 0x3b, 0xe08, 0xe38, 0xe21, 0xe32, 0xe14, 0xe32, 0x20, 0x49, 0x49, 0x3b, 0xe40, 0xe23, -0xe32, 0xe30, 0x2e, 0x3b, 0xe0a, 0xe30, 0xe2d, 0xe4c, 0x2e, 0x3b, 0xe40, 0xe23, 0xe32, 0xe30, 0xe21, 0xe30, 0x2e, 0x3b, 0xe40, 0xe0a, -0xe32, 0xe27, 0x2e, 0x3b, 0xe0b, 0xe38, 0xe25, 0xe01, 0xe34, 0xe2d, 0xe3a, 0x2e, 0x3b, 0xe0b, 0xe38, 0xe25, 0xe2b, 0xe34, 0xe08, 0x2e, -0x3b, 0xe21, 0xe38, 0xe2e, 0xe30, 0xe23, 0xe4c, 0xe23, 0xe2d, 0xe21, 0x3b, 0xe0b, 0xe2d, 0xe1f, 0xe32, 0xe23, 0xe4c, 0x3b, 0xe23, 0xe2d, -0xe1a, 0xe35, 0x20, 0x49, 0x3b, 0xe23, 0xe2d, 0xe1a, 0xe35, 0x20, 0x49, 0x49, 0x3b, 0xe08, 0xe38, 0xe21, 0xe32, 0xe14, 0xe32, 0x20, -0x49, 0x3b, 0xe08, 0xe38, 0xe21, 0xe32, 0xe14, 0xe32, 0x20, 0x49, 0x49, 0x3b, 0xe23, 0xe2d, 0xe08, 0xe31, 0xe1a, 0x3b, 0xe0a, 0xe30, -0xe2d, 0xe30, 0xe1a, 0xe32, 0xe19, 0x3b, 0xe23, 0xe2d, 0xe21, 0xe30, 0xe14, 0xe2d, 0xe19, 0x3b, 0xe40, 0xe0a, 0xe32, 0xe27, 0xe31, 0xe25, -0x3b, 0xe0b, 0xe38, 0xe25, 0xe01, 0xe34, 0xe2d, 0xe3a, 0xe14, 0xe30, 0xe2e, 0xe3a, 0x3b, 0xe0b, 0xe38, 0xe25, 0xe2b, 0xe34, 0xe08, 0xe0d, -0xe30, 0xe2e, 0xe3a, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x66, 0x65, 0x72, 0x3b, 0x52, 0x2e, 0x65, -0x76, 0x76, 0x65, 0x6c, 0x3b, 0x52, 0x2e, 0x61, 0x68, 0x69, 0x72, 0x3b, 0x43, 0x2e, 0x65, 0x76, 0x76, 0x65, 0x6c, 0x3b, -0x43, 0x2e, 0x61, 0x68, 0x69, 0x72, 0x3b, 0x52, 0x65, 0x63, 0x65, 0x70, 0x3b, 0x15e, 0x61, 0x62, 0x61, 0x6e, 0x3b, 0x52, -0x61, 0x6d, 0x2e, 0x3b, 0x15e, 0x65, 0x76, 0x76, 0x61, 0x6c, 0x3b, 0x5a, 0x69, 0x6c, 0x6b, 0x61, 0x64, 0x65, 0x3b, 0x5a, -0x69, 0x6c, 0x68, 0x69, 0x63, 0x63, 0x65, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x65, 0x6d, 0x3b, 0x53, 0x61, 0x66, -0x65, 0x72, 0x3b, 0x52, 0x65, 0x62, 0x69, 0xfc, 0x6c, 0x65, 0x76, 0x76, 0x65, 0x6c, 0x3b, 0x52, 0x65, 0x62, 0x69, 0xfc, -0x6c, 0x61, 0x68, 0x69, 0x72, 0x3b, 0x43, 0x65, 0x6d, 0x61, 0x7a, 0x69, 0x79, 0x65, 0x6c, 0x65, 0x76, 0x76, 0x65, 0x6c, -0x3b, 0x43, 0x65, 0x6d, 0x61, 0x7a, 0x69, 0x79, 0x65, 0x6c, 0x61, 0x68, 0x69, 0x72, 0x3b, 0x52, 0x65, 0x63, 0x65, 0x70, -0x3b, 0x15e, 0x61, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x7a, 0x61, 0x6e, 0x3b, 0x15e, 0x65, 0x76, 0x76, 0x61, -0x6c, 0x3b, 0x5a, 0x69, 0x6c, 0x6b, 0x61, 0x64, 0x65, 0x3b, 0x5a, 0x69, 0x6c, 0x68, 0x69, 0x63, 0x63, 0x65, 0x3b, 0x645, -0x6c7, 0x6be, 0x6d5, 0x631, 0x631, 0x6d5, 0x645, 0x3b, 0x633, 0x6d5, 0x67e, 0x6d5, 0x631, 0x3b, 0x631, 0x6d5, 0x628, 0x649, 0x626, 0x6c7, -0x644, 0x626, 0x6d5, 0x6cb, 0x6cb, 0x6d5, 0x644, 0x3b, 0x631, 0x6d5, 0x628, 0x649, 0x626, 0x6c7, 0x644, 0x626, 0x627, 0x62e, 0x649, 0x631, -0x3b, 0x62c, 0x6d5, 0x645, 0x627, 0x62f, 0x649, 0x64a, 0x6d5, 0x644, 0x626, 0x6d5, 0x6cb, 0x6cb, 0x6d5, 0x644, 0x3b, 0x62c, 0x6d5, 0x645, -0x627, 0x62f, 0x649, 0x64a, 0x6d5, 0x644, 0x626, 0x627, 0x62e, 0x649, 0x631, 0x3b, 0x631, 0x6d5, 0x62c, 0x6d5, 0x628, 0x3b, 0x634, 0x6d5, -0x626, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x627, 0x645, 0x649, 0x632, 0x627, 0x646, 0x3b, 0x634, 0x6d5, 0x6cb, 0x6cb, 0x627, 0x644, 0x3b, -0x632, 0x6c7, 0x644, 0x642, 0x6d5, 0x626, 0x62f, 0x6d5, 0x3b, 0x632, 0x6c7, 0x644, 0x6be, 0x6d5, 0x62c, 0x62c, 0x6d5, 0x3b, 0x43c, 0x443, -0x445, 0x3b, 0x441, 0x430, 0x444, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x49, -0x3b, 0x434, 0x436, 0x443, 0x43c, 0x20, 0x49, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x20, 0x49, 0x49, 0x3b, 0x440, 0x430, 0x434, 0x436, -0x3b, 0x448, 0x430, 0x430, 0x431, 0x3b, 0x440, 0x430, 0x43c, 0x3b, 0x434, 0x430, 0x432, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d, -0x43a, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d, 0x445, 0x3b, 0x43c, 0x443, 0x445, 0x430, 0x440, 0x440, 0x430, 0x43c, 0x3b, 0x441, -0x430, 0x444, 0x430, 0x440, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x49, 0x3b, -0x434, 0x436, 0x443, 0x43c, 0x430, 0x434, 0x430, 0x20, 0x49, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x430, 0x434, 0x430, 0x20, 0x49, 0x49, -0x3b, 0x440, 0x430, 0x434, 0x436, 0x430, 0x431, 0x3b, 0x448, 0x430, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x440, 0x430, 0x43c, 0x430, 0x434, -0x430, 0x43d, 0x3b, 0x434, 0x430, 0x432, 0x432, 0x430, 0x43b, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d, 0x43a, 0x430, 0x430, 0x434, -0x430, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d, 0x445, 0x456, 0x434, 0x436, 0x430, 0x3b, 0x43c, 0x443, 0x445, 0x2e, 0x3b, 0x441, -0x430, 0x444, 0x2e, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x49, 0x3b, 0x434, -0x436, 0x443, 0x43c, 0x2e, 0x20, 0x49, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x440, 0x430, 0x434, 0x436, -0x2e, 0x3b, 0x448, 0x430, 0x430, 0x431, 0x2e, 0x3b, 0x440, 0x430, 0x43c, 0x2e, 0x3b, 0x434, 0x430, 0x432, 0x2e, 0x3b, 0x437, 0x443, -0x2d, 0x43b, 0x44c, 0x2d, 0x43a, 0x2e, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d, 0x445, 0x2e, 0x3b, 0x645, 0x62d, 0x631, 0x645, -0x3b, 0x635, 0x641, 0x631, 0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x20, 0x627, 0x644, 0x627, 0x648, 0x651, 0x644, 0x3b, 0x631, 0x628, 0x6cc, -0x639, 0x20, 0x627, 0x644, 0x62b, 0x651, 0x627, 0x646, 0x6cc, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x20, 0x627, 0x644, 0x627, 0x648, -0x651, 0x644, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x20, 0x627, 0x644, 0x62b, 0x651, 0x627, 0x646, 0x6cc, 0x3b, 0x631, 0x62c, 0x628, -0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b, 0x630, 0x648, -0x627, 0x644, 0x642, 0x639, 0x62f, 0x6c3, 0x3b, 0x630, 0x648, 0x627, 0x644, 0x62d, 0x62c, 0x6c3, 0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b, -0x635, 0x641, 0x631, 0x3b, 0x631, 0x20, 0x628, 0x6cc, 0x639, 0x20, 0x627, 0x644, 0x627, 0x648, 0x644, 0x3b, 0x631, 0x20, 0x628, 0x6cc, -0x639, 0x20, 0x627, 0x644, 0x62b, 0x627, 0x646, 0x6cc, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x20, 0x627, 0x644, 0x627, 0x648, 0x644, -0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x20, 0x627, 0x644, 0x62b, 0x627, 0x646, 0x6cc, 0x3b, 0x631, 0x62c, 0x628, 0x3b, 0x634, 0x639, -0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b, 0x630, 0x648, 0x627, 0x644, 0x642, -0x639, 0x62f, 0x6c3, 0x3b, 0x630, 0x648, 0x627, 0x644, 0x62d, 0x62c, 0x6c3, 0x3b, 0x4d, 0x75, 0x68, 0x2e, 0x3b, 0x53, 0x61, 0x66, -0x2e, 0x3b, 0x52, 0x6f, 0x62, 0x2e, 0x20, 0x61, 0x76, 0x76, 0x2e, 0x3b, 0x52, 0x6f, 0x62, 0x2e, 0x20, 0x6f, 0x78, 0x2e, -0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x61, 0x76, 0x76, 0x2e, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x6f, 0x78, 0x2e, 0x3b, -0x52, 0x61, 0x6a, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x76, 0x2e, -0x3b, 0x5a, 0x75, 0x6c, 0x2d, 0x71, 0x2e, 0x3b, 0x5a, 0x75, 0x6c, 0x2d, 0x68, 0x2e, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, -0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0x6f, 0x62, 0x69, 0x2019, 0x20, 0x75, 0x6c, 0x2d, 0x61, -0x76, 0x76, 0x61, 0x6c, 0x3b, 0x52, 0x6f, 0x62, 0x69, 0x2019, 0x20, 0x75, 0x6c, 0x2d, 0x6f, 0x78, 0x69, 0x72, 0x3b, 0x4a, -0x75, 0x6d, 0x61, 0x64, 0x20, 0x75, 0x6c, 0x2d, 0x61, 0x76, 0x76, 0x61, 0x6c, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x20, -0x75, 0x6c, 0x2d, 0x6f, 0x78, 0x69, 0x72, 0x3b, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x53, 0x68, 0x61, 0x2019, 0x62, 0x6f, -0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x3b, 0x53, 0x68, 0x61, 0x76, 0x76, 0x6f, 0x6c, 0x3b, 0x5a, 0x75, -0x6c, 0x2d, 0x71, 0x61, 0x2019, 0x64, 0x61, 0x3b, 0x5a, 0x75, 0x6c, 0x2d, 0x68, 0x69, 0x6a, 0x6a, 0x61, 0x3b, 0x41c, 0x443, -0x4b3, 0x430, 0x440, 0x440, 0x430, 0x43c, 0x3b, 0x421, 0x430, 0x444, 0x430, 0x440, 0x3b, 0x420, 0x430, 0x431, 0x438, 0x443, 0x43b, 0x2d, -0x430, 0x432, 0x432, 0x430, 0x43b, 0x3b, 0x420, 0x430, 0x431, 0x438, 0x443, 0x43b, 0x2d, 0x43e, 0x445, 0x438, 0x440, 0x3b, 0x416, 0x443, -0x43c, 0x43e, 0x434, 0x438, 0x443, 0x43b, 0x2d, 0x443, 0x43b, 0x43e, 0x3b, 0x416, 0x443, 0x43c, 0x43e, 0x434, 0x438, 0x443, 0x43b, 0x2d, -0x443, 0x445, 0x440, 0x43e, 0x3b, 0x420, 0x430, 0x436, 0x430, 0x431, 0x3b, 0x428, 0x430, 0x44a, 0x431, 0x43e, 0x43d, 0x3b, 0x420, 0x430, -0x43c, 0x430, 0x437, 0x43e, 0x43d, 0x3b, 0x428, 0x430, 0x432, 0x432, 0x43e, 0x43b, 0x3b, 0x417, 0x438, 0x43b, 0x2d, 0x49b, 0x430, 0x44a, -0x434, 0x430, 0x3b, 0x417, 0x438, 0x43b, 0x2d, 0x4b3, 0x438, 0x436, 0x436, 0x430, 0x3b, 0x6d, 0x75, 0x68, 0x2e, 0x3b, 0x73, 0x61, -0x66, 0x2e, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x69, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x69, 0x69, 0x3b, 0x64, 0x17e, -0x75, 0x6d, 0x2e, 0x20, 0x69, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x2e, 0x20, 0x69, 0x69, 0x3b, 0x72, 0x65, 0x64, 0x17e, 0x2e, -0x3b, 0x161, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d, 0x2e, 0x3b, 0x161, 0x65, 0x2e, 0x3b, 0x7a, 0x75, 0x6c, 0x2d, 0x6b, 0x2e, -0x3b, 0x7a, 0x75, 0x6c, 0x2d, 0x68, 0x2e, 0x3b, 0x6d, 0x75, 0x68, 0x61, 0x72, 0x65, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x65, -0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x69, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x69, 0x69, 0x3b, 0x64, -0x17e, 0x75, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x69, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x69, 0x69, 0x3b, -0x72, 0x65, 0x64, 0x17e, 0x65, 0x62, 0x3b, 0x161, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x7a, 0x61, -0x6e, 0x3b, 0x161, 0x65, 0x76, 0x61, 0x6c, 0x3b, 0x7a, 0x75, 0x6c, 0x2d, 0x6b, 0x61, 0x64, 0x65, 0x3b, 0x7a, 0x75, 0x6c, -0x2d, 0x68, 0x69, 0x64, 0x17e, 0x65, 0x3b, 0x64, 0x7a, 0x76, 0x3b, 0x64, 0x7a, 0x64, 0x3b, 0x74, 0x65, 0x64, 0x3b, 0x61, -0x66, 0x254, 0x3b, 0x64, 0x61, 0x6d, 0x3b, 0x6d, 0x61, 0x73, 0x3b, 0x73, 0x69, 0x61, 0x3b, 0x64, 0x65, 0x61, 0x3b, 0x61, -0x6e, 0x79, 0x3b, 0x6b, 0x65, 0x6c, 0x3b, 0x61, 0x64, 0x65, 0x3b, 0x64, 0x7a, 0x6d, 0x3b, 0x64, 0x7a, 0x6f, 0x76, 0x65, -0x3b, 0x64, 0x7a, 0x6f, 0x64, 0x7a, 0x65, 0x3b, 0x74, 0x65, 0x64, 0x6f, 0x78, 0x65, 0x3b, 0x61, 0x66, 0x254, 0x66, 0x69, -0x1ebd, 0x3b, 0x64, 0x61, 0x6d, 0x25b, 0x3b, 0x6d, 0x61, 0x73, 0x61, 0x3b, 0x73, 0x69, 0x61, 0x6d, 0x6c, 0x254, 0x6d, 0x3b, -0x64, 0x65, 0x61, 0x73, 0x69, 0x61, 0x6d, 0x69, 0x6d, 0x65, 0x3b, 0x61, 0x6e, 0x79, 0x254, 0x6e, 0x79, 0x254, 0x3b, 0x6b, -0x65, 0x6c, 0x65, 0x3b, 0x61, 0x64, 0x65, 0x25b, 0x6d, 0x65, 0x6b, 0x70, 0x254, 0x78, 0x65, 0x3b, 0x64, 0x7a, 0x6f, 0x6d, -0x65, 0x3b, 0x64, 0x65, 0x20, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x64, 0x65, 0x20, 0x53, 0x61, 0x66, -0x61, 0x72, 0x3b, 0x64, 0x65, 0x20, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x64, 0x65, 0x20, 0x52, 0x61, 0x62, -0x69, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x64, 0x65, 0x20, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x3b, 0x64, 0x65, -0x20, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x49, 0x3b, 0x64, 0x65, 0x20, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b, -0x64, 0x65, 0x20, 0x53, 0x68, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x64, 0x65, 0x20, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61, -0x6e, 0x3b, 0x64, 0x65, 0x20, 0x53, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x64, 0x65, 0x20, 0x44, 0x68, 0x75, 0x2bb, -0x6c, 0x2d, 0x51, 0x69, 0x2bb, 0x64, 0x61, 0x68, 0x3b, 0x64, 0x65, 0x20, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x48, 0x69, -0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x7a46, 0x54c8, 0x5170, 0x59c6, 0x6708, 0x3b, 0x8272, 0x6cd5, 0x5c14, 0x6708, 0x3b, 0x8d56, 0x6bd4, 0x6708, 0x20, -0x49, 0x3b, 0x8d56, 0x6bd4, 0x6708, 0x20, 0x49, 0x49, 0x3b, 0x4e3b, 0x9a6c, 0x8fbe, 0x6708, 0x20, 0x49, 0x3b, 0x4e3b, 0x9a6c, 0x8fbe, 0x6708, -0x20, 0x49, 0x49, 0x3b, 0x8d56, 0x54f2, 0x535c, 0x6708, 0x3b, 0x820d, 0x5c14, 0x90a6, 0x6708, 0x3b, 0x8d56, 0x4e70, 0x4e39, 0x6708, 0x3b, 0x95ea, -0x74e6, 0x9c81, 0x6708, 0x3b, 0x90fd, 0x5c14, 0x5580, 0x5c14, 0x5fb7, 0x6708, 0x3b, 0x90fd, 0x5c14, 0x9ed1, 0x54f2, 0x6708, 0x3b +0x111, 0x61, 0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b, 0x635, 0x641, 0x631, 0x3b, 0x631, 0x628, 0x64a, 0x639, 0x20, 0x627, 0x644, 0x627, +0x648, 0x644, 0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x20, 0x627, 0x644, 0x627, 0x62e, 0x631, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x20, +0x627, 0x644, 0x627, 0x648, 0x644, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x64a, 0x20, 0x627, 0x644, 0x627, 0x62e, 0x631, 0x3b, 0x631, 0x62c, +0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b, 0x630, +0x648, 0x627, 0x644, 0x642, 0x639, 0x62f, 0x3b, 0x630, 0x648, 0x627, 0x644, 0x62d, 0x62c, 0x6c1, 0x3b, 0x6d, 0x75, 0x68, 0x2e, 0x3b, +0x73, 0x61, 0x66, 0x2e, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b, 0x72, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x49, 0x3b, +0x64, 0x17e, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x72, 0x61, 0x64, +0x2e, 0x3b, 0x161, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d, 0x2e, 0x3b, 0x161, 0x61, 0x75, 0x2e, 0x3b, 0x64, 0x68, 0xfa, 0x20, +0x6c, 0x2d, 0x6b, 0x2e, 0x3b, 0x64, 0x68, 0xfa, 0x20, 0x6c, 0x2d, 0x68, 0x2e, 0x3b, 0x61, 0x6c, 0x2d, 0x6d, 0x75, 0x68, +0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x72, 0x61, 0x62, 0xed, 0xb4, 0x20, 0x61, 0x6c, +0x2d, 0x61, 0x76, 0x76, 0x61, 0x6c, 0x3b, 0x72, 0x61, 0x62, 0xed, 0xb4, 0x61, 0x74, 0x68, 0x2d, 0x74, 0x68, 0xe1, 0x6e, +0xed, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0xe1, 0x64, 0xe1, 0x20, 0x6c, 0x2d, 0xfa, 0x6c, 0xe1, 0x3b, 0x64, 0x17e, 0x75, 0x6d, +0xe1, 0x64, 0xe1, 0x20, 0x6c, 0x2d, 0xe1, 0x63, 0x68, 0x69, 0x72, 0x61, 0x3b, 0x72, 0x61, 0x64, 0x17e, 0x61, 0x62, 0x3b, +0x161, 0x61, 0xb4, 0x20, 0x62, 0xe1, 0x6e, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x64, 0xe1, 0x6e, 0x3b, 0x161, 0x61, 0x75, 0x76, +0xe1, 0x6c, 0x3b, 0x64, 0x68, 0xfa, 0x20, 0x6c, 0x2d, 0x6b, 0x61, 0xb4, 0x20, 0x64, 0x61, 0x3b, 0x64, 0x68, 0xfa, 0x20, +0x6c, 0x2d, 0x68, 0x69, 0x64, 0x17e, 0x64, 0x17e, 0x61, 0x3b, 0x4d, 0x75, 0x78, 0x2e, 0x3b, 0x53, 0x61, 0x66, 0x2e, 0x3b, +0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, +0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61, 0x6a, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x2e, 0x3b, +0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x77, 0x2e, 0x3b, 0x44, 0x75, 0x6c, 0x2d, 0x51, 0x2e, 0x3b, 0x44, 0x75, +0x6c, 0x2d, 0x58, 0x2e, 0x3b, 0x4d, 0x75, 0x78, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, +0x52, 0x61, 0x62, 0x69, 0x63, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x63, +0x20, 0x61, 0x6c, 0x2d, 0x74, 0x68, 0x61, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x61, 0x6c, 0x2d, +0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x61, 0x6c, 0x2d, 0x74, 0x68, 0x61, 0x6e, +0x69, 0x3b, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x53, 0x68, 0x61, 0x63, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, +0x64, 0x61, 0x6e, 0x3b, 0x53, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x44, 0x75, 0x6c, 0x20, 0x61, 0x6c, 0x2d, 0x71, +0x61, 0x63, 0x64, 0x61, 0x68, 0x3b, 0x44, 0x75, 0x6c, 0x20, 0x78, 0x69, 0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x4d, 0x75, 0x78, +0x2e, 0x3b, 0x53, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, +0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x52, 0x61, 0x6a, +0x2e, 0x3b, 0x53, 0x68, 0x61, 0x2e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x77, 0x2e, 0x3b, 0x44, 0x68, +0x75, 0x2bb, 0x6c, 0x2d, 0x51, 0x2e, 0x3b, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x48, 0x2e, 0x3b, 0x4d, 0x75, 0x78, 0x61, +0x72, 0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x63, 0x20, 0x61, 0x6c, 0x2d, +0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x63, 0x20, 0x61, 0x6c, 0x2d, 0x74, 0x68, 0x61, 0x6e, 0x69, +0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x6a, 0x75, 0x6d, +0x61, 0x64, 0x61, 0x20, 0x61, 0x6c, 0x2d, 0x74, 0x68, 0x61, 0x6e, 0x69, 0x3b, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x53, +0x68, 0x61, 0x63, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x53, 0x68, 0x61, 0x77, 0x77, +0x61, 0x6c, 0x3b, 0x44, 0x75, 0x6c, 0x20, 0x61, 0x6c, 0x2d, 0x71, 0x61, 0x63, 0x64, 0x61, 0x3b, 0x44, 0x75, 0x6c, 0x20, +0x78, 0x69, 0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x6d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x61, +0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x6a, +0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x49, 0x3b, 0x72, 0x61, +0x6a, 0x61, 0x62, 0x3b, 0x73, 0x68, 0x61, 0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x64, 0xe1, 0x6e, 0x3b, +0x73, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x71, 0x69, 0x2bb, 0x64, 0x61, 0x68, +0x3b, 0x64, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x68, 0x69, 0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x72, +0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2019, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x77, +0x77, 0x61, 0x6c, 0x3b, 0x52, 0x61, 0x62, 0x69, 0x2019, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x3b, 0x4a, +0x75, 0x6d, 0x61, 0x64, 0x61, 0x2d, 0x6c, 0x2d, 0x75, 0x6c, 0x61, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x2d, 0x6c, +0x2d, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x61, 0x3b, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x53, 0x68, 0x61, 0x2019, 0x62, 0x61, +0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x53, 0x68, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x44, 0x68, +0x75, 0x2d, 0x6c, 0x2d, 0x67, 0x61, 0x2019, 0x64, 0x61, 0x3b, 0x44, 0x68, 0x75, 0x2d, 0x6c, 0x2d, 0x68, 0x69, 0x6a, 0x6a, +0x61, 0x3b, 0x6d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x72, 0x61, 0x62, +0x69, 0x2019, 0x20, 0x61, 0x6c, 0x2d, 0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2019, 0x20, 0x61, 0x6c, +0x2d, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x3b, 0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x2d, 0x6c, 0x2d, 0x75, 0x6c, 0x61, 0x3b, +0x6a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x2d, 0x6c, 0x2d, 0x61, 0x6b, 0x68, 0x69, 0x72, 0x61, 0x3b, 0x72, 0x61, 0x6a, 0x61, +0x62, 0x3b, 0x73, 0x68, 0x61, 0x2019, 0x62, 0x61, 0x6e, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x73, 0x68, +0x61, 0x77, 0x77, 0x61, 0x6c, 0x3b, 0x64, 0x68, 0x75, 0x2d, 0x6c, 0x2d, 0x67, 0x61, 0x2019, 0x64, 0x61, 0x3b, 0x64, 0x68, +0x75, 0x2d, 0x6c, 0x2d, 0x68, 0x69, 0x6a, 0x6a, 0x61, 0x3b, 0x41c, 0x443, 0x4b3, 0x2e, 0x3b, 0x421, 0x430, 0x444, 0x2e, 0x3b, +0x420, 0x430, 0x431, 0x2e, 0x20, 0x49, 0x3b, 0x420, 0x430, 0x431, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x4b6, 0x443, 0x43c, 0x2e, 0x20, +0x49, 0x3b, 0x4b6, 0x443, 0x43c, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x420, 0x430, 0x4b7, 0x2e, 0x3b, 0x428, 0x430, 0x2e, 0x3b, 0x420, +0x430, 0x43c, 0x2e, 0x3b, 0x428, 0x430, 0x432, 0x2e, 0x3b, 0x414, 0x445, 0x443, 0x43b, 0x2d, 0x49a, 0x2e, 0x3b, 0x414, 0x445, 0x443, +0x43b, 0x2d, 0x4b2, 0x2e, 0x3b, 0x43c, 0x443, 0x4b3, 0x430, 0x440, 0x440, 0x430, 0x43c, 0x3b, 0x441, 0x430, 0x444, 0x430, 0x440, 0x3b, +0x420, 0x430, 0x431, 0x435, 0x44a, 0x20, 0x49, 0x3b, 0x420, 0x430, 0x431, 0x435, 0x44a, 0x20, 0x49, 0x49, 0x3b, 0x4b7, 0x438, 0x43c, +0x43e, 0x434, 0x438, 0x2d, 0x443, 0x43b, 0x2d, 0x443, 0x43b, 0x43e, 0x3b, 0x4b7, 0x438, 0x43c, 0x43e, 0x434, 0x438, 0x2d, 0x443, 0x43b, +0x2d, 0x441, 0x43e, 0x43d, 0x438, 0x3b, 0x440, 0x430, 0x4b7, 0x430, 0x431, 0x3b, 0x428, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x420, 0x430, +0x43c, 0x430, 0x434, 0x430, 0x43d, 0x3b, 0x428, 0x430, 0x432, 0x432, 0x430, 0x43b, 0x3b, 0x414, 0x445, 0x443, 0x43b, 0x2d, 0x49a, 0x438, +0x434, 0x430, 0x4b3, 0x3b, 0x414, 0x445, 0x443, 0x43b, 0x2d, 0x4b2, 0x438, 0x4b7, 0x4b7, 0x430, 0x4b3, 0x3b, 0x43c, 0x443, 0x4b3, 0x430, +0x440, 0x440, 0x430, 0x43c, 0x3b, 0x441, 0x430, 0x444, 0x430, 0x440, 0x3b, 0x420, 0x430, 0x431, 0x435, 0x44a, 0x20, 0x49, 0x3b, 0x420, +0x430, 0x431, 0x435, 0x44a, 0x20, 0x49, 0x49, 0x3b, 0x4b7, 0x438, 0x43c, 0x43e, 0x434, 0x438, 0x2d, 0x443, 0x43b, 0x2d, 0x443, 0x43b, +0x43e, 0x3b, 0x4b7, 0x438, 0x43c, 0x43e, 0x434, 0x438, 0x2d, 0x443, 0x43b, 0x2d, 0x441, 0x43e, 0x43d, 0x438, 0x3b, 0x440, 0x430, 0x4b7, +0x430, 0x431, 0x3b, 0x428, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x420, 0x430, 0x43c, 0x430, 0x434, 0x430, 0x43d, 0x3b, 0x428, 0x430, 0x432, +0x432, 0x430, 0x43b, 0x3b, 0x414, 0x445, 0x443, 0x442, 0x2d, 0x49a, 0x438, 0x434, 0x430, 0x4b3, 0x3b, 0x414, 0x445, 0x443, 0x442, 0x2d, +0x4b2, 0x438, 0x4b7, 0x4b7, 0x430, 0x4b3, 0x3b, 0xbae, 0xbc1, 0xbb9, 0x2e, 0x3b, 0xb9a, 0xb83, 0xbaa, 0x2e, 0x3b, 0xbb0, 0xbaa, 0xbbf, +0x20, 0x31, 0x3b, 0xbb0, 0xbaa, 0xbbf, 0x20, 0x32, 0x3b, 0xb9c, 0xbc1, 0xbae, 0x2e, 0x20, 0x31, 0x3b, 0xb9c, 0xbc1, 0xbae, 0x2e, +0x20, 0x32, 0x3b, 0xbb0, 0xb9c, 0x2e, 0x3b, 0xbb7, 0xb83, 0x2e, 0x3b, 0xbb0, 0xbae, 0x2e, 0x3b, 0xbb7, 0xbb5, 0xbcd, 0x2e, 0x3b, +0xba4, 0xbc1, 0xbb2, 0xbcd, 0x20, 0xb95, 0xb83, 0x2e, 0x3b, 0xba4, 0xbc1, 0xbb2, 0xbcd, 0x20, 0xbb9, 0xbbf, 0xb9c, 0xbcd, 0x2e, 0x3b, +0xbae, 0xbc1, 0xbb9, 0xbb0, 0xbcd, 0xbb0, 0xbae, 0xbcd, 0x3b, 0xb9a, 0xb83, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xbb0, 0xbaa, 0xbbf, 0x20, 0x31, +0x3b, 0xbb0, 0xbaa, 0xbbf, 0x20, 0x32, 0x3b, 0xb9c, 0xbc1, 0xbae, 0xba4, 0xbbe, 0x20, 0x31, 0x3b, 0xb9c, 0xbc1, 0xbae, 0xba4, 0xbbe, +0x20, 0x32, 0x3b, 0xbb0, 0xb9c, 0xbaa, 0xbcd, 0x3b, 0xbb7, 0xb83, 0xbaa, 0xbbe, 0xba9, 0xbcd, 0x3b, 0xbb0, 0xbae, 0xbb2, 0xbbe, 0xba9, +0xbcd, 0x3b, 0xbb7, 0xbb5, 0xbcd, 0xbb5, 0xbbe, 0xbb2, 0xbcd, 0x3b, 0xba4, 0xbc1, 0xbb2, 0xbcd, 0x20, 0xb95, 0xb83, 0xba4, 0xbbe, 0x3b, +0xba4, 0xbc1, 0xbb2, 0xbcd, 0x20, 0xbb9, 0xbbf, 0xb9c, 0xbcd, 0xb9c, 0xbbe, 0x3b, 0xc2e, 0xc41, 0xc39, 0x2e, 0x3b, 0xc38, 0xc2b, 0x2e, +0x3b, 0xc30, 0x2e, 0x20, 0x49, 0x3b, 0xc30, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0xc1c, 0xc41, 0xc2e, 0x2e, 0x20, 0x49, 0x3b, 0xc1c, +0xc41, 0xc2e, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0xc30, 0xc1c, 0x2e, 0x3b, 0xc37, 0xc2c, 0xc3e, 0x2e, 0x3b, 0xc30, 0xc02, 0xc1c, 0xc3e, +0x2e, 0x3b, 0xc37, 0xc35, 0xc4d, 0xc35, 0xc3e, 0x2e, 0x3b, 0xc27, 0xc41, 0xc32, 0xc4d, 0x2d, 0xc15, 0xc3f, 0x2e, 0x3b, 0xc27, 0xc41, +0xc32, 0xc4d, 0x2d, 0xc39, 0xc3f, 0x2e, 0x3b, 0xc2e, 0xc41, 0xc39, 0xc30, 0xc4d, 0xc30, 0xc02, 0x3b, 0xc38, 0xc2b, 0xc30, 0xc4d, 0x3b, +0xc30, 0xc2c, 0xc40, 0x20, 0x49, 0x3b, 0xc30, 0xc2c, 0xc40, 0x20, 0x49, 0x49, 0x3b, 0xc1c, 0xc41, 0xc2e, 0xc26, 0xc3e, 0x20, 0x49, +0x3b, 0xc1c, 0xc41, 0xc2e, 0xc26, 0xc3e, 0x20, 0x49, 0x49, 0x3b, 0xc30, 0xc1c, 0xc2c, 0xc4d, 0x3b, 0xc37, 0xc2c, 0xc3e, 0xc28, 0xc4d, +0x3b, 0xc30, 0xc02, 0xc1c, 0xc3e, 0xc28, 0xc4d, 0x3b, 0xc37, 0xc35, 0xc4d, 0xc35, 0xc3e, 0xc32, 0xc4d, 0x3b, 0xc27, 0xc41, 0xc32, 0xc4d, +0x2d, 0xc15, 0xc3f, 0x20, 0xc26, 0xc3e, 0xc39, 0xc4d, 0x3b, 0xc27, 0xc41, 0xc32, 0xc4d, 0x2d, 0xc39, 0xc3f, 0xc1c, 0xc4d, 0xc1c, 0xc3e, +0xc39, 0xc4d, 0x3b, 0xe21, 0xe38, 0xe2e, 0xe31, 0xe23, 0x2e, 0x3b, 0xe40, 0xe28, 0xe32, 0xe30, 0x2e, 0x3b, 0xe23, 0xe2d, 0xe1a, 0xe35, +0x20, 0x49, 0x3b, 0xe23, 0xe2d, 0xe1a, 0xe35, 0x20, 0x49, 0x49, 0x3b, 0xe08, 0xe38, 0xe21, 0xe32, 0xe14, 0xe32, 0x20, 0x49, 0x3b, +0xe08, 0xe38, 0xe21, 0xe32, 0xe14, 0xe32, 0x20, 0x49, 0x49, 0x3b, 0xe40, 0xe23, 0xe32, 0xe30, 0x2e, 0x3b, 0xe0a, 0xe30, 0xe2d, 0xe4c, +0x2e, 0x3b, 0xe40, 0xe23, 0xe32, 0xe30, 0xe21, 0xe30, 0x2e, 0x3b, 0xe40, 0xe0a, 0xe32, 0xe27, 0x2e, 0x3b, 0xe0b, 0xe38, 0xe25, 0xe01, +0xe34, 0xe2d, 0xe3a, 0x2e, 0x3b, 0xe0b, 0xe38, 0xe25, 0xe2b, 0xe34, 0xe08, 0x2e, 0x3b, 0xe21, 0xe38, 0xe2e, 0xe30, 0xe23, 0xe4c, 0xe23, +0xe2d, 0xe21, 0x3b, 0xe0b, 0xe2d, 0xe1f, 0xe32, 0xe23, 0xe4c, 0x3b, 0xe23, 0xe2d, 0xe1a, 0xe35, 0x20, 0x49, 0x3b, 0xe23, 0xe2d, 0xe1a, +0xe35, 0x20, 0x49, 0x49, 0x3b, 0xe08, 0xe38, 0xe21, 0xe32, 0xe14, 0xe32, 0x20, 0x49, 0x3b, 0xe08, 0xe38, 0xe21, 0xe32, 0xe14, 0xe32, +0x20, 0x49, 0x49, 0x3b, 0xe23, 0xe2d, 0xe08, 0xe31, 0xe1a, 0x3b, 0xe0a, 0xe30, 0xe2d, 0xe30, 0xe1a, 0xe32, 0xe19, 0x3b, 0xe23, 0xe2d, +0xe21, 0xe30, 0xe14, 0xe2d, 0xe19, 0x3b, 0xe40, 0xe0a, 0xe32, 0xe27, 0xe31, 0xe25, 0x3b, 0xe0b, 0xe38, 0xe25, 0xe01, 0xe34, 0xe2d, 0xe3a, +0xe14, 0xe30, 0xe2e, 0xe3a, 0x3b, 0xe0b, 0xe38, 0xe25, 0xe2b, 0xe34, 0xe08, 0xe0d, 0xe30, 0xe2e, 0xe3a, 0x3b, 0x4d, 0x75, 0x68, 0x3b, +0x53, 0x61, 0x66, 0x3b, 0x4c, 0x61, 0x70, 0x20, 0x49, 0x3b, 0x4c, 0x61, 0x70, 0x20, 0x49, 0x49, 0x3b, 0x53, 0x75, 0x6d, +0x20, 0x49, 0x3b, 0x53, 0x75, 0x6d, 0x20, 0x49, 0x49, 0x3b, 0x4c, 0x61, 0x73, 0x3b, 0x53, 0x61, 0x2bb, 0x61, 0x3b, 0x4c, +0x61, 0x6d, 0x3b, 0x53, 0x61, 0x76, 0x3b, 0x53, 0x16b, 0x2d, 0x6b, 0x3b, 0x53, 0x16b, 0x2d, 0x68, 0x3b, 0x4d, 0x75, 0x68, +0x61, 0x6c, 0x61, 0x6d, 0x69, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x6c, 0x69, 0x3b, 0x4c, 0x61, 0x70, 0x12b, 0x20, 0x49, 0x3b, +0x4c, 0x61, 0x70, 0x12b, 0x20, 0x49, 0x49, 0x3b, 0x53, 0x75, 0x6d, 0x61, 0x74, 0x101, 0x20, 0x49, 0x3b, 0x53, 0x75, 0x6d, +0x61, 0x74, 0x101, 0x20, 0x49, 0x49, 0x3b, 0x4c, 0x61, 0x73, 0x61, 0x70, 0x69, 0x3b, 0x53, 0x61, 0x2bb, 0x61, 0x70, 0x101, +0x6e, 0x69, 0x3b, 0x4c, 0x61, 0x6d, 0x61, 0x74, 0x101, 0x6e, 0x69, 0x3b, 0x53, 0x61, 0x76, 0x101, 0x6c, 0x69, 0x3b, 0x53, +0x16b, 0x2d, 0x6b, 0x61, 0x2bb, 0x61, 0x74, 0x61, 0x3b, 0x53, 0x16b, 0x2d, 0x68, 0x69, 0x73, 0x61, 0x3b, 0x4d, 0x75, 0x68, +0x61, 0x72, 0x2e, 0x3b, 0x53, 0x61, 0x66, 0x65, 0x72, 0x3b, 0x52, 0x2e, 0x65, 0x76, 0x76, 0x65, 0x6c, 0x3b, 0x52, 0x2e, +0x61, 0x68, 0x69, 0x72, 0x3b, 0x43, 0x2e, 0x65, 0x76, 0x76, 0x65, 0x6c, 0x3b, 0x43, 0x2e, 0x61, 0x68, 0x69, 0x72, 0x3b, +0x52, 0x65, 0x63, 0x65, 0x70, 0x3b, 0x15e, 0x61, 0x62, 0x61, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x15e, 0x65, 0x76, +0x76, 0x61, 0x6c, 0x3b, 0x5a, 0x69, 0x6c, 0x6b, 0x61, 0x64, 0x65, 0x3b, 0x5a, 0x69, 0x6c, 0x68, 0x69, 0x63, 0x63, 0x65, +0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x65, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x65, 0x72, 0x3b, 0x52, 0x65, 0x62, 0x69, +0xfc, 0x6c, 0x65, 0x76, 0x76, 0x65, 0x6c, 0x3b, 0x52, 0x65, 0x62, 0x69, 0xfc, 0x6c, 0x61, 0x68, 0x69, 0x72, 0x3b, 0x43, +0x65, 0x6d, 0x61, 0x7a, 0x69, 0x79, 0x65, 0x6c, 0x65, 0x76, 0x76, 0x65, 0x6c, 0x3b, 0x43, 0x65, 0x6d, 0x61, 0x7a, 0x69, +0x79, 0x65, 0x6c, 0x61, 0x68, 0x69, 0x72, 0x3b, 0x52, 0x65, 0x63, 0x65, 0x70, 0x3b, 0x15e, 0x61, 0x62, 0x61, 0x6e, 0x3b, +0x52, 0x61, 0x6d, 0x61, 0x7a, 0x61, 0x6e, 0x3b, 0x15e, 0x65, 0x76, 0x76, 0x61, 0x6c, 0x3b, 0x5a, 0x69, 0x6c, 0x6b, 0x61, +0x64, 0x65, 0x3b, 0x5a, 0x69, 0x6c, 0x68, 0x69, 0x63, 0x63, 0x65, 0x3b, 0x645, 0x6c7, 0x6be, 0x6d5, 0x631, 0x631, 0x6d5, 0x645, +0x3b, 0x633, 0x6d5, 0x67e, 0x6d5, 0x631, 0x3b, 0x631, 0x6d5, 0x628, 0x649, 0x626, 0x6c7, 0x644, 0x626, 0x6d5, 0x6cb, 0x6cb, 0x6d5, 0x644, +0x3b, 0x631, 0x6d5, 0x628, 0x649, 0x626, 0x6c7, 0x644, 0x626, 0x627, 0x62e, 0x649, 0x631, 0x3b, 0x62c, 0x6d5, 0x645, 0x627, 0x62f, 0x649, +0x64a, 0x6d5, 0x644, 0x626, 0x6d5, 0x6cb, 0x6cb, 0x6d5, 0x644, 0x3b, 0x62c, 0x6d5, 0x645, 0x627, 0x62f, 0x649, 0x64a, 0x6d5, 0x644, 0x626, +0x627, 0x62e, 0x649, 0x631, 0x3b, 0x631, 0x6d5, 0x62c, 0x6d5, 0x628, 0x3b, 0x634, 0x6d5, 0x626, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x627, +0x645, 0x649, 0x632, 0x627, 0x646, 0x3b, 0x634, 0x6d5, 0x6cb, 0x6cb, 0x627, 0x644, 0x3b, 0x632, 0x6c7, 0x644, 0x642, 0x6d5, 0x626, 0x62f, +0x6d5, 0x3b, 0x632, 0x6c7, 0x644, 0x6be, 0x6d5, 0x62c, 0x62c, 0x6d5, 0x3b, 0x43c, 0x443, 0x445, 0x3b, 0x441, 0x430, 0x444, 0x3b, 0x440, +0x430, 0x431, 0x456, 0x20, 0x49, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x49, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x20, 0x49, +0x3b, 0x434, 0x436, 0x443, 0x43c, 0x20, 0x49, 0x49, 0x3b, 0x440, 0x430, 0x434, 0x436, 0x3b, 0x448, 0x430, 0x430, 0x431, 0x3b, 0x440, +0x430, 0x43c, 0x3b, 0x434, 0x430, 0x432, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d, 0x43a, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, +0x2d, 0x445, 0x3b, 0x43c, 0x443, 0x445, 0x430, 0x440, 0x440, 0x430, 0x43c, 0x3b, 0x441, 0x430, 0x444, 0x430, 0x440, 0x3b, 0x440, 0x430, +0x431, 0x456, 0x20, 0x49, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x49, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x430, 0x434, 0x430, +0x20, 0x49, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x430, 0x434, 0x430, 0x20, 0x49, 0x49, 0x3b, 0x440, 0x430, 0x434, 0x436, 0x430, 0x431, +0x3b, 0x448, 0x430, 0x430, 0x431, 0x430, 0x43d, 0x3b, 0x440, 0x430, 0x43c, 0x430, 0x434, 0x430, 0x43d, 0x3b, 0x434, 0x430, 0x432, 0x432, +0x430, 0x43b, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d, 0x43a, 0x430, 0x430, 0x434, 0x430, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, +0x2d, 0x445, 0x456, 0x434, 0x436, 0x430, 0x3b, 0x43c, 0x443, 0x445, 0x2e, 0x3b, 0x441, 0x430, 0x444, 0x2e, 0x3b, 0x440, 0x430, 0x431, +0x456, 0x20, 0x49, 0x3b, 0x440, 0x430, 0x431, 0x456, 0x20, 0x49, 0x49, 0x3b, 0x434, 0x436, 0x443, 0x43c, 0x2e, 0x20, 0x49, 0x3b, +0x434, 0x436, 0x443, 0x43c, 0x2e, 0x20, 0x49, 0x49, 0x3b, 0x440, 0x430, 0x434, 0x436, 0x2e, 0x3b, 0x448, 0x430, 0x430, 0x431, 0x2e, +0x3b, 0x440, 0x430, 0x43c, 0x2e, 0x3b, 0x434, 0x430, 0x432, 0x2e, 0x3b, 0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d, 0x43a, 0x2e, 0x3b, +0x437, 0x443, 0x2d, 0x43b, 0x44c, 0x2d, 0x445, 0x2e, 0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b, 0x635, 0x641, 0x631, 0x3b, 0x631, 0x628, +0x6cc, 0x639, 0x20, 0x627, 0x644, 0x627, 0x648, 0x651, 0x644, 0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x20, 0x627, 0x644, 0x62b, 0x651, 0x627, +0x646, 0x6cc, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x20, 0x627, 0x644, 0x627, 0x648, 0x651, 0x644, 0x3b, 0x62c, 0x645, 0x627, 0x62f, +0x6cc, 0x20, 0x627, 0x644, 0x62b, 0x651, 0x627, 0x646, 0x6cc, 0x3b, 0x631, 0x62c, 0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, +0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b, 0x630, 0x648, 0x627, 0x644, 0x642, 0x639, 0x62f, 0x6c3, 0x3b, +0x630, 0x648, 0x627, 0x644, 0x62d, 0x62c, 0x6c3, 0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b, 0x635, 0x641, 0x631, 0x3b, 0x631, 0x20, 0x628, +0x6cc, 0x639, 0x20, 0x627, 0x644, 0x627, 0x648, 0x644, 0x3b, 0x631, 0x20, 0x628, 0x6cc, 0x639, 0x20, 0x627, 0x644, 0x62b, 0x627, 0x646, +0x6cc, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x20, 0x627, 0x644, 0x627, 0x648, 0x644, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x20, +0x627, 0x644, 0x62b, 0x627, 0x646, 0x6cc, 0x3b, 0x631, 0x62c, 0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, +0x627, 0x646, 0x3b, 0x634, 0x648, 0x627, 0x644, 0x3b, 0x630, 0x648, 0x627, 0x644, 0x642, 0x639, 0x62f, 0x6c3, 0x3b, 0x630, 0x648, 0x627, +0x644, 0x62d, 0x62c, 0x6c3, 0x3b, 0x645, 0x62d, 0x631, 0x645, 0x3b, 0x635, 0x641, 0x631, 0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x20, 0x627, +0x644, 0x627, 0x648, 0x651, 0x644, 0x3b, 0x631, 0x628, 0x6cc, 0x639, 0x20, 0x627, 0x644, 0x62b, 0x627, 0x646, 0x6cc, 0x3b, 0x62c, 0x645, +0x627, 0x62f, 0x6cc, 0x20, 0x627, 0x644, 0x627, 0x648, 0x651, 0x644, 0x3b, 0x62c, 0x645, 0x627, 0x62f, 0x6cc, 0x20, 0x627, 0x644, 0x62b, +0x627, 0x646, 0x6cc, 0x3b, 0x631, 0x62c, 0x628, 0x3b, 0x634, 0x639, 0x628, 0x627, 0x646, 0x3b, 0x631, 0x645, 0x636, 0x627, 0x646, 0x3b, +0x634, 0x648, 0x627, 0x644, 0x3b, 0x630, 0x648, 0x627, 0x644, 0x642, 0x639, 0x62f, 0x6c3, 0x3b, 0x630, 0x648, 0x627, 0x644, 0x62d, 0x62c, +0x6c3, 0x3b, 0x4d, 0x75, 0x68, 0x2e, 0x3b, 0x53, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0x6f, 0x62, 0x2e, 0x20, 0x61, 0x76, 0x76, +0x2e, 0x3b, 0x52, 0x6f, 0x62, 0x2e, 0x20, 0x6f, 0x78, 0x2e, 0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x61, 0x76, 0x76, 0x2e, +0x3b, 0x4a, 0x75, 0x6d, 0x2e, 0x20, 0x6f, 0x78, 0x2e, 0x3b, 0x52, 0x61, 0x6a, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x2e, 0x3b, +0x52, 0x61, 0x6d, 0x2e, 0x3b, 0x53, 0x68, 0x61, 0x76, 0x2e, 0x3b, 0x5a, 0x75, 0x6c, 0x2d, 0x71, 0x2e, 0x3b, 0x5a, 0x75, +0x6c, 0x2d, 0x68, 0x2e, 0x3b, 0x4d, 0x75, 0x68, 0x61, 0x72, 0x72, 0x61, 0x6d, 0x3b, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, +0x52, 0x6f, 0x62, 0x69, 0x2019, 0x20, 0x75, 0x6c, 0x2d, 0x61, 0x76, 0x76, 0x61, 0x6c, 0x3b, 0x52, 0x6f, 0x62, 0x69, 0x2019, +0x20, 0x75, 0x6c, 0x2d, 0x6f, 0x78, 0x69, 0x72, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x20, 0x75, 0x6c, 0x2d, 0x61, 0x76, +0x76, 0x61, 0x6c, 0x3b, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x20, 0x75, 0x6c, 0x2d, 0x6f, 0x78, 0x69, 0x72, 0x3b, 0x52, 0x61, +0x6a, 0x61, 0x62, 0x3b, 0x53, 0x68, 0x61, 0x2019, 0x62, 0x6f, 0x6e, 0x3b, 0x52, 0x61, 0x6d, 0x61, 0x7a, 0x6f, 0x6e, 0x3b, +0x53, 0x68, 0x61, 0x76, 0x76, 0x6f, 0x6c, 0x3b, 0x5a, 0x75, 0x6c, 0x2d, 0x71, 0x61, 0x2019, 0x64, 0x61, 0x3b, 0x5a, 0x75, +0x6c, 0x2d, 0x68, 0x69, 0x6a, 0x6a, 0x61, 0x3b, 0x41c, 0x443, 0x4b3, 0x430, 0x440, 0x440, 0x430, 0x43c, 0x3b, 0x421, 0x430, 0x444, +0x430, 0x440, 0x3b, 0x420, 0x430, 0x431, 0x438, 0x443, 0x43b, 0x2d, 0x430, 0x432, 0x432, 0x430, 0x43b, 0x3b, 0x420, 0x430, 0x431, 0x438, +0x443, 0x43b, 0x2d, 0x43e, 0x445, 0x438, 0x440, 0x3b, 0x416, 0x443, 0x43c, 0x43e, 0x434, 0x438, 0x443, 0x43b, 0x2d, 0x443, 0x43b, 0x43e, +0x3b, 0x416, 0x443, 0x43c, 0x43e, 0x434, 0x438, 0x443, 0x43b, 0x2d, 0x443, 0x445, 0x440, 0x43e, 0x3b, 0x420, 0x430, 0x436, 0x430, 0x431, +0x3b, 0x428, 0x430, 0x44a, 0x431, 0x43e, 0x43d, 0x3b, 0x420, 0x430, 0x43c, 0x430, 0x437, 0x43e, 0x43d, 0x3b, 0x428, 0x430, 0x432, 0x432, +0x43e, 0x43b, 0x3b, 0x417, 0x438, 0x43b, 0x2d, 0x49b, 0x430, 0x44a, 0x434, 0x430, 0x3b, 0x417, 0x438, 0x43b, 0x2d, 0x4b3, 0x438, 0x436, +0x436, 0x430, 0x3b, 0x6d, 0x75, 0x68, 0x2e, 0x3b, 0x73, 0x61, 0x66, 0x2e, 0x3b, 0x52, 0x61, 0x62, 0x2e, 0x20, 0x49, 0x3b, +0x72, 0x61, 0x62, 0x2e, 0x20, 0x69, 0x69, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x2e, 0x20, 0x69, 0x3b, 0x64, 0x17e, 0x75, 0x6d, +0x2e, 0x20, 0x69, 0x69, 0x3b, 0x72, 0x65, 0x64, 0x17e, 0x2e, 0x3b, 0x161, 0x61, 0x2e, 0x3b, 0x72, 0x61, 0x6d, 0x2e, 0x3b, +0x161, 0x65, 0x2e, 0x3b, 0x7a, 0x75, 0x6c, 0x2d, 0x6b, 0x2e, 0x3b, 0x7a, 0x75, 0x6c, 0x2d, 0x68, 0x2e, 0x3b, 0x6d, 0x75, +0x68, 0x61, 0x72, 0x65, 0x6d, 0x3b, 0x73, 0x61, 0x66, 0x65, 0x72, 0x3b, 0x72, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x69, 0x3b, +0x72, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x69, 0x69, 0x3b, 0x64, 0x17e, 0x75, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x69, 0x3b, 0x64, +0x17e, 0x75, 0x6d, 0x61, 0x64, 0x65, 0x20, 0x69, 0x69, 0x3b, 0x72, 0x65, 0x64, 0x17e, 0x65, 0x62, 0x3b, 0x53, 0x68, 0x61, +0x2bb, 0x62, 0x61, 0x6e, 0x3b, 0x72, 0x61, 0x6d, 0x61, 0x7a, 0x61, 0x6e, 0x3b, 0x161, 0x65, 0x76, 0x61, 0x6c, 0x3b, 0x7a, +0x75, 0x6c, 0x2d, 0x6b, 0x61, 0x64, 0x65, 0x3b, 0x7a, 0x75, 0x6c, 0x2d, 0x68, 0x69, 0x64, 0x17e, 0x65, 0x3b, 0x64, 0x7a, +0x76, 0x3b, 0x64, 0x7a, 0x64, 0x3b, 0x74, 0x65, 0x64, 0x3b, 0x61, 0x66, 0x254, 0x3b, 0x64, 0x61, 0x6d, 0x3b, 0x6d, 0x61, +0x73, 0x3b, 0x73, 0x69, 0x61, 0x3b, 0x64, 0x65, 0x61, 0x3b, 0x61, 0x6e, 0x79, 0x3b, 0x6b, 0x65, 0x6c, 0x3b, 0x61, 0x64, +0x65, 0x3b, 0x64, 0x7a, 0x6d, 0x3b, 0x64, 0x7a, 0x6f, 0x76, 0x65, 0x3b, 0x64, 0x7a, 0x6f, 0x64, 0x7a, 0x65, 0x3b, 0x74, +0x65, 0x64, 0x6f, 0x78, 0x65, 0x3b, 0x61, 0x66, 0x254, 0x66, 0x69, 0x1ebd, 0x3b, 0x64, 0x61, 0x6d, 0x25b, 0x3b, 0x6d, 0x61, +0x73, 0x61, 0x3b, 0x73, 0x69, 0x61, 0x6d, 0x6c, 0x254, 0x6d, 0x3b, 0x64, 0x65, 0x61, 0x73, 0x69, 0x61, 0x6d, 0x69, 0x6d, +0x65, 0x3b, 0x61, 0x6e, 0x79, 0x254, 0x6e, 0x79, 0x254, 0x3b, 0x6b, 0x65, 0x6c, 0x65, 0x3b, 0x61, 0x64, 0x65, 0x25b, 0x6d, +0x65, 0x6b, 0x70, 0x254, 0x78, 0x65, 0x3b, 0x64, 0x7a, 0x6f, 0x6d, 0x65, 0x3b, 0x64, 0x65, 0x20, 0x4d, 0x75, 0x68, 0x61, +0x72, 0x72, 0x61, 0x6d, 0x3b, 0x64, 0x65, 0x20, 0x53, 0x61, 0x66, 0x61, 0x72, 0x3b, 0x64, 0x65, 0x20, 0x52, 0x61, 0x62, +0x69, 0x2bb, 0x20, 0x49, 0x3b, 0x64, 0x65, 0x20, 0x52, 0x61, 0x62, 0x69, 0x2bb, 0x20, 0x49, 0x49, 0x3b, 0x64, 0x65, 0x20, +0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, 0x3b, 0x64, 0x65, 0x20, 0x4a, 0x75, 0x6d, 0x61, 0x64, 0x61, 0x20, 0x49, +0x49, 0x3b, 0x64, 0x65, 0x20, 0x52, 0x61, 0x6a, 0x61, 0x62, 0x3b, 0x64, 0x65, 0x20, 0x53, 0x68, 0x61, 0x2bb, 0x62, 0x61, +0x6e, 0x3b, 0x64, 0x65, 0x20, 0x52, 0x61, 0x6d, 0x61, 0x64, 0x61, 0x6e, 0x3b, 0x64, 0x65, 0x20, 0x53, 0x68, 0x61, 0x77, +0x77, 0x61, 0x6c, 0x3b, 0x64, 0x65, 0x20, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x51, 0x69, 0x2bb, 0x64, 0x61, 0x68, 0x3b, +0x64, 0x65, 0x20, 0x44, 0x68, 0x75, 0x2bb, 0x6c, 0x2d, 0x48, 0x69, 0x6a, 0x6a, 0x61, 0x68, 0x3b, 0x7a46, 0x54c8, 0x5170, 0x59c6, +0x6708, 0x3b, 0x8272, 0x6cd5, 0x5c14, 0x6708, 0x3b, 0x8d56, 0x6bd4, 0x6708, 0x20, 0x49, 0x3b, 0x8d56, 0x6bd4, 0x6708, 0x20, 0x49, 0x49, 0x3b, +0x4e3b, 0x9a6c, 0x8fbe, 0x6708, 0x20, 0x49, 0x3b, 0x4e3b, 0x9a6c, 0x8fbe, 0x6708, 0x20, 0x49, 0x49, 0x3b, 0x8d56, 0x54f2, 0x535c, 0x6708, 0x3b, +0x820d, 0x5c14, 0x90a6, 0x6708, 0x3b, 0x8d56, 0x4e70, 0x4e39, 0x6708, 0x3b, 0x95ea, 0x74e6, 0x9c81, 0x6708, 0x3b, 0x90fd, 0x5c14, 0x5580, 0x5c14, 0x5fb7, +0x6708, 0x3b, 0x90fd, 0x5c14, 0x9ed1, 0x54f2, 0x6708, 0x3b }; // GENERATED PART ENDS HERE diff -Naur a/qtbase/src/corelib/time/qjalalicalendar_data_p.h b/qtbase/src/corelib/time/qjalalicalendar_data_p.h --- a/qtbase/src/corelib/time/qjalalicalendar_data_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/time/qjalalicalendar_data_p.h 2022-01-25 17:23:44.087496495 +0000 @@ -59,8 +59,8 @@ // GENERATED PART STARTS HERE /* - This part of the file was generated on 2020-10-27 from the - Common Locale Data Repository v37 + This part of the file was generated on 2020-11-09 from the + Common Locale Data Repository v38 http://www.unicode.org/cldr/ @@ -353,6 +353,7 @@ { 67, 7, 217,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Kurdish/Latin/Turkey { 68, 7, 35,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Rundi/Latin/Burundi { 69, 23, 117,{ 2030,80 },{ 2110,81 },{ 185,27 },{ 2191,80 },{ 2110,81 },{ 185,27 }}, // Lao/Lao/Laos + { 70, 7, 230,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Latin/Latin/Vatican City State { 71, 7, 118,{ 2271,93 },{ 2271,93 },{ 185,27 },{ 2271,93 },{ 2271,93 },{ 185,27 }}, // Latvian/Latin/Latvia { 72, 7, 49,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Lingala/Latin/Congo Kinshasa { 72, 7, 6,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Lingala/Latin/Angola @@ -605,6 +606,7 @@ { 220, 2, 178,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Chuvash/Cyrillic/Russia { 230, 7, 49,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Luba Katanga/Latin/Congo Kinshasa { 231, 7, 125,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Luxembourgish/Latin/Luxembourg + { 232, 7, 225,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Navaho/Latin/United States { 236, 7, 21,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Walloon/Latin/Belgium { 237, 7, 37,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Aghem/Latin/Cameroon { 238, 7, 37,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Basaa/Latin/Cameroon @@ -630,6 +632,7 @@ { 259, 7, 37,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Meta/Latin/Cameroon { 260, 7, 37,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Ngiemboon/Latin/Cameroon { 261, 7, 197,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Aragonese/Latin/Spain + { 275, 13, 100,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Dogri/Devanagari/India { 290, 11, 100,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Manipuri/Bengali/India { 290, 72, 100,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Manipuri/Meitei Mayek/India { 304, 78, 100,{ 48,84 },{ 48,84 },{ 185,27 },{ 48,84 },{ 48,84 },{ 185,27 }}, // Santali/Ol Chiki/India diff -Naur a/qtbase/src/corelib/time/qromancalendar_data_p.h b/qtbase/src/corelib/time/qromancalendar_data_p.h --- a/qtbase/src/corelib/time/qromancalendar_data_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/time/qromancalendar_data_p.h 2022-01-25 17:23:44.089496488 +0000 @@ -59,8 +59,8 @@ // GENERATED PART STARTS HERE /* - This part of the file was generated on 2020-10-27 from the - Common Locale Data Repository v37 + This part of the file was generated on 2020-11-09 from the + Common Locale Data Repository v38 http://www.unicode.org/cldr/ @@ -111,49 +111,49 @@ { 8, 1, 260,{ 882,75 },{ 882,75 },{ 957,24 },{ 882,75 },{ 882,75 },{ 957,24 }}, // Arabic/Arabic/World { 9, 10, 11,{ 1474,48 },{ 1522,94 },{ 1616,24 },{ 1474,48 },{ 1640,106 },{ 1616,24 }}, // Armenian/Armenian/Armenia { 10, 11, 100,{ 1746,64 },{ 1810,89 },{ 1899,24 },{ 1746,64 },{ 1810,89 },{ 1899,24 }}, // Assamese/Bengali/India - { 12, 7, 15,{ 1923,48 },{ 1971,77 },{ 418,27 },{ 1923,48 },{ 2048,77 },{ 418,27 }}, // Azerbaijani/Latin/Azerbaijan + { 12, 7, 15,{ 1923,48 },{ 1971,77 },{ 418,27 },{ 1923,48 },{ 1971,77 },{ 418,27 }}, // Azerbaijani/Latin/Azerbaijan { 12, 1, 102,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Azerbaijani/Arabic/Iran - { 12, 2, 15,{ 2125,48 },{ 2173,77 },{ 418,27 },{ 2125,48 },{ 2250,77 },{ 418,27 }}, // Azerbaijani/Cyrillic/Azerbaijan + { 12, 2, 15,{ 2048,48 },{ 2096,77 },{ 418,27 },{ 2048,48 },{ 2173,77 },{ 418,27 }}, // Azerbaijani/Cyrillic/Azerbaijan { 13, 2, 178,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Bashkir/Cyrillic/Russia - { 14, 7, 197,{ 2327,60 },{ 2387,93 },{ 2480,24 },{ 2327,60 },{ 2504,105 },{ 2480,24 }}, // Basque/Latin/Spain - { 15, 11, 18,{ 2609,90 },{ 2609,90 },{ 2699,33 },{ 2732,77 },{ 2609,90 },{ 2699,33 }}, // Bengali/Bengali/Bangladesh - { 15, 11, 100,{ 2609,90 },{ 2609,90 },{ 2699,33 },{ 2732,77 },{ 2609,90 },{ 2699,33 }}, // Bengali/Bengali/India - { 16, 31, 25,{ 2809,63 },{ 2872,191 },{ 3063,27 },{ 3090,27 },{ 3117,132 },{ 3249,27 }}, // Dzongkha/Tibetan/Bhutan - { 19, 7, 74,{ 3276,63 },{ 3339,78 },{ 3417,36 },{ 3276,63 },{ 3339,78 },{ 3417,36 }}, // Breton/Latin/France - { 20, 2, 33,{ 3453,49 },{ 3502,82 },{ 3584,24 },{ 3453,49 },{ 3502,82 },{ 3584,24 }}, // Bulgarian/Cyrillic/Bulgaria - { 21, 25, 147,{ 3608,43 },{ 3651,88 },{ 3739,24 },{ 3608,43 },{ 3651,88 },{ 3739,24 }}, // Burmese/Myanmar/Myanmar - { 22, 2, 20,{ 3763,48 },{ 3811,95 },{ 3906,24 },{ 3930,48 },{ 3978,98 },{ 3906,24 }}, // Belarusian/Cyrillic/Belarus - { 23, 20, 36,{ 4076,71 },{ 4076,71 },{ 4147,24 },{ 4076,71 },{ 4076,71 },{ 4147,24 }}, // Khmer/Khmer/Cambodia - { 24, 7, 197,{ 4171,60 },{ 4231,82 },{ 4313,36 },{ 4349,93 },{ 4442,115 },{ 4313,36 }}, // Catalan/Latin/Spain - { 24, 7, 5,{ 4171,60 },{ 4231,82 },{ 4313,36 },{ 4349,93 },{ 4442,115 },{ 4313,36 }}, // Catalan/Latin/Andorra - { 24, 7, 74,{ 4171,60 },{ 4231,82 },{ 4313,36 },{ 4349,93 },{ 4442,115 },{ 4313,36 }}, // Catalan/Latin/France - { 24, 7, 106,{ 4171,60 },{ 4231,82 },{ 4313,36 },{ 4349,93 },{ 4442,115 },{ 4313,36 }}, // Catalan/Latin/Italy - { 25, 5, 44,{ 4557,39 },{ 4596,38 },{ 418,27 },{ 4557,39 },{ 4596,38 },{ 418,27 }}, // Chinese/Simplified Han/China - { 25, 5, 97,{ 4557,39 },{ 4596,38 },{ 418,27 },{ 4557,39 },{ 4596,38 },{ 418,27 }}, // Chinese/Simplified Han/Hong Kong - { 25, 5, 126,{ 4557,39 },{ 4596,38 },{ 418,27 },{ 4557,39 },{ 4596,38 },{ 418,27 }}, // Chinese/Simplified Han/Macau - { 25, 5, 190,{ 4557,39 },{ 4596,38 },{ 418,27 },{ 4557,39 },{ 4596,38 },{ 418,27 }}, // Chinese/Simplified Han/Singapore - { 25, 6, 97,{ 4557,39 },{ 4557,39 },{ 418,27 },{ 4557,39 },{ 4557,39 },{ 418,27 }}, // Chinese/Traditional Han/Hong Kong - { 25, 6, 126,{ 4557,39 },{ 4557,39 },{ 418,27 },{ 4557,39 },{ 4557,39 },{ 418,27 }}, // Chinese/Traditional Han/Macau - { 25, 6, 208,{ 4557,39 },{ 4557,39 },{ 418,27 },{ 4557,39 },{ 4557,39 },{ 418,27 }}, // Chinese/Traditional Han/Taiwan + { 14, 7, 197,{ 2250,60 },{ 2310,93 },{ 2403,24 },{ 2250,60 },{ 2427,105 },{ 2403,24 }}, // Basque/Latin/Spain + { 15, 11, 18,{ 2532,90 },{ 2532,90 },{ 2622,33 },{ 2655,77 },{ 2532,90 },{ 2622,33 }}, // Bengali/Bengali/Bangladesh + { 15, 11, 100,{ 2532,90 },{ 2532,90 },{ 2622,33 },{ 2655,77 },{ 2532,90 },{ 2622,33 }}, // Bengali/Bengali/India + { 16, 31, 25,{ 2732,63 },{ 2795,191 },{ 2986,27 },{ 3013,27 },{ 3040,132 },{ 3172,27 }}, // Dzongkha/Tibetan/Bhutan + { 19, 7, 74,{ 3199,63 },{ 3262,78 },{ 3340,36 },{ 3199,63 },{ 3262,78 },{ 3340,36 }}, // Breton/Latin/France + { 20, 2, 33,{ 3376,49 },{ 3425,82 },{ 3507,24 },{ 3376,49 },{ 3425,82 },{ 3507,24 }}, // Bulgarian/Cyrillic/Bulgaria + { 21, 25, 147,{ 3531,43 },{ 3574,88 },{ 3662,24 },{ 3531,43 },{ 3574,88 },{ 3662,24 }}, // Burmese/Myanmar/Myanmar + { 22, 2, 20,{ 3686,48 },{ 3734,95 },{ 3829,24 },{ 3853,48 },{ 3901,98 },{ 3829,24 }}, // Belarusian/Cyrillic/Belarus + { 23, 20, 36,{ 3999,71 },{ 3999,71 },{ 4070,24 },{ 3999,71 },{ 3999,71 },{ 4070,24 }}, // Khmer/Khmer/Cambodia + { 24, 7, 197,{ 4094,60 },{ 4154,82 },{ 4236,36 },{ 4272,93 },{ 4365,115 },{ 4236,36 }}, // Catalan/Latin/Spain + { 24, 7, 5,{ 4094,60 },{ 4154,82 },{ 4236,36 },{ 4272,93 },{ 4365,115 },{ 4236,36 }}, // Catalan/Latin/Andorra + { 24, 7, 74,{ 4094,60 },{ 4154,82 },{ 4236,36 },{ 4272,93 },{ 4365,115 },{ 4236,36 }}, // Catalan/Latin/France + { 24, 7, 106,{ 4094,60 },{ 4154,82 },{ 4236,36 },{ 4272,93 },{ 4365,115 },{ 4236,36 }}, // Catalan/Latin/Italy + { 25, 5, 44,{ 4480,39 },{ 4519,38 },{ 418,27 },{ 4480,39 },{ 4519,38 },{ 418,27 }}, // Chinese/Simplified Han/China + { 25, 5, 97,{ 4480,39 },{ 4519,38 },{ 418,27 },{ 4480,39 },{ 4519,38 },{ 418,27 }}, // Chinese/Simplified Han/Hong Kong + { 25, 5, 126,{ 4480,39 },{ 4519,38 },{ 418,27 },{ 4480,39 },{ 4519,38 },{ 418,27 }}, // Chinese/Simplified Han/Macau + { 25, 5, 190,{ 4480,39 },{ 4519,38 },{ 418,27 },{ 4480,39 },{ 4519,38 },{ 418,27 }}, // Chinese/Simplified Han/Singapore + { 25, 6, 97,{ 4480,39 },{ 4480,39 },{ 418,27 },{ 4480,39 },{ 4480,39 },{ 418,27 }}, // Chinese/Traditional Han/Hong Kong + { 25, 6, 126,{ 4480,39 },{ 4480,39 },{ 418,27 },{ 4480,39 },{ 4480,39 },{ 418,27 }}, // Chinese/Traditional Han/Macau + { 25, 6, 208,{ 4480,39 },{ 4480,39 },{ 418,27 },{ 4480,39 },{ 4480,39 },{ 418,27 }}, // Chinese/Traditional Han/Taiwan { 26, 7, 74,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Corsican/Latin/France - { 27, 7, 54,{ 4634,49 },{ 4683,94 },{ 4777,39 },{ 4634,49 },{ 4816,98 },{ 4777,39 }}, // Croatian/Latin/Croatia - { 27, 7, 27,{ 4634,49 },{ 4683,94 },{ 4777,39 },{ 4634,49 },{ 4816,98 },{ 4777,39 }}, // Croatian/Latin/Bosnia And Herzegowina - { 28, 7, 57,{ 4914,48 },{ 4962,82 },{ 418,27 },{ 4914,48 },{ 5044,84 },{ 418,27 }}, // Czech/Latin/Czech Republic - { 29, 7, 58,{ 5128,59 },{ 5187,84 },{ 134,24 },{ 5128,59 },{ 5187,84 },{ 134,24 }}, // Danish/Latin/Denmark - { 29, 7, 86,{ 5128,59 },{ 5187,84 },{ 134,24 },{ 5128,59 },{ 5187,84 },{ 134,24 }}, // Danish/Latin/Greenland - { 30, 7, 151,{ 5271,59 },{ 5330,88 },{ 134,24 },{ 5271,59 },{ 5330,88 },{ 134,24 }}, // Dutch/Latin/Netherlands - { 30, 7, 12,{ 5271,59 },{ 5330,88 },{ 134,24 },{ 5271,59 },{ 5330,88 },{ 134,24 }}, // Dutch/Latin/Aruba - { 30, 7, 21,{ 5271,59 },{ 5330,88 },{ 134,24 },{ 5271,59 },{ 5330,88 },{ 134,24 }}, // Dutch/Latin/Belgium - { 30, 7, 152,{ 5271,59 },{ 5330,88 },{ 134,24 },{ 5271,59 },{ 5330,88 },{ 134,24 }}, // Dutch/Latin/Cura Sao - { 30, 7, 202,{ 5271,59 },{ 5330,88 },{ 134,24 },{ 5271,59 },{ 5330,88 },{ 134,24 }}, // Dutch/Latin/Suriname - { 30, 7, 255,{ 5271,59 },{ 5330,88 },{ 134,24 },{ 5271,59 },{ 5330,88 },{ 134,24 }}, // Dutch/Latin/Bonaire - { 30, 7, 256,{ 5271,59 },{ 5330,88 },{ 134,24 },{ 5271,59 },{ 5330,88 },{ 134,24 }}, // Dutch/Latin/Sint Maarten + { 27, 7, 54,{ 4557,49 },{ 4606,94 },{ 4700,39 },{ 4557,49 },{ 4739,98 },{ 4700,39 }}, // Croatian/Latin/Croatia + { 27, 7, 27,{ 4557,49 },{ 4606,94 },{ 4700,39 },{ 4557,49 },{ 4739,98 },{ 4700,39 }}, // Croatian/Latin/Bosnia And Herzegowina + { 28, 7, 57,{ 4837,48 },{ 4885,82 },{ 418,27 },{ 4837,48 },{ 4967,84 },{ 418,27 }}, // Czech/Latin/Czech Republic + { 29, 7, 58,{ 5051,59 },{ 5110,84 },{ 134,24 },{ 5051,59 },{ 5110,84 },{ 134,24 }}, // Danish/Latin/Denmark + { 29, 7, 86,{ 5051,59 },{ 5110,84 },{ 134,24 },{ 5051,59 },{ 5110,84 },{ 134,24 }}, // Danish/Latin/Greenland + { 30, 7, 151,{ 5194,59 },{ 5253,88 },{ 134,24 },{ 5194,59 },{ 5253,88 },{ 134,24 }}, // Dutch/Latin/Netherlands + { 30, 7, 12,{ 5194,59 },{ 5253,88 },{ 134,24 },{ 5194,59 },{ 5253,88 },{ 134,24 }}, // Dutch/Latin/Aruba + { 30, 7, 21,{ 5194,59 },{ 5253,88 },{ 134,24 },{ 5194,59 },{ 5253,88 },{ 134,24 }}, // Dutch/Latin/Belgium + { 30, 7, 152,{ 5194,59 },{ 5253,88 },{ 134,24 },{ 5194,59 },{ 5253,88 },{ 134,24 }}, // Dutch/Latin/Cura Sao + { 30, 7, 202,{ 5194,59 },{ 5253,88 },{ 134,24 },{ 5194,59 },{ 5253,88 },{ 134,24 }}, // Dutch/Latin/Suriname + { 30, 7, 255,{ 5194,59 },{ 5253,88 },{ 134,24 },{ 5194,59 },{ 5253,88 },{ 134,24 }}, // Dutch/Latin/Bonaire + { 30, 7, 256,{ 5194,59 },{ 5253,88 },{ 134,24 },{ 5194,59 },{ 5253,88 },{ 134,24 }}, // Dutch/Latin/Sint Maarten { 31, 7, 225,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/United States { 31, 3, 225,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // English/Deseret/United States { 31, 7, 4,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/American Samoa { 31, 7, 7,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/Anguilla { 31, 7, 9,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/Antigua And Barbuda - { 31, 7, 13,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/Australia + { 31, 7, 13,{ 0,48 },{ 48,86 },{ 134,24 },{ 5341,51 },{ 48,86 },{ 134,24 }}, // English/Latin/Australia { 31, 7, 14,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/Austria { 31, 7, 16,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/Bahamas { 31, 7, 19,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/Barbados @@ -164,7 +164,7 @@ { 31, 7, 31,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/British Indian Ocean Territory { 31, 7, 35,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/Burundi { 31, 7, 37,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/Cameroon - { 31, 7, 38,{ 5418,59 },{ 48,86 },{ 134,24 },{ 5418,59 },{ 48,86 },{ 134,24 }}, // English/Latin/Canada + { 31, 7, 38,{ 5392,59 },{ 48,86 },{ 134,24 },{ 5392,59 },{ 48,86 },{ 134,24 }}, // English/Latin/Canada { 31, 7, 40,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/Cayman Islands { 31, 7, 45,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/Christmas Island { 31, 7, 46,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/Cocos Islands @@ -240,7 +240,7 @@ { 31, 7, 220,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/Tuvalu { 31, 7, 221,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/Uganda { 31, 7, 223,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/United Arab Emirates - { 31, 7, 224,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/United Kingdom + { 31, 7, 224,{ 5451,49 },{ 48,86 },{ 134,24 },{ 5451,49 },{ 48,86 },{ 134,24 }}, // English/Latin/United Kingdom { 31, 7, 226,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/United States Minor Outlying Islands { 31, 7, 229,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/Vanuatu { 31, 7, 233,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/British Virgin Islands @@ -254,267 +254,268 @@ { 31, 7, 256,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/Sint Maarten { 31, 7, 260,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/World { 31, 7, 261,{ 0,48 },{ 48,86 },{ 134,24 },{ 0,48 },{ 48,86 },{ 134,24 }}, // English/Latin/Europe - { 32, 7, 260,{ 5477,48 },{ 5525,91 },{ 134,24 },{ 5477,48 },{ 5525,91 },{ 134,24 }}, // Esperanto/Latin/World - { 33, 7, 68,{ 5616,59 },{ 5675,91 },{ 5766,24 },{ 5616,59 },{ 5675,91 },{ 5766,24 }}, // Estonian/Latin/Estonia - { 34, 7, 71,{ 5790,48 },{ 5838,83 },{ 134,24 },{ 5921,59 },{ 5838,83 },{ 134,24 }}, // Faroese/Latin/Faroe Islands - { 34, 7, 58,{ 5790,48 },{ 5838,83 },{ 134,24 },{ 5921,59 },{ 5838,83 },{ 134,24 }}, // Faroese/Latin/Denmark - { 36, 7, 73,{ 5980,69 },{ 6049,105 },{ 6154,24 },{ 6178,93 },{ 6271,129 },{ 6154,24 }}, // Finnish/Latin/Finland - { 37, 7, 74,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/France - { 37, 7, 3,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Algeria - { 37, 7, 21,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Belgium - { 37, 7, 23,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Benin - { 37, 7, 34,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Burkina Faso - { 37, 7, 35,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Burundi - { 37, 7, 37,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Cameroon - { 37, 7, 38,{ 6548,64 },{ 6463,85 },{ 134,24 },{ 6548,64 },{ 6463,85 },{ 134,24 }}, // French/Latin/Canada - { 37, 7, 41,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Central African Republic - { 37, 7, 42,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Chad - { 37, 7, 48,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Comoros - { 37, 7, 49,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Congo Kinshasa - { 37, 7, 50,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Congo Brazzaville - { 37, 7, 53,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Ivory Coast - { 37, 7, 59,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Djibouti - { 37, 7, 66,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Equatorial Guinea - { 37, 7, 76,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/French Guiana - { 37, 7, 77,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/French Polynesia - { 37, 7, 79,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Gabon - { 37, 7, 88,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Guadeloupe - { 37, 7, 91,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Guinea - { 37, 7, 94,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Haiti - { 37, 7, 125,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Luxembourg - { 37, 7, 128,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Madagascar - { 37, 7, 132,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Mali - { 37, 7, 135,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Martinique - { 37, 7, 136,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Mauritania - { 37, 7, 137,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Mauritius - { 37, 7, 138,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Mayotte - { 37, 7, 142,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Monaco - { 37, 7, 145,{ 6612,61 },{ 6463,85 },{ 134,24 },{ 6612,61 },{ 6463,85 },{ 134,24 }}, // French/Latin/Morocco - { 37, 7, 153,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/New Caledonia - { 37, 7, 156,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Niger - { 37, 7, 176,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Reunion - { 37, 7, 179,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Rwanda - { 37, 7, 187,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Senegal - { 37, 7, 188,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Seychelles - { 37, 7, 200,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Saint Pierre And Miquelon - { 37, 7, 206,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Switzerland - { 37, 7, 207,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Syria - { 37, 7, 212,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Togo - { 37, 7, 216,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Tunisia - { 37, 7, 229,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Vanuatu - { 37, 7, 235,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Wallis And Futuna Islands - { 37, 7, 244,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Saint Barthelemy - { 37, 7, 245,{ 6400,63 },{ 6463,85 },{ 134,24 },{ 6400,63 },{ 6463,85 },{ 134,24 }}, // French/Latin/Saint Martin - { 38, 7, 151,{ 6673,48 },{ 6721,95 },{ 134,24 },{ 6673,48 },{ 6721,95 },{ 134,24 }}, // Western Frisian/Latin/Netherlands - { 39, 7, 224,{ 6816,61 },{ 6877,142 },{ 7019,24 },{ 6816,61 },{ 7043,167 },{ 7019,24 }}, // Gaelic/Latin/United Kingdom - { 40, 7, 197,{ 7210,60 },{ 7270,87 },{ 7357,24 },{ 7381,60 },{ 7441,87 },{ 7528,36 }}, // Galician/Latin/Spain - { 41, 15, 81,{ 7564,48 },{ 7612,99 },{ 7711,24 },{ 7564,48 },{ 7612,99 },{ 7711,24 }}, // Georgian/Georgian/Georgia - { 42, 7, 82,{ 7735,48 },{ 7783,83 },{ 134,24 },{ 7866,60 },{ 7783,83 },{ 134,24 }}, // German/Latin/Germany - { 42, 7, 14,{ 7926,48 },{ 7974,83 },{ 134,24 },{ 8057,59 },{ 7974,83 },{ 134,24 }}, // German/Latin/Austria - { 42, 7, 21,{ 7735,48 },{ 7783,83 },{ 134,24 },{ 7866,60 },{ 7783,83 },{ 134,24 }}, // German/Latin/Belgium - { 42, 7, 106,{ 7926,48 },{ 7974,83 },{ 134,24 },{ 8057,59 },{ 7974,83 },{ 134,24 }}, // German/Latin/Italy - { 42, 7, 123,{ 7735,48 },{ 7783,83 },{ 134,24 },{ 7866,60 },{ 7783,83 },{ 134,24 }}, // German/Latin/Liechtenstein - { 42, 7, 125,{ 7735,48 },{ 7783,83 },{ 134,24 },{ 7866,60 },{ 7783,83 },{ 134,24 }}, // German/Latin/Luxembourg - { 42, 7, 206,{ 7735,48 },{ 7783,83 },{ 134,24 },{ 7866,60 },{ 7783,83 },{ 134,24 }}, // German/Latin/Switzerland - { 43, 16, 85,{ 8116,50 },{ 8166,115 },{ 8281,24 },{ 8305,50 },{ 8355,115 },{ 8281,24 }}, // Greek/Greek/Greece - { 43, 16, 56,{ 8116,50 },{ 8166,115 },{ 8281,24 },{ 8305,50 },{ 8355,115 },{ 8281,24 }}, // Greek/Greek/Cyprus - { 44, 7, 86,{ 8470,50 },{ 8520,99 },{ 134,24 },{ 8470,50 },{ 8619,111 },{ 134,24 }}, // Greenlandic/Latin/Greenland + { 32, 7, 260,{ 5500,48 },{ 5548,91 },{ 134,24 },{ 5500,48 },{ 5548,91 },{ 134,24 }}, // Esperanto/Latin/World + { 33, 7, 68,{ 5639,59 },{ 5698,91 },{ 5789,24 },{ 5639,59 },{ 5698,91 },{ 5789,24 }}, // Estonian/Latin/Estonia + { 34, 7, 71,{ 5813,48 },{ 5861,83 },{ 134,24 },{ 5944,59 },{ 5861,83 },{ 134,24 }}, // Faroese/Latin/Faroe Islands + { 34, 7, 58,{ 5813,48 },{ 5861,83 },{ 134,24 },{ 5944,59 },{ 5861,83 },{ 134,24 }}, // Faroese/Latin/Denmark + { 36, 7, 73,{ 6003,69 },{ 6072,105 },{ 6177,24 },{ 6201,93 },{ 6294,129 },{ 6177,24 }}, // Finnish/Latin/Finland + { 37, 7, 74,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/France + { 37, 7, 3,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Algeria + { 37, 7, 21,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Belgium + { 37, 7, 23,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Benin + { 37, 7, 34,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Burkina Faso + { 37, 7, 35,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Burundi + { 37, 7, 37,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Cameroon + { 37, 7, 38,{ 6571,64 },{ 6486,85 },{ 134,24 },{ 6571,64 },{ 6486,85 },{ 134,24 }}, // French/Latin/Canada + { 37, 7, 41,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Central African Republic + { 37, 7, 42,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Chad + { 37, 7, 48,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Comoros + { 37, 7, 49,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Congo Kinshasa + { 37, 7, 50,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Congo Brazzaville + { 37, 7, 53,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Ivory Coast + { 37, 7, 59,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Djibouti + { 37, 7, 66,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Equatorial Guinea + { 37, 7, 76,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/French Guiana + { 37, 7, 77,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/French Polynesia + { 37, 7, 79,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Gabon + { 37, 7, 88,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Guadeloupe + { 37, 7, 91,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Guinea + { 37, 7, 94,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Haiti + { 37, 7, 125,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Luxembourg + { 37, 7, 128,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Madagascar + { 37, 7, 132,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Mali + { 37, 7, 135,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Martinique + { 37, 7, 136,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Mauritania + { 37, 7, 137,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Mauritius + { 37, 7, 138,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Mayotte + { 37, 7, 142,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Monaco + { 37, 7, 145,{ 6635,61 },{ 6486,85 },{ 134,24 },{ 6635,61 },{ 6486,85 },{ 134,24 }}, // French/Latin/Morocco + { 37, 7, 153,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/New Caledonia + { 37, 7, 156,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Niger + { 37, 7, 176,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Reunion + { 37, 7, 179,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Rwanda + { 37, 7, 187,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Senegal + { 37, 7, 188,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Seychelles + { 37, 7, 200,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Saint Pierre And Miquelon + { 37, 7, 206,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Switzerland + { 37, 7, 207,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Syria + { 37, 7, 212,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Togo + { 37, 7, 216,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Tunisia + { 37, 7, 229,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Vanuatu + { 37, 7, 235,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Wallis And Futuna Islands + { 37, 7, 244,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Saint Barthelemy + { 37, 7, 245,{ 6423,63 },{ 6486,85 },{ 134,24 },{ 6423,63 },{ 6486,85 },{ 134,24 }}, // French/Latin/Saint Martin + { 38, 7, 151,{ 6696,48 },{ 6744,95 },{ 134,24 },{ 6696,48 },{ 6744,95 },{ 134,24 }}, // Western Frisian/Latin/Netherlands + { 39, 7, 224,{ 6839,61 },{ 6900,142 },{ 7042,24 },{ 6839,61 },{ 7066,167 },{ 7042,24 }}, // Gaelic/Latin/United Kingdom + { 40, 7, 197,{ 7233,60 },{ 7293,87 },{ 7380,24 },{ 7404,60 },{ 7464,87 },{ 7551,36 }}, // Galician/Latin/Spain + { 41, 15, 81,{ 7587,48 },{ 7635,99 },{ 7734,24 },{ 7587,48 },{ 7635,99 },{ 7734,24 }}, // Georgian/Georgian/Georgia + { 42, 7, 82,{ 7758,48 },{ 7806,83 },{ 134,24 },{ 7889,60 },{ 7806,83 },{ 134,24 }}, // German/Latin/Germany + { 42, 7, 14,{ 7949,48 },{ 7997,83 },{ 134,24 },{ 8080,59 },{ 7997,83 },{ 134,24 }}, // German/Latin/Austria + { 42, 7, 21,{ 7758,48 },{ 7806,83 },{ 134,24 },{ 7889,60 },{ 7806,83 },{ 134,24 }}, // German/Latin/Belgium + { 42, 7, 106,{ 7949,48 },{ 7997,83 },{ 134,24 },{ 8080,59 },{ 7997,83 },{ 134,24 }}, // German/Latin/Italy + { 42, 7, 123,{ 7758,48 },{ 7806,83 },{ 134,24 },{ 7889,60 },{ 7806,83 },{ 134,24 }}, // German/Latin/Liechtenstein + { 42, 7, 125,{ 7758,48 },{ 7806,83 },{ 134,24 },{ 7889,60 },{ 7806,83 },{ 134,24 }}, // German/Latin/Luxembourg + { 42, 7, 206,{ 7758,48 },{ 7806,83 },{ 134,24 },{ 7889,60 },{ 7806,83 },{ 134,24 }}, // German/Latin/Switzerland + { 43, 16, 85,{ 8139,50 },{ 8189,115 },{ 8304,24 },{ 8328,50 },{ 8378,115 },{ 8304,24 }}, // Greek/Greek/Greece + { 43, 16, 56,{ 8139,50 },{ 8189,115 },{ 8304,24 },{ 8328,50 },{ 8378,115 },{ 8304,24 }}, // Greek/Greek/Cyprus + { 44, 7, 86,{ 8493,50 },{ 8543,99 },{ 134,24 },{ 8493,50 },{ 8642,111 },{ 134,24 }}, // Greenlandic/Latin/Greenland { 45, 7, 168,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Guarani/Latin/Paraguay - { 46, 17, 100,{ 8730,67 },{ 8797,87 },{ 8884,31 },{ 8730,67 },{ 8797,87 },{ 8884,31 }}, // Gujarati/Gujarati/India - { 47, 7, 157,{ 8915,48 },{ 8963,85 },{ 9048,24 },{ 8915,48 },{ 8963,85 },{ 9048,24 }}, // Hausa/Latin/Nigeria + { 46, 17, 100,{ 8753,67 },{ 8820,87 },{ 8907,31 },{ 8753,67 },{ 8820,87 },{ 8907,31 }}, // Gujarati/Gujarati/India + { 47, 7, 157,{ 8938,48 },{ 8986,85 },{ 9071,24 },{ 8938,48 },{ 8986,85 },{ 9071,24 }}, // Hausa/Latin/Nigeria { 47, 1, 157,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Hausa/Arabic/Nigeria - { 47, 7, 83,{ 8915,48 },{ 8963,85 },{ 9048,24 },{ 8915,48 },{ 8963,85 },{ 9048,24 }}, // Hausa/Latin/Ghana - { 47, 7, 156,{ 8915,48 },{ 8963,85 },{ 9048,24 },{ 8915,48 },{ 8963,85 },{ 9048,24 }}, // Hausa/Latin/Niger - { 48, 18, 105,{ 9072,58 },{ 9130,72 },{ 418,27 },{ 9072,58 },{ 9130,72 },{ 418,27 }}, // Hebrew/Hebrew/Israel - { 49, 13, 100,{ 9202,59 },{ 9261,73 },{ 9334,30 },{ 9202,59 },{ 9261,73 },{ 9334,30 }}, // Hindi/Devanagari/India + { 47, 7, 83,{ 8938,48 },{ 8986,85 },{ 9071,24 },{ 8938,48 },{ 8986,85 },{ 9071,24 }}, // Hausa/Latin/Ghana + { 47, 7, 156,{ 8938,48 },{ 8986,85 },{ 9071,24 },{ 8938,48 },{ 8986,85 },{ 9071,24 }}, // Hausa/Latin/Niger + { 48, 18, 105,{ 9095,58 },{ 9153,72 },{ 418,27 },{ 9095,58 },{ 9153,72 },{ 418,27 }}, // Hebrew/Hebrew/Israel + { 49, 13, 100,{ 9225,59 },{ 9284,73 },{ 9357,30 },{ 9225,59 },{ 9284,73 },{ 9357,30 }}, // Hindi/Devanagari/India { 49, 7, 100,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Hindi/Latin/India - { 50, 7, 98,{ 9364,64 },{ 9428,98 },{ 9526,25 },{ 9364,64 },{ 9428,98 },{ 9526,25 }}, // Hungarian/Latin/Hungary - { 51, 7, 99,{ 9551,59 },{ 9610,82 },{ 9692,24 },{ 9551,59 },{ 9610,82 },{ 9692,24 }}, // Icelandic/Latin/Iceland - { 52, 7, 101,{ 9716,48 },{ 9764,87 },{ 134,24 },{ 9716,48 },{ 9764,87 },{ 134,24 }}, // Indonesian/Latin/Indonesia - { 53, 7, 260,{ 9851,48 },{ 9899,93 },{ 418,27 },{ 9851,48 },{ 9899,93 },{ 9992,24 }}, // Interlingua/Latin/World + { 50, 7, 98,{ 9387,64 },{ 9451,98 },{ 9549,25 },{ 9387,64 },{ 9451,98 },{ 9549,25 }}, // Hungarian/Latin/Hungary + { 51, 7, 99,{ 9574,59 },{ 9633,82 },{ 9715,24 },{ 9574,59 },{ 9633,82 },{ 9715,24 }}, // Icelandic/Latin/Iceland + { 52, 7, 101,{ 9739,48 },{ 9787,87 },{ 134,24 },{ 9739,48 },{ 9787,87 },{ 134,24 }}, // Indonesian/Latin/Indonesia + { 53, 7, 260,{ 9874,48 },{ 9922,93 },{ 418,27 },{ 9874,48 },{ 9922,93 },{ 10015,24 }}, // Interlingua/Latin/World { 55, 44, 38,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Inuktitut/Canadian Aboriginal/Canada { 55, 7, 38,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Inuktitut/Latin/Canada - { 57, 7, 104,{ 10016,62 },{ 10078,107 },{ 10185,24 },{ 10016,62 },{ 10078,107 },{ 10185,24 }}, // Irish/Latin/Ireland - { 57, 7, 224,{ 10016,62 },{ 10078,107 },{ 10185,24 },{ 10016,62 },{ 10078,107 },{ 10185,24 }}, // Irish/Latin/United Kingdom - { 58, 7, 106,{ 10209,48 },{ 10257,94 },{ 10351,24 },{ 10209,48 },{ 10257,94 },{ 10351,24 }}, // Italian/Latin/Italy - { 58, 7, 184,{ 10209,48 },{ 10257,94 },{ 10351,24 },{ 10209,48 },{ 10257,94 },{ 10351,24 }}, // Italian/Latin/San Marino - { 58, 7, 206,{ 10209,48 },{ 10257,94 },{ 10351,24 },{ 10209,48 },{ 10257,94 },{ 10351,24 }}, // Italian/Latin/Switzerland - { 58, 7, 230,{ 10209,48 },{ 10257,94 },{ 10351,24 },{ 10209,48 },{ 10257,94 },{ 10351,24 }}, // Italian/Latin/Vatican City State - { 59, 19, 108,{ 4557,39 },{ 4557,39 },{ 418,27 },{ 4557,39 },{ 4557,39 },{ 418,27 }}, // Japanese/Japanese/Japan - { 60, 7, 101,{ 10375,48 },{ 9764,87 },{ 134,24 },{ 10375,48 },{ 9764,87 },{ 134,24 }}, // Javanese/Latin/Indonesia - { 61, 21, 100,{ 10423,63 },{ 10486,87 },{ 10573,31 },{ 10604,69 },{ 10486,87 },{ 10573,31 }}, // Kannada/Kannada/India - { 62, 1, 100,{ 10673,72 },{ 10673,72 },{ 10745,24 },{ 10673,72 },{ 10673,72 },{ 10745,24 }}, // Kashmiri/Arabic/India + { 57, 7, 104,{ 10039,62 },{ 10101,107 },{ 10208,24 },{ 10039,62 },{ 10101,107 },{ 10208,24 }}, // Irish/Latin/Ireland + { 57, 7, 224,{ 10039,62 },{ 10101,107 },{ 10208,24 },{ 10039,62 },{ 10101,107 },{ 10208,24 }}, // Irish/Latin/United Kingdom + { 58, 7, 106,{ 10232,48 },{ 10280,94 },{ 10374,24 },{ 10232,48 },{ 10280,94 },{ 10374,24 }}, // Italian/Latin/Italy + { 58, 7, 184,{ 10232,48 },{ 10280,94 },{ 10374,24 },{ 10232,48 },{ 10280,94 },{ 10374,24 }}, // Italian/Latin/San Marino + { 58, 7, 206,{ 10232,48 },{ 10280,94 },{ 10374,24 },{ 10232,48 },{ 10280,94 },{ 10374,24 }}, // Italian/Latin/Switzerland + { 58, 7, 230,{ 10232,48 },{ 10280,94 },{ 10374,24 },{ 10232,48 },{ 10280,94 },{ 10374,24 }}, // Italian/Latin/Vatican City State + { 59, 19, 108,{ 4480,39 },{ 4480,39 },{ 418,27 },{ 4480,39 },{ 4480,39 },{ 418,27 }}, // Japanese/Japanese/Japan + { 60, 7, 101,{ 10398,48 },{ 9787,87 },{ 134,24 },{ 10398,48 },{ 9787,87 },{ 134,24 }}, // Javanese/Latin/Indonesia + { 61, 21, 100,{ 10446,63 },{ 10509,87 },{ 10596,31 },{ 10627,69 },{ 10509,87 },{ 10596,31 }}, // Kannada/Kannada/India + { 62, 1, 100,{ 10696,72 },{ 10696,72 },{ 10768,24 },{ 10696,72 },{ 10696,72 },{ 10768,24 }}, // Kashmiri/Arabic/India { 62, 13, 100,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Kashmiri/Devanagari/India - { 63, 2, 110,{ 10769,60 },{ 10829,83 },{ 10912,24 },{ 10769,60 },{ 10936,83 },{ 10912,24 }}, // Kazakh/Cyrillic/Kazakhstan - { 64, 7, 179,{ 11019,60 },{ 11079,101 },{ 418,27 },{ 11019,60 },{ 11079,101 },{ 418,27 }}, // Kinyarwanda/Latin/Rwanda - { 65, 2, 116,{ 11180,48 },{ 11228,80 },{ 11308,24 },{ 11332,59 },{ 11391,80 },{ 11308,24 }}, // Kirghiz/Cyrillic/Kyrgyzstan - { 66, 22, 114,{ 11471,39 },{ 11471,39 },{ 11471,39 },{ 11471,39 },{ 11471,39 },{ 11471,39 }}, // Korean/Korean/South Korea - { 66, 22, 113,{ 11471,39 },{ 11471,39 },{ 11471,39 },{ 11471,39 },{ 11471,39 },{ 11471,39 }}, // Korean/Korean/North Korea - { 67, 7, 217,{ 11510,48 },{ 11558,88 },{ 11646,24 },{ 11510,48 },{ 11670,101 },{ 11646,24 }}, // Kurdish/Latin/Turkey - { 68, 7, 35,{ 11771,60 },{ 11831,106 },{ 418,27 },{ 11771,60 },{ 11831,106 },{ 418,27 }}, // Rundi/Latin/Burundi - { 69, 23, 117,{ 11937,61 },{ 11998,75 },{ 418,27 },{ 11937,61 },{ 11998,75 },{ 418,27 }}, // Lao/Lao/Laos - { 71, 7, 118,{ 12073,65 },{ 12138,101 },{ 134,24 },{ 12073,65 },{ 12138,101 },{ 134,24 }}, // Latvian/Latin/Latvia - { 72, 7, 49,{ 12239,48 },{ 12287,203 },{ 12490,24 },{ 12239,48 },{ 12287,203 },{ 12490,24 }}, // Lingala/Latin/Congo Kinshasa - { 72, 7, 6,{ 12239,48 },{ 12287,203 },{ 12490,24 },{ 12239,48 },{ 12287,203 },{ 12490,24 }}, // Lingala/Latin/Angola - { 72, 7, 41,{ 12239,48 },{ 12287,203 },{ 12490,24 },{ 12239,48 },{ 12287,203 },{ 12490,24 }}, // Lingala/Latin/Central African Republic - { 72, 7, 50,{ 12239,48 },{ 12287,203 },{ 12490,24 },{ 12239,48 },{ 12287,203 },{ 12490,24 }}, // Lingala/Latin/Congo Brazzaville - { 73, 7, 124,{ 12514,70 },{ 12584,96 },{ 12680,24 },{ 12514,70 },{ 12704,98 },{ 12680,24 }}, // Lithuanian/Latin/Lithuania - { 74, 2, 127,{ 12802,61 },{ 12863,85 },{ 12948,24 },{ 12802,61 },{ 12863,85 },{ 12948,24 }}, // Macedonian/Cyrillic/Macedonia - { 75, 7, 128,{ 12972,48 },{ 13020,92 },{ 134,24 },{ 12972,48 },{ 13020,92 },{ 134,24 }}, // Malagasy/Latin/Madagascar - { 76, 7, 130,{ 13112,48 },{ 13160,82 },{ 13242,24 },{ 13112,48 },{ 13160,82 },{ 13242,24 }}, // Malay/Latin/Malaysia + { 63, 2, 110,{ 10792,60 },{ 10852,83 },{ 10935,24 },{ 10792,60 },{ 10959,83 },{ 10935,24 }}, // Kazakh/Cyrillic/Kazakhstan + { 64, 7, 179,{ 11042,60 },{ 11102,101 },{ 418,27 },{ 11042,60 },{ 11102,101 },{ 418,27 }}, // Kinyarwanda/Latin/Rwanda + { 65, 2, 116,{ 11203,48 },{ 11251,80 },{ 11331,24 },{ 11355,59 },{ 11414,80 },{ 11331,24 }}, // Kirghiz/Cyrillic/Kyrgyzstan + { 66, 22, 114,{ 11494,39 },{ 11494,39 },{ 11494,39 },{ 11494,39 },{ 11494,39 },{ 11494,39 }}, // Korean/Korean/South Korea + { 66, 22, 113,{ 11494,39 },{ 11494,39 },{ 11494,39 },{ 11494,39 },{ 11494,39 },{ 11494,39 }}, // Korean/Korean/North Korea + { 67, 7, 217,{ 11533,48 },{ 11581,88 },{ 11669,24 },{ 11533,48 },{ 11693,101 },{ 11669,24 }}, // Kurdish/Latin/Turkey + { 68, 7, 35,{ 11794,60 },{ 11854,106 },{ 418,27 },{ 11794,60 },{ 11854,106 },{ 418,27 }}, // Rundi/Latin/Burundi + { 69, 23, 117,{ 11960,61 },{ 12021,75 },{ 418,27 },{ 11960,61 },{ 12021,75 },{ 418,27 }}, // Lao/Lao/Laos + { 70, 7, 230,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Latin/Latin/Vatican City State + { 71, 7, 118,{ 12096,65 },{ 12161,101 },{ 134,24 },{ 12096,65 },{ 12161,101 },{ 134,24 }}, // Latvian/Latin/Latvia + { 72, 7, 49,{ 12262,48 },{ 12310,203 },{ 12513,24 },{ 12262,48 },{ 12310,203 },{ 12513,24 }}, // Lingala/Latin/Congo Kinshasa + { 72, 7, 6,{ 12262,48 },{ 12310,203 },{ 12513,24 },{ 12262,48 },{ 12310,203 },{ 12513,24 }}, // Lingala/Latin/Angola + { 72, 7, 41,{ 12262,48 },{ 12310,203 },{ 12513,24 },{ 12262,48 },{ 12310,203 },{ 12513,24 }}, // Lingala/Latin/Central African Republic + { 72, 7, 50,{ 12262,48 },{ 12310,203 },{ 12513,24 },{ 12262,48 },{ 12310,203 },{ 12513,24 }}, // Lingala/Latin/Congo Brazzaville + { 73, 7, 124,{ 12537,70 },{ 12607,96 },{ 12703,24 },{ 12537,70 },{ 12727,98 },{ 12703,24 }}, // Lithuanian/Latin/Lithuania + { 74, 2, 127,{ 12825,61 },{ 12886,85 },{ 12971,24 },{ 12825,61 },{ 12886,85 },{ 12971,24 }}, // Macedonian/Cyrillic/Macedonia + { 75, 7, 128,{ 12995,48 },{ 13043,92 },{ 134,24 },{ 12995,48 },{ 13043,92 },{ 134,24 }}, // Malagasy/Latin/Madagascar + { 76, 7, 130,{ 13135,48 },{ 13183,82 },{ 13265,24 },{ 13135,48 },{ 13183,82 },{ 13265,24 }}, // Malay/Latin/Malaysia { 76, 1, 130,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Malay/Arabic/Malaysia - { 76, 7, 32,{ 13112,48 },{ 13160,82 },{ 13242,24 },{ 13112,48 },{ 13160,82 },{ 13242,24 }}, // Malay/Latin/Brunei - { 76, 7, 101,{ 13112,48 },{ 13160,82 },{ 13242,24 },{ 13112,48 },{ 13160,82 },{ 13242,24 }}, // Malay/Latin/Indonesia - { 76, 7, 190,{ 13112,48 },{ 13160,82 },{ 13242,24 },{ 13112,48 },{ 13160,82 },{ 13242,24 }}, // Malay/Latin/Singapore - { 77, 24, 100,{ 13266,62 },{ 13328,88 },{ 13416,32 },{ 13266,62 },{ 13328,88 },{ 13416,32 }}, // Malayalam/Malayalam/India - { 78, 7, 133,{ 13448,48 },{ 13496,86 },{ 13582,36 },{ 13448,48 },{ 13496,86 },{ 13618,24 }}, // Maltese/Latin/Malta - { 79, 7, 154,{ 13642,59 },{ 13701,133 },{ 13834,24 },{ 13642,59 },{ 13701,133 },{ 13834,24 }}, // Maori/Latin/New Zealand - { 80, 13, 100,{ 13858,66 },{ 13924,86 },{ 14010,32 },{ 13858,66 },{ 13924,86 },{ 14010,32 }}, // Marathi/Devanagari/India - { 82, 2, 143,{ 14042,99 },{ 14141,192 },{ 14333,38 },{ 14042,99 },{ 14371,192 },{ 14333,38 }}, // Mongolian/Cyrillic/Mongolia + { 76, 7, 32,{ 13135,48 },{ 13183,82 },{ 13265,24 },{ 13135,48 },{ 13183,82 },{ 13265,24 }}, // Malay/Latin/Brunei + { 76, 7, 101,{ 13135,48 },{ 13183,82 },{ 13265,24 },{ 13135,48 },{ 13183,82 },{ 13265,24 }}, // Malay/Latin/Indonesia + { 76, 7, 190,{ 13135,48 },{ 13183,82 },{ 13265,24 },{ 13135,48 },{ 13183,82 },{ 13265,24 }}, // Malay/Latin/Singapore + { 77, 24, 100,{ 13289,62 },{ 13351,88 },{ 13439,32 },{ 13289,62 },{ 13351,88 },{ 13439,32 }}, // Malayalam/Malayalam/India + { 78, 7, 133,{ 13471,48 },{ 13519,86 },{ 13605,36 },{ 13471,48 },{ 13519,86 },{ 13641,24 }}, // Maltese/Latin/Malta + { 79, 7, 154,{ 13665,59 },{ 13724,133 },{ 13857,24 },{ 13665,59 },{ 13724,133 },{ 13857,24 }}, // Maori/Latin/New Zealand + { 80, 13, 100,{ 13881,66 },{ 13947,86 },{ 14033,32 },{ 13881,66 },{ 13947,86 },{ 14033,32 }}, // Marathi/Devanagari/India + { 82, 2, 143,{ 14065,99 },{ 14164,192 },{ 14356,38 },{ 14065,99 },{ 14394,192 },{ 14356,38 }}, // Mongolian/Cyrillic/Mongolia { 82, 8, 44,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Mongolian/Mongolian/China - { 84, 13, 150,{ 14563,85 },{ 14563,85 },{ 14648,53 },{ 14563,85 },{ 14563,85 },{ 14701,52 }}, // Nepali/Devanagari/Nepal - { 84, 13, 100,{ 14563,85 },{ 14563,85 },{ 14648,53 },{ 14563,85 },{ 14563,85 },{ 14701,52 }}, // Nepali/Devanagari/India - { 85, 7, 161,{ 5790,48 },{ 14753,83 },{ 134,24 },{ 5921,59 },{ 14753,83 },{ 134,24 }}, // Norwegian Bokmal/Latin/Norway - { 85, 7, 203,{ 5790,48 },{ 14753,83 },{ 134,24 },{ 5921,59 },{ 14753,83 },{ 134,24 }}, // Norwegian Bokmal/Latin/Svalbard And Jan Mayen Islands + { 84, 13, 150,{ 14586,85 },{ 14586,85 },{ 14671,53 },{ 14586,85 },{ 14586,85 },{ 14724,52 }}, // Nepali/Devanagari/Nepal + { 84, 13, 100,{ 14586,85 },{ 14586,85 },{ 14671,53 },{ 14586,85 },{ 14586,85 },{ 14724,52 }}, // Nepali/Devanagari/India + { 85, 7, 161,{ 5813,48 },{ 14776,83 },{ 134,24 },{ 5944,59 },{ 14776,83 },{ 134,24 }}, // Norwegian Bokmal/Latin/Norway + { 85, 7, 203,{ 5813,48 },{ 14776,83 },{ 134,24 },{ 5944,59 },{ 14776,83 },{ 134,24 }}, // Norwegian Bokmal/Latin/Svalbard And Jan Mayen Islands { 86, 7, 74,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Occitan/Latin/France - { 87, 26, 100,{ 14836,86 },{ 14836,86 },{ 14922,32 },{ 14836,86 },{ 14836,86 },{ 14922,32 }}, // Oriya/Oriya/India - { 88, 1, 1,{ 14954,68 },{ 15022,69 },{ 418,27 },{ 15091,69 },{ 15091,69 },{ 15160,24 }}, // Pashto/Arabic/Afghanistan - { 88, 1, 163,{ 14954,68 },{ 15022,69 },{ 418,27 },{ 15091,69 },{ 15091,69 },{ 15160,24 }}, // Pashto/Arabic/Pakistan - { 89, 1, 102,{ 15184,70 },{ 15184,70 },{ 15254,24 },{ 15278,74 },{ 15278,74 },{ 15254,24 }}, // Persian/Arabic/Iran - { 89, 1, 1,{ 15352,68 },{ 15352,68 },{ 15160,24 },{ 15420,62 },{ 15352,68 },{ 15160,24 }}, // Persian/Arabic/Afghanistan - { 90, 7, 172,{ 15482,48 },{ 15530,97 },{ 15627,24 },{ 15482,48 },{ 15651,99 },{ 15750,24 }}, // Polish/Latin/Poland - { 91, 7, 30,{ 15774,60 },{ 15834,89 },{ 134,24 },{ 15774,60 },{ 15834,89 },{ 134,24 }}, // Portuguese/Latin/Brazil - { 91, 7, 6,{ 15774,60 },{ 15834,89 },{ 134,24 },{ 15774,60 },{ 15834,89 },{ 134,24 }}, // Portuguese/Latin/Angola - { 91, 7, 39,{ 15774,60 },{ 15834,89 },{ 134,24 },{ 15774,60 },{ 15834,89 },{ 134,24 }}, // Portuguese/Latin/Cape Verde - { 91, 7, 62,{ 15774,60 },{ 15834,89 },{ 134,24 },{ 15774,60 },{ 15834,89 },{ 134,24 }}, // Portuguese/Latin/East Timor - { 91, 7, 66,{ 15774,60 },{ 15834,89 },{ 134,24 },{ 15774,60 },{ 15834,89 },{ 134,24 }}, // Portuguese/Latin/Equatorial Guinea - { 91, 7, 92,{ 15774,60 },{ 15834,89 },{ 134,24 },{ 15774,60 },{ 15834,89 },{ 134,24 }}, // Portuguese/Latin/Guinea Bissau - { 91, 7, 125,{ 15774,60 },{ 15834,89 },{ 134,24 },{ 15774,60 },{ 15834,89 },{ 134,24 }}, // Portuguese/Latin/Luxembourg - { 91, 7, 126,{ 15774,60 },{ 15834,89 },{ 134,24 },{ 15774,60 },{ 15834,89 },{ 134,24 }}, // Portuguese/Latin/Macau - { 91, 7, 146,{ 15774,60 },{ 15834,89 },{ 134,24 },{ 15774,60 },{ 15834,89 },{ 134,24 }}, // Portuguese/Latin/Mozambique - { 91, 7, 173,{ 15774,60 },{ 15834,89 },{ 134,24 },{ 15774,60 },{ 15834,89 },{ 134,24 }}, // Portuguese/Latin/Portugal - { 91, 7, 185,{ 15774,60 },{ 15834,89 },{ 134,24 },{ 15774,60 },{ 15834,89 },{ 134,24 }}, // Portuguese/Latin/Sao Tome And Principe - { 91, 7, 206,{ 15774,60 },{ 15834,89 },{ 134,24 },{ 15774,60 },{ 15834,89 },{ 134,24 }}, // Portuguese/Latin/Switzerland - { 92, 4, 100,{ 15923,50 },{ 15973,68 },{ 16041,28 },{ 15923,50 },{ 15973,68 },{ 16041,28 }}, // Punjabi/Gurmukhi/India - { 92, 1, 163,{ 16069,67 },{ 16069,67 },{ 418,27 },{ 16069,67 },{ 16069,67 },{ 418,27 }}, // Punjabi/Arabic/Pakistan - { 93, 7, 169,{ 16136,48 },{ 16184,88 },{ 418,27 },{ 16136,48 },{ 16184,88 },{ 418,27 }}, // Quechua/Latin/Peru - { 93, 7, 26,{ 16136,48 },{ 16184,88 },{ 418,27 },{ 16136,48 },{ 16184,88 },{ 418,27 }}, // Quechua/Latin/Bolivia - { 93, 7, 63,{ 16136,48 },{ 16184,88 },{ 418,27 },{ 16136,48 },{ 16184,88 },{ 418,27 }}, // Quechua/Latin/Ecuador - { 94, 7, 206,{ 16272,67 },{ 16339,92 },{ 16431,24 },{ 16272,67 },{ 16455,125 },{ 16431,24 }}, // Romansh/Latin/Switzerland - { 95, 7, 177,{ 16580,60 },{ 16640,98 },{ 16738,24 },{ 16580,60 },{ 16640,98 },{ 16738,24 }}, // Romanian/Latin/Romania - { 95, 7, 141,{ 16580,60 },{ 16640,98 },{ 16738,24 },{ 16580,60 },{ 16640,98 },{ 16738,24 }}, // Romanian/Latin/Moldova - { 96, 2, 178,{ 16762,62 },{ 11391,80 },{ 11308,24 },{ 16824,62 },{ 16886,82 },{ 11308,24 }}, // Russian/Cyrillic/Russia - { 96, 2, 20,{ 16762,62 },{ 11391,80 },{ 11308,24 },{ 16824,62 },{ 16886,82 },{ 11308,24 }}, // Russian/Cyrillic/Belarus - { 96, 2, 110,{ 16762,62 },{ 11391,80 },{ 11308,24 },{ 16824,62 },{ 16886,82 },{ 11308,24 }}, // Russian/Cyrillic/Kazakhstan - { 96, 2, 116,{ 16762,62 },{ 11391,80 },{ 11308,24 },{ 16824,62 },{ 16886,82 },{ 11308,24 }}, // Russian/Cyrillic/Kyrgyzstan - { 96, 2, 141,{ 16762,62 },{ 11391,80 },{ 11308,24 },{ 16824,62 },{ 16886,82 },{ 11308,24 }}, // Russian/Cyrillic/Moldova - { 96, 2, 222,{ 16762,62 },{ 11391,80 },{ 11308,24 },{ 16824,62 },{ 16886,82 },{ 11308,24 }}, // Russian/Cyrillic/Ukraine - { 98, 7, 41,{ 16968,48 },{ 17016,91 },{ 17107,24 },{ 16968,48 },{ 17016,91 },{ 17107,24 }}, // Sango/Latin/Central African Republic - { 99, 13, 100,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Sanskrit/Devanagari/India - { 100, 2, 243,{ 17131,48 },{ 17179,81 },{ 12948,24 },{ 17131,48 },{ 17179,81 },{ 12948,24 }}, // Serbian/Cyrillic/Serbia - { 100, 7, 27,{ 17260,48 },{ 17308,81 },{ 9992,24 },{ 17260,48 },{ 17308,81 },{ 9992,24 }}, // Serbian/Latin/Bosnia And Herzegowina - { 100, 7, 242,{ 17389,50 },{ 17308,81 },{ 9992,24 },{ 17389,50 },{ 17308,81 },{ 9992,24 }}, // Serbian/Latin/Montenegro - { 100, 7, 243,{ 17260,48 },{ 17308,81 },{ 9992,24 },{ 17260,48 },{ 17308,81 },{ 9992,24 }}, // Serbian/Latin/Serbia - { 100, 2, 27,{ 17131,48 },{ 17179,81 },{ 12948,24 },{ 17131,48 },{ 17179,81 },{ 12948,24 }}, // Serbian/Cyrillic/Bosnia And Herzegowina - { 100, 2, 242,{ 17439,50 },{ 17179,81 },{ 12948,24 },{ 17439,50 },{ 17179,81 },{ 12948,24 }}, // Serbian/Cyrillic/Montenegro - { 100, 2, 257,{ 17439,50 },{ 17179,81 },{ 12948,24 },{ 17439,50 },{ 17179,81 },{ 12948,24 }}, // Serbian/Cyrillic/Kosovo - { 100, 7, 257,{ 17389,50 },{ 17308,81 },{ 9992,24 },{ 17389,50 },{ 17308,81 },{ 9992,24 }}, // Serbian/Latin/Kosovo - { 101, 2, 81,{ 17489,63 },{ 17552,82 },{ 11308,24 },{ 17634,60 },{ 17694,86 },{ 11308,24 }}, // Ossetic/Cyrillic/Georgia - { 101, 2, 178,{ 17489,63 },{ 17552,82 },{ 11308,24 },{ 17634,60 },{ 17694,86 },{ 11308,24 }}, // Ossetic/Cyrillic/Russia + { 87, 26, 100,{ 14859,86 },{ 14859,86 },{ 14945,32 },{ 14859,86 },{ 14859,86 },{ 14945,32 }}, // Oriya/Oriya/India + { 88, 1, 1,{ 14977,68 },{ 15045,69 },{ 418,27 },{ 15114,69 },{ 15114,69 },{ 15183,24 }}, // Pashto/Arabic/Afghanistan + { 88, 1, 163,{ 14977,68 },{ 15045,69 },{ 418,27 },{ 15114,69 },{ 15114,69 },{ 15183,24 }}, // Pashto/Arabic/Pakistan + { 89, 1, 102,{ 15207,70 },{ 15207,70 },{ 15277,24 },{ 15301,74 },{ 15301,74 },{ 15277,24 }}, // Persian/Arabic/Iran + { 89, 1, 1,{ 15375,68 },{ 15375,68 },{ 15183,24 },{ 15443,62 },{ 15375,68 },{ 15183,24 }}, // Persian/Arabic/Afghanistan + { 90, 7, 172,{ 15505,48 },{ 15553,97 },{ 15650,24 },{ 15505,48 },{ 15674,99 },{ 15773,24 }}, // Polish/Latin/Poland + { 91, 7, 30,{ 15797,60 },{ 15857,89 },{ 134,24 },{ 15797,60 },{ 15857,89 },{ 134,24 }}, // Portuguese/Latin/Brazil + { 91, 7, 6,{ 15797,60 },{ 15857,89 },{ 134,24 },{ 15797,60 },{ 15857,89 },{ 134,24 }}, // Portuguese/Latin/Angola + { 91, 7, 39,{ 15797,60 },{ 15857,89 },{ 134,24 },{ 15797,60 },{ 15857,89 },{ 134,24 }}, // Portuguese/Latin/Cape Verde + { 91, 7, 62,{ 15797,60 },{ 15857,89 },{ 134,24 },{ 15797,60 },{ 15857,89 },{ 134,24 }}, // Portuguese/Latin/East Timor + { 91, 7, 66,{ 15797,60 },{ 15857,89 },{ 134,24 },{ 15797,60 },{ 15857,89 },{ 134,24 }}, // Portuguese/Latin/Equatorial Guinea + { 91, 7, 92,{ 15797,60 },{ 15857,89 },{ 134,24 },{ 15797,60 },{ 15857,89 },{ 134,24 }}, // Portuguese/Latin/Guinea Bissau + { 91, 7, 125,{ 15797,60 },{ 15857,89 },{ 134,24 },{ 15797,60 },{ 15857,89 },{ 134,24 }}, // Portuguese/Latin/Luxembourg + { 91, 7, 126,{ 15797,60 },{ 15857,89 },{ 134,24 },{ 15797,60 },{ 15857,89 },{ 134,24 }}, // Portuguese/Latin/Macau + { 91, 7, 146,{ 15797,60 },{ 15857,89 },{ 134,24 },{ 15797,60 },{ 15857,89 },{ 134,24 }}, // Portuguese/Latin/Mozambique + { 91, 7, 173,{ 15797,60 },{ 15857,89 },{ 134,24 },{ 15797,60 },{ 15857,89 },{ 134,24 }}, // Portuguese/Latin/Portugal + { 91, 7, 185,{ 15797,60 },{ 15857,89 },{ 134,24 },{ 15797,60 },{ 15857,89 },{ 134,24 }}, // Portuguese/Latin/Sao Tome And Principe + { 91, 7, 206,{ 15797,60 },{ 15857,89 },{ 134,24 },{ 15797,60 },{ 15857,89 },{ 134,24 }}, // Portuguese/Latin/Switzerland + { 92, 4, 100,{ 15946,50 },{ 15996,68 },{ 16064,28 },{ 15946,50 },{ 15996,68 },{ 16064,28 }}, // Punjabi/Gurmukhi/India + { 92, 1, 163,{ 16092,67 },{ 16092,67 },{ 418,27 },{ 16092,67 },{ 16092,67 },{ 418,27 }}, // Punjabi/Arabic/Pakistan + { 93, 7, 169,{ 16159,48 },{ 16207,88 },{ 418,27 },{ 16159,48 },{ 16207,88 },{ 418,27 }}, // Quechua/Latin/Peru + { 93, 7, 26,{ 16159,48 },{ 16207,88 },{ 418,27 },{ 16159,48 },{ 16207,88 },{ 418,27 }}, // Quechua/Latin/Bolivia + { 93, 7, 63,{ 16159,48 },{ 16207,88 },{ 418,27 },{ 16159,48 },{ 16207,88 },{ 418,27 }}, // Quechua/Latin/Ecuador + { 94, 7, 206,{ 16295,67 },{ 16362,92 },{ 16454,24 },{ 16295,67 },{ 16478,125 },{ 16454,24 }}, // Romansh/Latin/Switzerland + { 95, 7, 177,{ 16603,60 },{ 16663,98 },{ 16761,24 },{ 16603,60 },{ 16663,98 },{ 16761,24 }}, // Romanian/Latin/Romania + { 95, 7, 141,{ 16603,60 },{ 16663,98 },{ 16761,24 },{ 16603,60 },{ 16663,98 },{ 16761,24 }}, // Romanian/Latin/Moldova + { 96, 2, 178,{ 16785,62 },{ 11414,80 },{ 11331,24 },{ 16847,62 },{ 16909,82 },{ 11331,24 }}, // Russian/Cyrillic/Russia + { 96, 2, 20,{ 16785,62 },{ 11414,80 },{ 11331,24 },{ 16847,62 },{ 16909,82 },{ 11331,24 }}, // Russian/Cyrillic/Belarus + { 96, 2, 110,{ 16785,62 },{ 11414,80 },{ 11331,24 },{ 16847,62 },{ 16909,82 },{ 11331,24 }}, // Russian/Cyrillic/Kazakhstan + { 96, 2, 116,{ 16785,62 },{ 11414,80 },{ 11331,24 },{ 16847,62 },{ 16909,82 },{ 11331,24 }}, // Russian/Cyrillic/Kyrgyzstan + { 96, 2, 141,{ 16785,62 },{ 11414,80 },{ 11331,24 },{ 16847,62 },{ 16909,82 },{ 11331,24 }}, // Russian/Cyrillic/Moldova + { 96, 2, 222,{ 16785,62 },{ 11414,80 },{ 11331,24 },{ 16847,62 },{ 16909,82 },{ 11331,24 }}, // Russian/Cyrillic/Ukraine + { 98, 7, 41,{ 16991,48 },{ 17039,91 },{ 17130,24 },{ 16991,48 },{ 17039,91 },{ 17130,24 }}, // Sango/Latin/Central African Republic + { 99, 13, 100,{ 17154,83 },{ 17237,120 },{ 418,27 },{ 17154,83 },{ 17237,120 },{ 17357,29 }}, // Sanskrit/Devanagari/India + { 100, 2, 243,{ 17386,48 },{ 17434,81 },{ 12971,24 },{ 17386,48 },{ 17434,81 },{ 12971,24 }}, // Serbian/Cyrillic/Serbia + { 100, 7, 27,{ 17515,48 },{ 17563,81 },{ 10015,24 },{ 17515,48 },{ 17563,81 },{ 10015,24 }}, // Serbian/Latin/Bosnia And Herzegowina + { 100, 7, 242,{ 17644,50 },{ 17563,81 },{ 10015,24 },{ 17644,50 },{ 17563,81 },{ 10015,24 }}, // Serbian/Latin/Montenegro + { 100, 7, 243,{ 17515,48 },{ 17563,81 },{ 10015,24 },{ 17515,48 },{ 17563,81 },{ 10015,24 }}, // Serbian/Latin/Serbia + { 100, 2, 27,{ 17386,48 },{ 17434,81 },{ 12971,24 },{ 17386,48 },{ 17434,81 },{ 12971,24 }}, // Serbian/Cyrillic/Bosnia And Herzegowina + { 100, 2, 242,{ 17694,50 },{ 17434,81 },{ 12971,24 },{ 17694,50 },{ 17434,81 },{ 12971,24 }}, // Serbian/Cyrillic/Montenegro + { 100, 2, 257,{ 17694,50 },{ 17434,81 },{ 12971,24 },{ 17694,50 },{ 17434,81 },{ 12971,24 }}, // Serbian/Cyrillic/Kosovo + { 100, 7, 257,{ 17644,50 },{ 17563,81 },{ 10015,24 },{ 17644,50 },{ 17563,81 },{ 10015,24 }}, // Serbian/Latin/Kosovo + { 101, 2, 81,{ 17744,63 },{ 17807,82 },{ 11331,24 },{ 17889,60 },{ 17949,86 },{ 11331,24 }}, // Ossetic/Cyrillic/Georgia + { 101, 2, 178,{ 17744,63 },{ 17807,82 },{ 11331,24 },{ 17889,60 },{ 17949,86 },{ 11331,24 }}, // Ossetic/Cyrillic/Russia { 102, 7, 195,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Southern Sotho/Latin/South Africa { 103, 7, 195,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Tswana/Latin/South Africa - { 104, 7, 240,{ 17780,48 },{ 17828,100 },{ 17928,24 },{ 17780,48 },{ 17828,100 },{ 17928,24 }}, // Shona/Latin/Zimbabwe - { 105, 1, 163,{ 17952,72 },{ 17952,72 },{ 134,24 },{ 17952,72 },{ 17952,72 },{ 134,24 }}, // Sindhi/Arabic/Pakistan - { 105, 13, 100,{ 18024,53 },{ 18077,73 },{ 18150,28 },{ 18178,51 },{ 18077,73 },{ 18150,28 }}, // Sindhi/Devanagari/India - { 106, 32, 198,{ 18229,59 },{ 18288,96 },{ 18384,32 },{ 18416,61 },{ 18288,96 },{ 18384,32 }}, // Sinhala/Sinhala/Sri Lanka + { 104, 7, 240,{ 18035,48 },{ 18083,100 },{ 18183,24 },{ 18035,48 },{ 18083,100 },{ 18183,24 }}, // Shona/Latin/Zimbabwe + { 105, 1, 163,{ 18207,72 },{ 18207,72 },{ 134,24 },{ 18207,72 },{ 18207,72 },{ 134,24 }}, // Sindhi/Arabic/Pakistan + { 105, 13, 100,{ 18279,53 },{ 18332,73 },{ 18405,28 },{ 18433,51 },{ 18332,73 },{ 18405,28 }}, // Sindhi/Devanagari/India + { 106, 32, 198,{ 18484,59 },{ 18543,96 },{ 18639,32 },{ 18671,61 },{ 18543,96 },{ 18639,32 }}, // Sinhala/Sinhala/Sri Lanka { 107, 7, 195,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Swati/Latin/South Africa - { 108, 7, 191,{ 18477,48 },{ 18525,82 },{ 9992,24 },{ 18477,48 },{ 18607,89 },{ 9992,24 }}, // Slovak/Latin/Slovakia - { 109, 7, 192,{ 18696,59 },{ 18755,86 },{ 9992,24 },{ 18696,59 },{ 18755,86 },{ 9992,24 }}, // Slovenian/Latin/Slovenia - { 110, 7, 194,{ 18841,48 },{ 18889,92 },{ 18981,24 },{ 18841,48 },{ 19005,189 },{ 18981,24 }}, // Somali/Latin/Somalia - { 110, 7, 59,{ 18841,48 },{ 18889,92 },{ 18981,24 },{ 18841,48 },{ 19005,189 },{ 18981,24 }}, // Somali/Latin/Djibouti - { 110, 7, 69,{ 18841,48 },{ 18889,92 },{ 18981,24 },{ 18841,48 },{ 19005,189 },{ 18981,24 }}, // Somali/Latin/Ethiopia - { 110, 7, 111,{ 18841,48 },{ 18889,92 },{ 18981,24 },{ 18841,48 },{ 19005,189 },{ 18981,24 }}, // Somali/Latin/Kenya - { 111, 7, 197,{ 19194,61 },{ 19255,89 },{ 19344,24 },{ 19194,61 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Spain - { 111, 7, 10,{ 19368,60 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Argentina - { 111, 7, 22,{ 19368,60 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Belize - { 111, 7, 26,{ 19368,60 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Bolivia - { 111, 7, 30,{ 19368,60 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Brazil - { 111, 7, 43,{ 19194,61 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Chile - { 111, 7, 47,{ 19194,61 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Colombia - { 111, 7, 52,{ 19368,60 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Costa Rica - { 111, 7, 55,{ 19368,60 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Cuba - { 111, 7, 61,{ 19368,60 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Dominican Republic - { 111, 7, 63,{ 19368,60 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Ecuador - { 111, 7, 65,{ 19368,60 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/El Salvador - { 111, 7, 66,{ 19194,61 },{ 19255,89 },{ 19344,24 },{ 19194,61 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Equatorial Guinea - { 111, 7, 90,{ 19368,60 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Guatemala - { 111, 7, 96,{ 19368,60 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Honduras - { 111, 7, 139,{ 19368,60 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Mexico - { 111, 7, 155,{ 19368,60 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Nicaragua - { 111, 7, 166,{ 19368,60 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Panama - { 111, 7, 168,{ 19194,61 },{ 19255,89 },{ 19344,24 },{ 19194,61 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Paraguay - { 111, 7, 169,{ 19428,60 },{ 16184,88 },{ 19344,24 },{ 19488,60 },{ 19548,88 },{ 19344,24 }}, // Spanish/Latin/Peru - { 111, 7, 170,{ 19194,61 },{ 19255,89 },{ 19344,24 },{ 19194,61 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Philippines - { 111, 7, 174,{ 19368,60 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Puerto Rico - { 111, 7, 225,{ 19368,60 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/United States - { 111, 7, 227,{ 19428,60 },{ 16184,88 },{ 19344,24 },{ 19488,60 },{ 19548,88 },{ 19344,24 }}, // Spanish/Latin/Uruguay - { 111, 7, 231,{ 19194,61 },{ 19255,89 },{ 19344,24 },{ 19194,61 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Venezuela - { 111, 7, 238,{ 19194,61 },{ 19255,89 },{ 19344,24 },{ 19194,61 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Canary Islands - { 111, 7, 246,{ 19368,60 },{ 19255,89 },{ 19344,24 },{ 19368,60 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Latin America - { 111, 7, 250,{ 19194,61 },{ 19255,89 },{ 19344,24 },{ 19194,61 },{ 19255,89 },{ 19344,24 }}, // Spanish/Latin/Ceuta And Melilla - { 112, 7, 101,{ 19636,48 },{ 19684,87 },{ 19771,24 },{ 19636,48 },{ 19684,87 },{ 19771,24 }}, // Sundanese/Latin/Indonesia - { 113, 7, 210,{ 19795,48 },{ 19843,84 },{ 134,24 },{ 19795,48 },{ 19843,84 },{ 134,24 }}, // Swahili/Latin/Tanzania - { 113, 7, 49,{ 19795,48 },{ 19843,84 },{ 134,24 },{ 19795,48 },{ 19843,84 },{ 134,24 }}, // Swahili/Latin/Congo Kinshasa - { 113, 7, 111,{ 19795,48 },{ 19843,84 },{ 134,24 },{ 19795,48 },{ 19843,84 },{ 134,24 }}, // Swahili/Latin/Kenya - { 113, 7, 221,{ 19795,48 },{ 19843,84 },{ 134,24 },{ 19795,48 },{ 19843,84 },{ 134,24 }}, // Swahili/Latin/Uganda - { 114, 7, 205,{ 19927,59 },{ 19986,86 },{ 134,24 },{ 19927,59 },{ 19986,86 },{ 134,24 }}, // Swedish/Latin/Sweden - { 114, 7, 73,{ 19927,59 },{ 19986,86 },{ 134,24 },{ 19927,59 },{ 19986,86 },{ 134,24 }}, // Swedish/Latin/Finland - { 114, 7, 248,{ 19927,59 },{ 19986,86 },{ 134,24 },{ 19927,59 },{ 19986,86 },{ 134,24 }}, // Swedish/Latin/Aland Islands + { 108, 7, 191,{ 18732,48 },{ 18780,82 },{ 10015,24 },{ 18732,48 },{ 18862,89 },{ 10015,24 }}, // Slovak/Latin/Slovakia + { 109, 7, 192,{ 18951,59 },{ 19010,86 },{ 10015,24 },{ 18951,59 },{ 19010,86 },{ 10015,24 }}, // Slovenian/Latin/Slovenia + { 110, 7, 194,{ 19096,48 },{ 19144,92 },{ 19236,24 },{ 19096,48 },{ 19260,189 },{ 19236,24 }}, // Somali/Latin/Somalia + { 110, 7, 59,{ 19096,48 },{ 19144,92 },{ 19236,24 },{ 19096,48 },{ 19260,189 },{ 19236,24 }}, // Somali/Latin/Djibouti + { 110, 7, 69,{ 19096,48 },{ 19144,92 },{ 19236,24 },{ 19096,48 },{ 19260,189 },{ 19236,24 }}, // Somali/Latin/Ethiopia + { 110, 7, 111,{ 19096,48 },{ 19144,92 },{ 19236,24 },{ 19096,48 },{ 19260,189 },{ 19236,24 }}, // Somali/Latin/Kenya + { 111, 7, 197,{ 19449,49 },{ 19498,89 },{ 19587,24 },{ 19449,49 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Spain + { 111, 7, 10,{ 19611,60 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Argentina + { 111, 7, 22,{ 19611,60 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Belize + { 111, 7, 26,{ 19611,60 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Bolivia + { 111, 7, 30,{ 19611,60 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Brazil + { 111, 7, 43,{ 19671,61 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Chile + { 111, 7, 47,{ 19671,61 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Colombia + { 111, 7, 52,{ 19611,60 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Costa Rica + { 111, 7, 55,{ 19611,60 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Cuba + { 111, 7, 61,{ 19611,60 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Dominican Republic + { 111, 7, 63,{ 19611,60 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Ecuador + { 111, 7, 65,{ 19611,60 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/El Salvador + { 111, 7, 66,{ 19449,49 },{ 19498,89 },{ 19587,24 },{ 19449,49 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Equatorial Guinea + { 111, 7, 90,{ 19611,60 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Guatemala + { 111, 7, 96,{ 19611,60 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Honduras + { 111, 7, 139,{ 19611,60 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Mexico + { 111, 7, 155,{ 19611,60 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Nicaragua + { 111, 7, 166,{ 19611,60 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Panama + { 111, 7, 168,{ 19671,61 },{ 19498,89 },{ 19587,24 },{ 19671,61 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Paraguay + { 111, 7, 169,{ 19732,60 },{ 16207,88 },{ 19587,24 },{ 19792,60 },{ 19852,88 },{ 19587,24 }}, // Spanish/Latin/Peru + { 111, 7, 170,{ 19449,49 },{ 19498,89 },{ 19587,24 },{ 19449,49 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Philippines + { 111, 7, 174,{ 19611,60 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Puerto Rico + { 111, 7, 225,{ 19611,60 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/United States + { 111, 7, 227,{ 19732,60 },{ 16207,88 },{ 19587,24 },{ 19792,60 },{ 19852,88 },{ 19587,24 }}, // Spanish/Latin/Uruguay + { 111, 7, 231,{ 19671,61 },{ 19498,89 },{ 19587,24 },{ 19671,61 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Venezuela + { 111, 7, 238,{ 19449,49 },{ 19498,89 },{ 19587,24 },{ 19449,49 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Canary Islands + { 111, 7, 246,{ 19611,60 },{ 19498,89 },{ 19587,24 },{ 19611,60 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Latin America + { 111, 7, 250,{ 19449,49 },{ 19498,89 },{ 19587,24 },{ 19449,49 },{ 19498,89 },{ 19587,24 }}, // Spanish/Latin/Ceuta And Melilla + { 112, 7, 101,{ 19940,48 },{ 19988,87 },{ 20075,24 },{ 19940,48 },{ 19988,87 },{ 20075,24 }}, // Sundanese/Latin/Indonesia + { 113, 7, 210,{ 20099,48 },{ 20147,84 },{ 134,24 },{ 20099,48 },{ 20147,84 },{ 134,24 }}, // Swahili/Latin/Tanzania + { 113, 7, 49,{ 20099,48 },{ 20147,84 },{ 134,24 },{ 20099,48 },{ 20147,84 },{ 134,24 }}, // Swahili/Latin/Congo Kinshasa + { 113, 7, 111,{ 20099,48 },{ 20147,84 },{ 134,24 },{ 20099,48 },{ 20147,84 },{ 134,24 }}, // Swahili/Latin/Kenya + { 113, 7, 221,{ 20099,48 },{ 20147,84 },{ 134,24 },{ 20099,48 },{ 20147,84 },{ 134,24 }}, // Swahili/Latin/Uganda + { 114, 7, 205,{ 20231,59 },{ 20290,86 },{ 134,24 },{ 20231,59 },{ 20290,86 },{ 134,24 }}, // Swedish/Latin/Sweden + { 114, 7, 73,{ 20231,59 },{ 20290,86 },{ 134,24 },{ 20231,59 },{ 20290,86 },{ 134,24 }}, // Swedish/Latin/Finland + { 114, 7, 248,{ 20231,59 },{ 20290,86 },{ 134,24 },{ 20231,59 },{ 20290,86 },{ 134,24 }}, // Swedish/Latin/Aland Islands { 115, 7, 106,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Sardinian/Latin/Italy - { 116, 2, 209,{ 11180,48 },{ 20072,71 },{ 11308,24 },{ 11180,48 },{ 20072,71 },{ 11308,24 }}, // Tajik/Cyrillic/Tajikistan - { 117, 27, 100,{ 20143,58 },{ 20201,86 },{ 20287,31 },{ 20143,58 },{ 20201,86 },{ 20287,31 }}, // Tamil/Tamil/India - { 117, 27, 130,{ 20143,58 },{ 20201,86 },{ 20287,31 },{ 20143,58 },{ 20201,86 },{ 20287,31 }}, // Tamil/Tamil/Malaysia - { 117, 27, 190,{ 20143,58 },{ 20201,86 },{ 20287,31 },{ 20143,58 },{ 20201,86 },{ 20287,31 }}, // Tamil/Tamil/Singapore - { 117, 27, 198,{ 20143,58 },{ 20201,86 },{ 20287,31 },{ 20143,58 },{ 20201,86 },{ 20287,31 }}, // Tamil/Tamil/Sri Lanka - { 118, 2, 178,{ 20318,62 },{ 20380,81 },{ 418,27 },{ 20318,62 },{ 20380,81 },{ 418,27 }}, // Tatar/Cyrillic/Russia - { 119, 28, 100,{ 20461,62 },{ 20523,86 },{ 20609,31 },{ 20461,62 },{ 20523,86 },{ 20609,31 }}, // Telugu/Telugu/India - { 120, 30, 211,{ 20640,63 },{ 20703,98 },{ 20640,63 },{ 20640,63 },{ 20703,98 },{ 20640,63 }}, // Thai/Thai/Thailand - { 121, 31, 44,{ 2809,63 },{ 20801,159 },{ 418,27 },{ 2809,63 },{ 20960,147 },{ 418,27 }}, // Tibetan/Tibetan/China - { 121, 31, 100,{ 2809,63 },{ 20801,159 },{ 418,27 },{ 2809,63 },{ 20960,147 },{ 418,27 }}, // Tibetan/Tibetan/India - { 122, 14, 69,{ 21107,36 },{ 21143,54 },{ 21197,24 },{ 21107,36 },{ 21143,54 },{ 21197,24 }}, // Tigrinya/Ethiopic/Ethiopia - { 122, 14, 67,{ 21107,36 },{ 21143,54 },{ 21197,24 },{ 21107,36 },{ 21143,54 },{ 21197,24 }}, // Tigrinya/Ethiopic/Eritrea - { 123, 7, 214,{ 21221,51 },{ 21272,87 },{ 21359,24 },{ 21221,51 },{ 21272,87 },{ 21359,24 }}, // Tongan/Latin/Tonga + { 116, 2, 209,{ 11203,48 },{ 20376,71 },{ 11331,24 },{ 11203,48 },{ 20376,71 },{ 11331,24 }}, // Tajik/Cyrillic/Tajikistan + { 117, 27, 100,{ 20447,58 },{ 20505,86 },{ 20591,31 },{ 20447,58 },{ 20505,86 },{ 20591,31 }}, // Tamil/Tamil/India + { 117, 27, 130,{ 20447,58 },{ 20505,86 },{ 20591,31 },{ 20447,58 },{ 20505,86 },{ 20591,31 }}, // Tamil/Tamil/Malaysia + { 117, 27, 190,{ 20447,58 },{ 20505,86 },{ 20591,31 },{ 20447,58 },{ 20505,86 },{ 20591,31 }}, // Tamil/Tamil/Singapore + { 117, 27, 198,{ 20447,58 },{ 20505,86 },{ 20591,31 },{ 20447,58 },{ 20505,86 },{ 20591,31 }}, // Tamil/Tamil/Sri Lanka + { 118, 2, 178,{ 20622,62 },{ 20684,81 },{ 418,27 },{ 20622,62 },{ 20684,81 },{ 418,27 }}, // Tatar/Cyrillic/Russia + { 119, 28, 100,{ 20765,62 },{ 20827,86 },{ 20913,31 },{ 20765,62 },{ 20827,86 },{ 20913,31 }}, // Telugu/Telugu/India + { 120, 30, 211,{ 20944,63 },{ 21007,98 },{ 20944,63 },{ 20944,63 },{ 21007,98 },{ 20944,63 }}, // Thai/Thai/Thailand + { 121, 31, 44,{ 2732,63 },{ 21105,159 },{ 418,27 },{ 2732,63 },{ 21264,147 },{ 418,27 }}, // Tibetan/Tibetan/China + { 121, 31, 100,{ 2732,63 },{ 21105,159 },{ 418,27 },{ 2732,63 },{ 21264,147 },{ 418,27 }}, // Tibetan/Tibetan/India + { 122, 14, 69,{ 21411,36 },{ 21447,54 },{ 21501,24 },{ 21411,36 },{ 21447,54 },{ 21501,24 }}, // Tigrinya/Ethiopic/Ethiopia + { 122, 14, 67,{ 21411,36 },{ 21447,54 },{ 21501,24 },{ 21411,36 },{ 21447,54 },{ 21501,24 }}, // Tigrinya/Ethiopic/Eritrea + { 123, 7, 214,{ 21525,51 },{ 21576,87 },{ 21663,24 },{ 21525,51 },{ 21576,87 },{ 21663,24 }}, // Tongan/Latin/Tonga { 124, 7, 195,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Tsonga/Latin/South Africa - { 125, 7, 217,{ 21383,48 },{ 21431,75 },{ 21506,24 },{ 21383,48 },{ 21431,75 },{ 21506,24 }}, // Turkish/Latin/Turkey - { 125, 7, 56,{ 21383,48 },{ 21431,75 },{ 21506,24 },{ 21383,48 },{ 21431,75 },{ 21506,24 }}, // Turkish/Latin/Cyprus - { 126, 7, 218,{ 21530,50 },{ 21580,77 },{ 21657,24 },{ 21681,51 },{ 21732,77 },{ 21657,24 }}, // Turkmen/Latin/Turkmenistan - { 128, 1, 44,{ 21809,84 },{ 21809,84 },{ 418,27 },{ 21809,84 },{ 21809,84 },{ 418,27 }}, // Uighur/Arabic/China - { 129, 2, 222,{ 21893,48 },{ 21941,95 },{ 22036,24 },{ 22060,67 },{ 22127,87 },{ 22214,24 }}, // Ukrainian/Cyrillic/Ukraine - { 130, 1, 163,{ 22238,68 },{ 22238,68 },{ 134,24 },{ 22238,68 },{ 22238,68 },{ 134,24 }}, // Urdu/Arabic/Pakistan - { 130, 1, 100,{ 22238,68 },{ 22238,68 },{ 134,24 },{ 22238,68 },{ 22238,68 },{ 134,24 }}, // Urdu/Arabic/India - { 131, 7, 228,{ 22306,48 },{ 22354,75 },{ 22429,24 },{ 22453,48 },{ 22501,75 },{ 22429,24 }}, // Uzbek/Latin/Uzbekistan - { 131, 1, 1,{ 22576,47 },{ 15352,68 },{ 418,27 },{ 22576,47 },{ 15352,68 },{ 418,27 }}, // Uzbek/Arabic/Afghanistan - { 131, 2, 228,{ 22623,48 },{ 22671,71 },{ 11308,24 },{ 22623,48 },{ 22671,71 },{ 11308,24 }}, // Uzbek/Cyrillic/Uzbekistan - { 132, 7, 232,{ 22742,75 },{ 22817,99 },{ 418,27 },{ 22916,75 },{ 22991,99 },{ 418,27 }}, // Vietnamese/Latin/Vietnam - { 133, 7, 260,{ 23090,48 },{ 23138,74 },{ 23212,24 },{ 23236,48 },{ 23138,74 },{ 23212,24 }}, // Volapuk/Latin/World - { 134, 7, 224,{ 23284,52 },{ 23336,87 },{ 23423,26 },{ 23449,56 },{ 23336,87 },{ 23423,26 }}, // Welsh/Latin/United Kingdom - { 135, 7, 187,{ 23505,47 },{ 23552,84 },{ 418,27 },{ 23505,47 },{ 23552,84 },{ 418,27 }}, // Wolof/Latin/Senegal - { 136, 7, 195,{ 23636,48 },{ 23684,91 },{ 418,27 },{ 23636,48 },{ 23684,91 },{ 418,27 }}, // Xhosa/Latin/South Africa - { 137, 18, 260,{ 23775,58 },{ 23833,92 },{ 418,27 },{ 23833,92 },{ 23833,92 },{ 418,27 }}, // Yiddish/Hebrew/World - { 138, 7, 157,{ 23925,40 },{ 23965,73 },{ 24038,27 },{ 24065,55 },{ 24120,121 },{ 24038,27 }}, // Yoruba/Latin/Nigeria - { 138, 7, 23,{ 24241,41 },{ 24282,74 },{ 24356,27 },{ 24383,56 },{ 24439,134 },{ 24356,27 }}, // Yoruba/Latin/Benin - { 140, 7, 195,{ 24573,48 },{ 24621,91 },{ 134,24 },{ 24573,48 },{ 24621,91 },{ 24712,24 }}, // Zulu/Latin/South Africa - { 141, 7, 161,{ 5790,48 },{ 14753,83 },{ 134,24 },{ 24736,59 },{ 14753,83 },{ 134,24 }}, // Norwegian Nynorsk/Latin/Norway - { 142, 7, 27,{ 24795,48 },{ 24843,83 },{ 9992,24 },{ 24795,48 },{ 24843,83 },{ 9992,24 }}, // Bosnian/Latin/Bosnia And Herzegowina - { 142, 2, 27,{ 24926,48 },{ 24974,83 },{ 12948,24 },{ 24926,48 },{ 24974,83 },{ 12948,24 }}, // Bosnian/Cyrillic/Bosnia And Herzegowina + { 125, 7, 217,{ 21687,48 },{ 21735,75 },{ 21810,24 },{ 21687,48 },{ 21735,75 },{ 21810,24 }}, // Turkish/Latin/Turkey + { 125, 7, 56,{ 21687,48 },{ 21735,75 },{ 21810,24 },{ 21687,48 },{ 21735,75 },{ 21810,24 }}, // Turkish/Latin/Cyprus + { 126, 7, 218,{ 21834,50 },{ 21884,77 },{ 21961,24 },{ 21985,51 },{ 22036,77 },{ 21961,24 }}, // Turkmen/Latin/Turkmenistan + { 128, 1, 44,{ 22113,84 },{ 22113,84 },{ 418,27 },{ 22113,84 },{ 22113,84 },{ 418,27 }}, // Uighur/Arabic/China + { 129, 2, 222,{ 22197,48 },{ 22245,95 },{ 22340,24 },{ 22364,67 },{ 22431,87 },{ 22518,24 }}, // Ukrainian/Cyrillic/Ukraine + { 130, 1, 163,{ 22542,68 },{ 22542,68 },{ 134,24 },{ 22542,68 },{ 22542,68 },{ 134,24 }}, // Urdu/Arabic/Pakistan + { 130, 1, 100,{ 22542,68 },{ 22542,68 },{ 134,24 },{ 22542,68 },{ 22542,68 },{ 134,24 }}, // Urdu/Arabic/India + { 131, 7, 228,{ 22610,48 },{ 22658,75 },{ 22733,24 },{ 22757,48 },{ 22805,75 },{ 22733,24 }}, // Uzbek/Latin/Uzbekistan + { 131, 1, 1,{ 22880,47 },{ 15375,68 },{ 418,27 },{ 22880,47 },{ 15375,68 },{ 418,27 }}, // Uzbek/Arabic/Afghanistan + { 131, 2, 228,{ 22927,48 },{ 22975,71 },{ 11331,24 },{ 22927,48 },{ 22975,71 },{ 11331,24 }}, // Uzbek/Cyrillic/Uzbekistan + { 132, 7, 232,{ 23046,75 },{ 23121,99 },{ 418,27 },{ 23220,75 },{ 23295,99 },{ 418,27 }}, // Vietnamese/Latin/Vietnam + { 133, 7, 260,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Volapuk/Latin/World + { 134, 7, 224,{ 23394,52 },{ 23446,87 },{ 23533,26 },{ 23559,56 },{ 23446,87 },{ 23533,26 }}, // Welsh/Latin/United Kingdom + { 135, 7, 187,{ 23615,47 },{ 23662,84 },{ 418,27 },{ 23615,47 },{ 23662,84 },{ 418,27 }}, // Wolof/Latin/Senegal + { 136, 7, 195,{ 23746,48 },{ 23794,91 },{ 418,27 },{ 23746,48 },{ 23794,91 },{ 418,27 }}, // Xhosa/Latin/South Africa + { 137, 18, 260,{ 23885,58 },{ 23943,92 },{ 418,27 },{ 23943,92 },{ 23943,92 },{ 418,27 }}, // Yiddish/Hebrew/World + { 138, 7, 157,{ 24035,40 },{ 24075,73 },{ 24148,27 },{ 24175,55 },{ 24230,121 },{ 24148,27 }}, // Yoruba/Latin/Nigeria + { 138, 7, 23,{ 24351,41 },{ 24392,74 },{ 24466,27 },{ 24493,56 },{ 24549,134 },{ 24466,27 }}, // Yoruba/Latin/Benin + { 140, 7, 195,{ 24683,48 },{ 24731,91 },{ 134,24 },{ 24683,48 },{ 24731,91 },{ 24822,24 }}, // Zulu/Latin/South Africa + { 141, 7, 161,{ 5813,48 },{ 14776,83 },{ 134,24 },{ 24846,59 },{ 14776,83 },{ 134,24 }}, // Norwegian Nynorsk/Latin/Norway + { 142, 7, 27,{ 24905,48 },{ 24953,83 },{ 10015,24 },{ 24905,48 },{ 24953,83 },{ 10015,24 }}, // Bosnian/Latin/Bosnia And Herzegowina + { 142, 2, 27,{ 25036,48 },{ 25084,83 },{ 12971,24 },{ 25036,48 },{ 25084,83 },{ 12971,24 }}, // Bosnian/Cyrillic/Bosnia And Herzegowina { 143, 29, 131,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Divehi/Thaana/Maldives - { 144, 7, 251,{ 25057,102 },{ 25159,140 },{ 418,27 },{ 25057,102 },{ 25159,140 },{ 418,27 }}, // Manx/Latin/Isle Of Man - { 145, 7, 224,{ 25299,46 },{ 25345,130 },{ 418,27 },{ 25299,46 },{ 25345,130 },{ 418,27 }}, // Cornish/Latin/United Kingdom - { 146, 7, 83,{ 25475,48 },{ 25523,192 },{ 418,27 },{ 25475,48 },{ 25523,192 },{ 418,27 }}, // Akan/Latin/Ghana - { 147, 13, 100,{ 25715,59 },{ 25774,86 },{ 418,27 },{ 25774,86 },{ 25774,86 },{ 418,27 }}, // Konkani/Devanagari/India + { 144, 7, 251,{ 25167,102 },{ 25269,140 },{ 418,27 },{ 25167,102 },{ 25269,140 },{ 418,27 }}, // Manx/Latin/Isle Of Man + { 145, 7, 224,{ 25409,46 },{ 25455,130 },{ 418,27 },{ 25409,46 },{ 25455,130 },{ 418,27 }}, // Cornish/Latin/United Kingdom + { 146, 7, 83,{ 25585,48 },{ 25633,192 },{ 418,27 },{ 25585,48 },{ 25633,192 },{ 418,27 }}, // Akan/Latin/Ghana + { 147, 13, 100,{ 25825,59 },{ 25884,86 },{ 418,27 },{ 25884,86 },{ 25884,86 },{ 418,27 }}, // Konkani/Devanagari/India { 148, 7, 83,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Ga/Latin/Ghana - { 149, 7, 157,{ 25860,48 },{ 25908,87 },{ 25995,24 },{ 25860,48 },{ 25908,87 },{ 25995,24 }}, // Igbo/Latin/Nigeria - { 150, 7, 111,{ 26019,48 },{ 26067,189 },{ 26256,24 },{ 26019,48 },{ 26067,189 },{ 26256,24 }}, // Kamba/Latin/Kenya + { 149, 7, 157,{ 25970,48 },{ 26018,87 },{ 26105,24 },{ 25970,48 },{ 26018,87 },{ 26105,24 }}, // Igbo/Latin/Nigeria + { 150, 7, 111,{ 26129,48 },{ 26177,189 },{ 26366,24 },{ 26129,48 },{ 26177,189 },{ 26366,24 }}, // Kamba/Latin/Kenya { 151, 33, 103,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Syriac/Syriac/Iraq { 152, 14, 67,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Blin/Ethiopic/Eritrea { 153, 14, 69,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Geez/Ethiopic/Ethiopia @@ -522,155 +523,157 @@ { 156, 7, 157,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Atsam/Latin/Nigeria { 157, 14, 67,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Tigre/Ethiopic/Eritrea { 158, 7, 157,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Jju/Latin/Nigeria - { 159, 7, 106,{ 26280,48 },{ 26328,77 },{ 26405,24 },{ 26280,48 },{ 26328,77 },{ 26405,24 }}, // Friulian/Latin/Italy + { 159, 7, 106,{ 26390,48 },{ 26438,77 },{ 26515,24 },{ 26390,48 },{ 26438,77 },{ 26515,24 }}, // Friulian/Latin/Italy { 160, 7, 195,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Venda/Latin/South Africa - { 161, 7, 83,{ 26429,48 },{ 26477,87 },{ 26564,24 },{ 26429,48 },{ 26477,87 },{ 26564,24 }}, // Ewe/Latin/Ghana - { 161, 7, 212,{ 26429,48 },{ 26477,87 },{ 26564,24 },{ 26429,48 },{ 26477,87 },{ 26564,24 }}, // Ewe/Latin/Togo + { 161, 7, 83,{ 26539,48 },{ 26587,87 },{ 26674,24 },{ 26539,48 },{ 26587,87 },{ 26674,24 }}, // Ewe/Latin/Ghana + { 161, 7, 212,{ 26539,48 },{ 26587,87 },{ 26674,24 },{ 26539,48 },{ 26587,87 },{ 26674,24 }}, // Ewe/Latin/Togo { 162, 14, 69,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Walamo/Ethiopic/Ethiopia - { 163, 7, 225,{ 26588,59 },{ 26647,95 },{ 418,27 },{ 26588,59 },{ 26647,95 },{ 418,27 }}, // Hawaiian/Latin/United States + { 163, 7, 225,{ 26698,59 },{ 26757,95 },{ 418,27 },{ 26698,59 },{ 26757,95 },{ 418,27 }}, // Hawaiian/Latin/United States { 164, 7, 157,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Tyap/Latin/Nigeria { 165, 7, 129,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Nyanja/Latin/Malawi - { 166, 7, 170,{ 26742,48 },{ 26790,88 },{ 26878,38 },{ 26742,48 },{ 26790,88 },{ 26742,48 }}, // Filipino/Latin/Philippines - { 167, 7, 206,{ 7735,48 },{ 26916,86 },{ 134,24 },{ 7735,48 },{ 26916,86 },{ 134,24 }}, // Swiss German/Latin/Switzerland - { 167, 7, 74,{ 7735,48 },{ 26916,86 },{ 134,24 },{ 7735,48 },{ 26916,86 },{ 134,24 }}, // Swiss German/Latin/France - { 167, 7, 123,{ 7735,48 },{ 26916,86 },{ 134,24 },{ 7735,48 },{ 26916,86 },{ 134,24 }}, // Swiss German/Latin/Liechtenstein - { 168, 34, 44,{ 27002,38 },{ 27002,38 },{ 418,27 },{ 27002,38 },{ 27002,38 },{ 418,27 }}, // Sichuan Yi/Yi/China + { 166, 7, 170,{ 26852,48 },{ 26900,88 },{ 26988,38 },{ 26852,48 },{ 26900,88 },{ 26852,48 }}, // Filipino/Latin/Philippines + { 167, 7, 206,{ 7758,48 },{ 27026,86 },{ 134,24 },{ 7758,48 },{ 27026,86 },{ 134,24 }}, // Swiss German/Latin/Switzerland + { 167, 7, 74,{ 7758,48 },{ 27026,86 },{ 134,24 },{ 7758,48 },{ 27026,86 },{ 134,24 }}, // Swiss German/Latin/France + { 167, 7, 123,{ 7758,48 },{ 27026,86 },{ 134,24 },{ 7758,48 },{ 27026,86 },{ 134,24 }}, // Swiss German/Latin/Liechtenstein + { 168, 34, 44,{ 27112,38 },{ 27112,38 },{ 418,27 },{ 27112,38 },{ 27112,38 },{ 418,27 }}, // Sichuan Yi/Yi/China { 169, 7, 121,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Kpelle/Latin/Liberia - { 170, 7, 82,{ 27040,59 },{ 27099,85 },{ 134,24 },{ 27040,59 },{ 27099,85 },{ 134,24 }}, // Low German/Latin/Germany - { 170, 7, 151,{ 27040,59 },{ 27099,85 },{ 134,24 },{ 27040,59 },{ 27099,85 },{ 134,24 }}, // Low German/Latin/Netherlands + { 170, 7, 82,{ 27150,59 },{ 27209,85 },{ 134,24 },{ 27150,59 },{ 27209,85 },{ 134,24 }}, // Low German/Latin/Germany + { 170, 7, 151,{ 27150,59 },{ 27209,85 },{ 134,24 },{ 27150,59 },{ 27209,85 },{ 134,24 }}, // Low German/Latin/Netherlands { 171, 7, 195,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // South Ndebele/Latin/South Africa { 172, 7, 195,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Northern Sotho/Latin/South Africa - { 173, 7, 161,{ 27184,59 },{ 27243,145 },{ 27388,24 },{ 27184,59 },{ 27243,145 },{ 27388,24 }}, // Northern Sami/Latin/Norway - { 173, 7, 73,{ 27412,60 },{ 27243,145 },{ 27388,24 },{ 27412,60 },{ 27243,145 },{ 27388,24 }}, // Northern Sami/Latin/Finland - { 173, 7, 205,{ 27184,59 },{ 27243,145 },{ 27388,24 },{ 27184,59 },{ 27243,145 },{ 27388,24 }}, // Northern Sami/Latin/Sweden + { 173, 7, 161,{ 27294,59 },{ 27353,145 },{ 27498,24 },{ 27294,59 },{ 27353,145 },{ 27498,24 }}, // Northern Sami/Latin/Norway + { 173, 7, 73,{ 27522,60 },{ 27353,145 },{ 27498,24 },{ 27522,60 },{ 27353,145 },{ 27498,24 }}, // Northern Sami/Latin/Finland + { 173, 7, 205,{ 27294,59 },{ 27353,145 },{ 27498,24 },{ 27294,59 },{ 27353,145 },{ 27498,24 }}, // Northern Sami/Latin/Sweden { 174, 7, 208,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Taroko/Latin/Taiwan - { 175, 7, 111,{ 27472,48 },{ 27520,88 },{ 27608,24 },{ 27472,48 },{ 27520,88 },{ 27608,24 }}, // Gusii/Latin/Kenya - { 176, 7, 111,{ 27632,48 },{ 27680,221 },{ 27901,24 },{ 27632,48 },{ 27680,221 },{ 27901,24 }}, // Taita/Latin/Kenya - { 177, 7, 187,{ 27925,48 },{ 27973,77 },{ 28050,24 },{ 27925,48 },{ 27973,77 },{ 28050,24 }}, // Fulah/Latin/Senegal - { 177, 7, 34,{ 27925,48 },{ 27973,77 },{ 28050,24 },{ 27925,48 },{ 27973,77 },{ 28050,24 }}, // Fulah/Latin/Burkina Faso - { 177, 7, 37,{ 27925,48 },{ 27973,77 },{ 28050,24 },{ 27925,48 },{ 27973,77 },{ 28050,24 }}, // Fulah/Latin/Cameroon - { 177, 7, 80,{ 27925,48 },{ 27973,77 },{ 28050,24 },{ 27925,48 },{ 27973,77 },{ 28050,24 }}, // Fulah/Latin/Gambia - { 177, 7, 83,{ 27925,48 },{ 27973,77 },{ 28050,24 },{ 27925,48 },{ 27973,77 },{ 28050,24 }}, // Fulah/Latin/Ghana - { 177, 7, 91,{ 27925,48 },{ 27973,77 },{ 28050,24 },{ 27925,48 },{ 27973,77 },{ 28050,24 }}, // Fulah/Latin/Guinea - { 177, 7, 92,{ 27925,48 },{ 27973,77 },{ 28050,24 },{ 27925,48 },{ 27973,77 },{ 28050,24 }}, // Fulah/Latin/Guinea Bissau - { 177, 7, 121,{ 27925,48 },{ 27973,77 },{ 28050,24 },{ 27925,48 },{ 27973,77 },{ 28050,24 }}, // Fulah/Latin/Liberia - { 177, 7, 136,{ 27925,48 },{ 27973,77 },{ 28050,24 },{ 27925,48 },{ 27973,77 },{ 28050,24 }}, // Fulah/Latin/Mauritania - { 177, 7, 156,{ 27925,48 },{ 27973,77 },{ 28050,24 },{ 27925,48 },{ 27973,77 },{ 28050,24 }}, // Fulah/Latin/Niger - { 177, 7, 157,{ 27925,48 },{ 27973,77 },{ 28050,24 },{ 27925,48 },{ 27973,77 },{ 28050,24 }}, // Fulah/Latin/Nigeria - { 177, 7, 189,{ 27925,48 },{ 27973,77 },{ 28050,24 },{ 27925,48 },{ 27973,77 },{ 28050,24 }}, // Fulah/Latin/Sierra Leone - { 178, 7, 111,{ 28074,48 },{ 28122,185 },{ 28307,24 },{ 28074,48 },{ 28122,185 },{ 28307,24 }}, // Kikuyu/Latin/Kenya - { 179, 7, 111,{ 28331,48 },{ 28379,173 },{ 28552,24 },{ 28331,48 },{ 28379,173 },{ 28552,24 }}, // Samburu/Latin/Kenya - { 180, 7, 146,{ 28576,48 },{ 28624,88 },{ 134,24 },{ 28576,48 },{ 28624,88 },{ 134,24 }}, // Sena/Latin/Mozambique - { 181, 7, 240,{ 28712,52 },{ 28764,112 },{ 28876,24 },{ 28712,52 },{ 28764,112 },{ 28876,24 }}, // North Ndebele/Latin/Zimbabwe - { 182, 7, 210,{ 28900,39 },{ 28939,194 },{ 29133,24 },{ 28900,39 },{ 28939,194 },{ 29133,24 }}, // Rombo/Latin/Tanzania - { 183, 9, 145,{ 29157,48 },{ 29205,81 },{ 29286,24 },{ 29157,48 },{ 29205,81 },{ 29286,24 }}, // Tachelhit/Tifinagh/Morocco - { 183, 7, 145,{ 29310,48 },{ 29358,81 },{ 29439,24 },{ 29310,48 },{ 29358,81 },{ 29439,24 }}, // Tachelhit/Latin/Morocco - { 184, 7, 3,{ 29463,48 },{ 29511,82 },{ 29593,24 },{ 29617,48 },{ 29665,84 },{ 29749,24 }}, // Kabyle/Latin/Algeria - { 185, 7, 221,{ 29773,48 },{ 29821,152 },{ 134,24 },{ 29773,48 },{ 29821,152 },{ 134,24 }}, // Nyankole/Latin/Uganda - { 186, 7, 210,{ 29973,48 },{ 30021,254 },{ 30275,24 },{ 29973,48 },{ 30021,254 },{ 30275,24 }}, // Bena/Latin/Tanzania - { 187, 7, 210,{ 19795,48 },{ 30299,87 },{ 134,24 },{ 19795,48 },{ 30299,87 },{ 134,24 }}, // Vunjo/Latin/Tanzania - { 188, 7, 132,{ 30386,47 },{ 30433,92 },{ 30525,24 },{ 30386,47 },{ 30433,92 },{ 30525,24 }}, // Bambara/Latin/Mali + { 175, 7, 111,{ 27582,48 },{ 27630,88 },{ 27718,24 },{ 27582,48 },{ 27630,88 },{ 27718,24 }}, // Gusii/Latin/Kenya + { 176, 7, 111,{ 27742,48 },{ 27790,221 },{ 28011,24 },{ 27742,48 },{ 27790,221 },{ 28011,24 }}, // Taita/Latin/Kenya + { 177, 7, 187,{ 28035,48 },{ 28083,77 },{ 28160,24 },{ 28035,48 },{ 28083,77 },{ 28160,24 }}, // Fulah/Latin/Senegal + { 177, 7, 34,{ 28035,48 },{ 28083,77 },{ 28160,24 },{ 28035,48 },{ 28083,77 },{ 28160,24 }}, // Fulah/Latin/Burkina Faso + { 177, 7, 37,{ 28035,48 },{ 28083,77 },{ 28160,24 },{ 28035,48 },{ 28083,77 },{ 28160,24 }}, // Fulah/Latin/Cameroon + { 177, 7, 80,{ 28035,48 },{ 28083,77 },{ 28160,24 },{ 28035,48 },{ 28083,77 },{ 28160,24 }}, // Fulah/Latin/Gambia + { 177, 7, 83,{ 28035,48 },{ 28083,77 },{ 28160,24 },{ 28035,48 },{ 28083,77 },{ 28160,24 }}, // Fulah/Latin/Ghana + { 177, 7, 91,{ 28035,48 },{ 28083,77 },{ 28160,24 },{ 28035,48 },{ 28083,77 },{ 28160,24 }}, // Fulah/Latin/Guinea + { 177, 7, 92,{ 28035,48 },{ 28083,77 },{ 28160,24 },{ 28035,48 },{ 28083,77 },{ 28160,24 }}, // Fulah/Latin/Guinea Bissau + { 177, 7, 121,{ 28035,48 },{ 28083,77 },{ 28160,24 },{ 28035,48 },{ 28083,77 },{ 28160,24 }}, // Fulah/Latin/Liberia + { 177, 7, 136,{ 28035,48 },{ 28083,77 },{ 28160,24 },{ 28035,48 },{ 28083,77 },{ 28160,24 }}, // Fulah/Latin/Mauritania + { 177, 7, 156,{ 28035,48 },{ 28083,77 },{ 28160,24 },{ 28035,48 },{ 28083,77 },{ 28160,24 }}, // Fulah/Latin/Niger + { 177, 7, 157,{ 28035,48 },{ 28083,77 },{ 28160,24 },{ 28035,48 },{ 28083,77 },{ 28160,24 }}, // Fulah/Latin/Nigeria + { 177, 7, 189,{ 28035,48 },{ 28083,77 },{ 28160,24 },{ 28035,48 },{ 28083,77 },{ 28160,24 }}, // Fulah/Latin/Sierra Leone + { 178, 7, 111,{ 28184,48 },{ 28232,185 },{ 28417,24 },{ 28184,48 },{ 28232,185 },{ 28417,24 }}, // Kikuyu/Latin/Kenya + { 179, 7, 111,{ 28441,48 },{ 28489,173 },{ 28662,24 },{ 28441,48 },{ 28489,173 },{ 28662,24 }}, // Samburu/Latin/Kenya + { 180, 7, 146,{ 28686,48 },{ 28734,88 },{ 134,24 },{ 28686,48 },{ 28734,88 },{ 134,24 }}, // Sena/Latin/Mozambique + { 181, 7, 240,{ 28822,52 },{ 28874,112 },{ 28986,24 },{ 28822,52 },{ 28874,112 },{ 28986,24 }}, // North Ndebele/Latin/Zimbabwe + { 182, 7, 210,{ 29010,39 },{ 29049,194 },{ 29243,24 },{ 29010,39 },{ 29049,194 },{ 29243,24 }}, // Rombo/Latin/Tanzania + { 183, 9, 145,{ 29267,48 },{ 29315,81 },{ 29396,24 },{ 29267,48 },{ 29315,81 },{ 29396,24 }}, // Tachelhit/Tifinagh/Morocco + { 183, 7, 145,{ 29420,48 },{ 29468,81 },{ 29549,24 },{ 29420,48 },{ 29468,81 },{ 29549,24 }}, // Tachelhit/Latin/Morocco + { 184, 7, 3,{ 29573,48 },{ 29621,82 },{ 29703,24 },{ 29727,48 },{ 29775,84 },{ 29859,24 }}, // Kabyle/Latin/Algeria + { 185, 7, 221,{ 29883,48 },{ 29931,152 },{ 134,24 },{ 29883,48 },{ 29931,152 },{ 134,24 }}, // Nyankole/Latin/Uganda + { 186, 7, 210,{ 30083,48 },{ 30131,254 },{ 30385,24 },{ 30083,48 },{ 30131,254 },{ 30385,24 }}, // Bena/Latin/Tanzania + { 187, 7, 210,{ 20099,48 },{ 30409,87 },{ 134,24 },{ 20099,48 },{ 30409,87 },{ 134,24 }}, // Vunjo/Latin/Tanzania + { 188, 7, 132,{ 30496,47 },{ 30543,92 },{ 30635,24 },{ 30496,47 },{ 30543,92 },{ 30635,24 }}, // Bambara/Latin/Mali { 188, 75, 132,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Bambara/Nko/Mali - { 189, 7, 111,{ 30549,48 },{ 30597,207 },{ 30804,24 },{ 30549,48 },{ 30597,207 },{ 30804,24 }}, // Embu/Latin/Kenya - { 190, 12, 225,{ 30828,36 },{ 30864,58 },{ 30922,24 },{ 30828,36 },{ 30864,58 },{ 30922,24 }}, // Cherokee/Cherokee/United States - { 191, 7, 137,{ 30946,47 },{ 30993,68 },{ 31061,24 },{ 30946,47 },{ 30993,68 },{ 31061,24 }}, // Morisyen/Latin/Mauritius - { 192, 7, 210,{ 19795,48 },{ 31085,264 },{ 134,24 },{ 19795,48 },{ 31085,264 },{ 134,24 }}, // Makonde/Latin/Tanzania - { 193, 7, 210,{ 31349,83 },{ 31432,111 },{ 31543,24 },{ 31349,83 },{ 31432,111 },{ 31543,24 }}, // Langi/Latin/Tanzania - { 194, 7, 221,{ 31567,48 },{ 31615,97 },{ 134,24 },{ 31567,48 },{ 31615,97 },{ 134,24 }}, // Ganda/Latin/Uganda - { 195, 7, 239,{ 31712,48 },{ 31760,83 },{ 31843,24 },{ 31712,48 },{ 31760,83 },{ 31843,24 }}, // Bemba/Latin/Zambia - { 196, 7, 39,{ 31867,48 },{ 31915,85 },{ 134,24 },{ 31867,48 },{ 31915,85 },{ 134,24 }}, // Kabuverdianu/Latin/Cape Verde - { 197, 7, 111,{ 32000,48 },{ 32048,86 },{ 32134,24 },{ 32000,48 },{ 32048,86 },{ 32134,24 }}, // Meru/Latin/Kenya - { 198, 7, 111,{ 32158,49 },{ 32207,121 },{ 32328,24 },{ 32158,49 },{ 32207,121 },{ 32328,24 }}, // Kalenjin/Latin/Kenya - { 199, 7, 148,{ 0,48 },{ 32352,136 },{ 134,24 },{ 0,48 },{ 32352,136 },{ 134,24 }}, // Nama/Latin/Namibia - { 200, 7, 210,{ 19795,48 },{ 30299,87 },{ 134,24 },{ 19795,48 },{ 30299,87 },{ 134,24 }}, // Machame/Latin/Tanzania - { 201, 7, 82,{ 32488,59 },{ 32547,87 },{ 13242,24 },{ 32634,48 },{ 32547,87 },{ 13242,24 }}, // Colognian/Latin/Germany - { 202, 7, 111,{ 32682,51 },{ 32733,132 },{ 418,27 },{ 32682,51 },{ 32733,132 },{ 418,27 }}, // Masai/Latin/Kenya - { 202, 7, 210,{ 32682,51 },{ 32733,132 },{ 418,27 },{ 32682,51 },{ 32733,132 },{ 418,27 }}, // Masai/Latin/Tanzania - { 203, 7, 221,{ 31567,48 },{ 31615,97 },{ 134,24 },{ 31567,48 },{ 31615,97 },{ 134,24 }}, // Soga/Latin/Uganda - { 204, 7, 111,{ 32865,48 },{ 19843,84 },{ 134,24 },{ 32865,48 },{ 19843,84 },{ 134,24 }}, // Luyia/Latin/Kenya - { 205, 7, 210,{ 32913,48 },{ 19843,84 },{ 134,24 },{ 32913,48 },{ 19843,84 },{ 134,24 }}, // Asu/Latin/Tanzania - { 206, 7, 221,{ 32961,48 },{ 33009,94 },{ 33103,24 },{ 32961,48 },{ 33009,94 },{ 33103,24 }}, // Teso/Latin/Uganda - { 206, 7, 111,{ 32961,48 },{ 33009,94 },{ 33103,24 },{ 32961,48 },{ 33009,94 },{ 33103,24 }}, // Teso/Latin/Kenya + { 189, 7, 111,{ 30659,48 },{ 30707,207 },{ 30914,24 },{ 30659,48 },{ 30707,207 },{ 30914,24 }}, // Embu/Latin/Kenya + { 190, 12, 225,{ 30938,36 },{ 30974,58 },{ 31032,24 },{ 30938,36 },{ 30974,58 },{ 31032,24 }}, // Cherokee/Cherokee/United States + { 191, 7, 137,{ 31056,47 },{ 31103,68 },{ 31171,24 },{ 31056,47 },{ 31103,68 },{ 31171,24 }}, // Morisyen/Latin/Mauritius + { 192, 7, 210,{ 20099,48 },{ 31195,264 },{ 134,24 },{ 20099,48 },{ 31195,264 },{ 134,24 }}, // Makonde/Latin/Tanzania + { 193, 7, 210,{ 31459,83 },{ 31542,111 },{ 31653,24 },{ 31459,83 },{ 31542,111 },{ 31653,24 }}, // Langi/Latin/Tanzania + { 194, 7, 221,{ 31677,48 },{ 31725,97 },{ 134,24 },{ 31677,48 },{ 31725,97 },{ 134,24 }}, // Ganda/Latin/Uganda + { 195, 7, 239,{ 31822,48 },{ 31870,83 },{ 31953,24 },{ 31822,48 },{ 31870,83 },{ 31953,24 }}, // Bemba/Latin/Zambia + { 196, 7, 39,{ 31977,48 },{ 32025,85 },{ 134,24 },{ 31977,48 },{ 32025,85 },{ 134,24 }}, // Kabuverdianu/Latin/Cape Verde + { 197, 7, 111,{ 32110,48 },{ 32158,86 },{ 32244,24 },{ 32110,48 },{ 32158,86 },{ 32244,24 }}, // Meru/Latin/Kenya + { 198, 7, 111,{ 32268,49 },{ 32317,121 },{ 32438,24 },{ 32268,49 },{ 32317,121 },{ 32438,24 }}, // Kalenjin/Latin/Kenya + { 199, 7, 148,{ 0,48 },{ 32462,136 },{ 134,24 },{ 0,48 },{ 32462,136 },{ 134,24 }}, // Nama/Latin/Namibia + { 200, 7, 210,{ 20099,48 },{ 30409,87 },{ 134,24 },{ 20099,48 },{ 30409,87 },{ 134,24 }}, // Machame/Latin/Tanzania + { 201, 7, 82,{ 32598,59 },{ 32657,87 },{ 13265,24 },{ 32744,48 },{ 32657,87 },{ 13265,24 }}, // Colognian/Latin/Germany + { 202, 7, 111,{ 32792,51 },{ 32843,132 },{ 418,27 },{ 32792,51 },{ 32843,132 },{ 418,27 }}, // Masai/Latin/Kenya + { 202, 7, 210,{ 32792,51 },{ 32843,132 },{ 418,27 },{ 32792,51 },{ 32843,132 },{ 418,27 }}, // Masai/Latin/Tanzania + { 203, 7, 221,{ 31677,48 },{ 31725,97 },{ 134,24 },{ 31677,48 },{ 31725,97 },{ 134,24 }}, // Soga/Latin/Uganda + { 204, 7, 111,{ 32975,48 },{ 20147,84 },{ 134,24 },{ 32975,48 },{ 20147,84 },{ 134,24 }}, // Luyia/Latin/Kenya + { 205, 7, 210,{ 33023,48 },{ 20147,84 },{ 134,24 },{ 33023,48 },{ 20147,84 },{ 134,24 }}, // Asu/Latin/Tanzania + { 206, 7, 221,{ 33071,48 },{ 33119,94 },{ 33213,24 },{ 33071,48 },{ 33119,94 },{ 33213,24 }}, // Teso/Latin/Uganda + { 206, 7, 111,{ 33071,48 },{ 33119,94 },{ 33213,24 },{ 33071,48 },{ 33119,94 },{ 33213,24 }}, // Teso/Latin/Kenya { 207, 7, 67,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Saho/Latin/Eritrea - { 208, 7, 132,{ 33127,46 },{ 33173,88 },{ 33261,24 },{ 33127,46 },{ 33173,88 },{ 33261,24 }}, // Koyra Chiini/Latin/Mali - { 209, 7, 210,{ 19795,48 },{ 30299,87 },{ 134,24 },{ 19795,48 },{ 30299,87 },{ 134,24 }}, // Rwa/Latin/Tanzania - { 210, 7, 111,{ 33285,48 },{ 33333,186 },{ 33519,24 },{ 33285,48 },{ 33333,186 },{ 33519,24 }}, // Luo/Latin/Kenya - { 211, 7, 221,{ 29773,48 },{ 29821,152 },{ 134,24 },{ 29773,48 },{ 29821,152 },{ 134,24 }}, // Chiga/Latin/Uganda - { 212, 7, 145,{ 33543,48 },{ 33591,86 },{ 33677,24 },{ 33543,48 },{ 33591,86 },{ 33677,24 }}, // Central Morocco Tamazight/Latin/Morocco - { 213, 7, 132,{ 33127,46 },{ 33173,88 },{ 33261,24 },{ 33127,46 },{ 33173,88 },{ 33261,24 }}, // Koyraboro Senni/Latin/Mali - { 214, 7, 210,{ 19795,48 },{ 33701,84 },{ 134,24 },{ 19795,48 },{ 33701,84 },{ 134,24 }}, // Shambala/Latin/Tanzania - { 215, 13, 100,{ 33785,88 },{ 33785,88 },{ 33873,31 },{ 33785,88 },{ 33785,88 },{ 33873,31 }}, // Bodo/Devanagari/India - { 218, 2, 178,{ 22623,48 },{ 11391,80 },{ 11308,24 },{ 22623,48 },{ 11391,80 },{ 11308,24 }}, // Chechen/Cyrillic/Russia - { 219, 2, 178,{ 33904,65 },{ 33969,117 },{ 34086,30 },{ 33904,65 },{ 34116,117 },{ 34086,30 }}, // Church/Cyrillic/Russia + { 208, 7, 132,{ 33237,46 },{ 33283,88 },{ 33371,24 },{ 33237,46 },{ 33283,88 },{ 33371,24 }}, // Koyra Chiini/Latin/Mali + { 209, 7, 210,{ 20099,48 },{ 30409,87 },{ 134,24 },{ 20099,48 },{ 30409,87 },{ 134,24 }}, // Rwa/Latin/Tanzania + { 210, 7, 111,{ 33395,48 },{ 33443,186 },{ 33629,24 },{ 33395,48 },{ 33443,186 },{ 33629,24 }}, // Luo/Latin/Kenya + { 211, 7, 221,{ 29883,48 },{ 29931,152 },{ 134,24 },{ 29883,48 },{ 29931,152 },{ 134,24 }}, // Chiga/Latin/Uganda + { 212, 7, 145,{ 33653,48 },{ 33701,86 },{ 33787,24 },{ 33653,48 },{ 33701,86 },{ 33787,24 }}, // Central Morocco Tamazight/Latin/Morocco + { 213, 7, 132,{ 33237,46 },{ 33283,88 },{ 33371,24 },{ 33237,46 },{ 33283,88 },{ 33371,24 }}, // Koyraboro Senni/Latin/Mali + { 214, 7, 210,{ 20099,48 },{ 33811,84 },{ 134,24 },{ 20099,48 },{ 33811,84 },{ 134,24 }}, // Shambala/Latin/Tanzania + { 215, 13, 100,{ 33895,88 },{ 33895,88 },{ 33983,31 },{ 33895,88 },{ 33895,88 },{ 33983,31 }}, // Bodo/Devanagari/India + { 218, 2, 178,{ 22927,48 },{ 11414,80 },{ 11331,24 },{ 22927,48 },{ 11414,80 },{ 11331,24 }}, // Chechen/Cyrillic/Russia + { 219, 2, 178,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Church/Cyrillic/Russia { 220, 2, 178,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Chuvash/Cyrillic/Russia - { 230, 7, 49,{ 34233,49 },{ 34282,99 },{ 34381,24 },{ 34233,49 },{ 34282,99 },{ 34381,24 }}, // Luba Katanga/Latin/Congo Kinshasa - { 231, 7, 125,{ 34405,48 },{ 34453,85 },{ 134,24 },{ 34538,59 },{ 34453,85 },{ 134,24 }}, // Luxembourgish/Latin/Luxembourg + { 230, 7, 49,{ 34014,49 },{ 34063,99 },{ 34162,24 },{ 34014,49 },{ 34063,99 },{ 34162,24 }}, // Luba Katanga/Latin/Congo Kinshasa + { 231, 7, 125,{ 34186,48 },{ 34234,85 },{ 134,24 },{ 34319,59 },{ 34234,85 },{ 134,24 }}, // Luxembourgish/Latin/Luxembourg + { 232, 7, 225,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Navaho/Latin/United States { 236, 7, 21,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Walloon/Latin/Belgium - { 237, 7, 37,{ 34597,48 },{ 34645,195 },{ 34840,24 },{ 34597,48 },{ 34645,195 },{ 34840,24 }}, // Aghem/Latin/Cameroon - { 238, 7, 37,{ 34864,48 },{ 34912,90 },{ 35002,24 },{ 34864,48 },{ 34912,90 },{ 35002,24 }}, // Basaa/Latin/Cameroon - { 239, 7, 156,{ 33127,46 },{ 33173,88 },{ 33261,24 },{ 33127,46 },{ 33173,88 },{ 33261,24 }}, // Zarma/Latin/Niger - { 240, 7, 37,{ 35026,49 },{ 35075,99 },{ 35174,24 },{ 35026,49 },{ 35075,99 },{ 35174,24 }}, // Duala/Latin/Cameroon - { 241, 7, 187,{ 35198,36 },{ 35234,82 },{ 35316,24 },{ 35198,36 },{ 35234,82 },{ 35316,24 }}, // Jola Fonyi/Latin/Senegal - { 242, 7, 37,{ 35340,50 },{ 35390,141 },{ 35531,24 },{ 35340,50 },{ 35390,141 },{ 35531,24 }}, // Ewondo/Latin/Cameroon - { 243, 7, 37,{ 35555,39 },{ 35594,191 },{ 418,27 },{ 35555,39 },{ 35594,191 },{ 418,27 }}, // Bafia/Latin/Cameroon - { 244, 7, 146,{ 35785,48 },{ 35833,213 },{ 36046,24 },{ 35785,48 },{ 35833,213 },{ 36046,24 }}, // Makhuwa Meetto/Latin/Mozambique - { 245, 7, 37,{ 36070,48 },{ 36118,139 },{ 36257,24 },{ 36070,48 },{ 36118,139 },{ 36257,24 }}, // Mundang/Latin/Cameroon - { 246, 7, 37,{ 36281,51 },{ 36332,143 },{ 418,27 },{ 36281,51 },{ 36332,143 },{ 418,27 }}, // Kwasio/Latin/Cameroon - { 247, 7, 254,{ 36475,54 },{ 36529,96 },{ 36625,24 },{ 36475,54 },{ 36529,96 },{ 36625,24 }}, // Nuer/Latin/South Sudan - { 248, 2, 178,{ 36649,50 },{ 36699,116 },{ 36815,24 },{ 36649,50 },{ 36839,121 },{ 36815,24 }}, // Sakha/Cyrillic/Russia - { 249, 7, 210,{ 36960,48 },{ 37008,117 },{ 418,27 },{ 36960,48 },{ 37008,117 },{ 418,27 }}, // Sangu/Latin/Tanzania - { 251, 7, 156,{ 33127,46 },{ 33173,88 },{ 33261,24 },{ 33127,46 },{ 33173,88 },{ 33261,24 }}, // Tasawaq/Latin/Niger - { 252, 35, 121,{ 37125,38 },{ 37163,61 },{ 418,27 },{ 37125,38 },{ 37163,61 },{ 418,27 }}, // Vai/Vai/Liberia + { 237, 7, 37,{ 34378,48 },{ 34426,195 },{ 34621,24 },{ 34378,48 },{ 34426,195 },{ 34621,24 }}, // Aghem/Latin/Cameroon + { 238, 7, 37,{ 34645,48 },{ 34693,90 },{ 34783,24 },{ 34645,48 },{ 34693,90 },{ 34783,24 }}, // Basaa/Latin/Cameroon + { 239, 7, 156,{ 33237,46 },{ 33283,88 },{ 33371,24 },{ 33237,46 },{ 33283,88 },{ 33371,24 }}, // Zarma/Latin/Niger + { 240, 7, 37,{ 34807,49 },{ 34856,99 },{ 34955,24 },{ 34807,49 },{ 34856,99 },{ 34955,24 }}, // Duala/Latin/Cameroon + { 241, 7, 187,{ 34979,36 },{ 35015,82 },{ 35097,24 },{ 34979,36 },{ 35015,82 },{ 35097,24 }}, // Jola Fonyi/Latin/Senegal + { 242, 7, 37,{ 35121,50 },{ 35171,141 },{ 35312,24 },{ 35121,50 },{ 35171,141 },{ 35312,24 }}, // Ewondo/Latin/Cameroon + { 243, 7, 37,{ 35336,39 },{ 35375,191 },{ 418,27 },{ 35336,39 },{ 35375,191 },{ 418,27 }}, // Bafia/Latin/Cameroon + { 244, 7, 146,{ 35566,48 },{ 35614,213 },{ 35827,24 },{ 35566,48 },{ 35614,213 },{ 35827,24 }}, // Makhuwa Meetto/Latin/Mozambique + { 245, 7, 37,{ 35851,48 },{ 35899,139 },{ 36038,24 },{ 35851,48 },{ 35899,139 },{ 36038,24 }}, // Mundang/Latin/Cameroon + { 246, 7, 37,{ 36062,51 },{ 36113,143 },{ 418,27 },{ 36062,51 },{ 36113,143 },{ 418,27 }}, // Kwasio/Latin/Cameroon + { 247, 7, 254,{ 36256,54 },{ 36310,96 },{ 36406,24 },{ 36256,54 },{ 36310,96 },{ 36406,24 }}, // Nuer/Latin/South Sudan + { 248, 2, 178,{ 36430,50 },{ 36480,116 },{ 36596,24 },{ 36430,50 },{ 36620,121 },{ 36596,24 }}, // Sakha/Cyrillic/Russia + { 249, 7, 210,{ 36741,48 },{ 36789,117 },{ 418,27 },{ 36741,48 },{ 36789,117 },{ 418,27 }}, // Sangu/Latin/Tanzania + { 251, 7, 156,{ 33237,46 },{ 33283,88 },{ 33371,24 },{ 33237,46 },{ 33283,88 },{ 33371,24 }}, // Tasawaq/Latin/Niger + { 252, 35, 121,{ 36906,38 },{ 36944,61 },{ 418,27 },{ 36906,38 },{ 36944,61 },{ 418,27 }}, // Vai/Vai/Liberia { 252, 7, 121,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Vai/Latin/Liberia - { 253, 7, 206,{ 37224,48 },{ 37272,99 },{ 37371,24 },{ 37224,48 },{ 37272,99 },{ 37371,24 }}, // Walser/Latin/Switzerland - { 254, 7, 37,{ 37395,51 },{ 37446,191 },{ 418,27 },{ 37395,51 },{ 37446,191 },{ 418,27 }}, // Yangben/Latin/Cameroon - { 256, 7, 197,{ 37637,48 },{ 37685,85 },{ 37770,24 },{ 37794,48 },{ 37842,117 },{ 37770,24 }}, // Asturian/Latin/Spain - { 257, 7, 37,{ 37959,174 },{ 37959,174 },{ 418,27 },{ 37959,174 },{ 37959,174 },{ 418,27 }}, // Ngomba/Latin/Cameroon - { 258, 7, 37,{ 38133,103 },{ 38133,103 },{ 418,27 },{ 38133,103 },{ 38133,103 },{ 418,27 }}, // Kako/Latin/Cameroon - { 259, 7, 37,{ 38236,137 },{ 38373,142 },{ 38515,36 },{ 38236,137 },{ 38373,142 },{ 38515,36 }}, // Meta/Latin/Cameroon - { 260, 7, 37,{ 38551,165 },{ 38551,165 },{ 418,27 },{ 38551,165 },{ 38551,165 },{ 418,27 }}, // Ngiemboon/Latin/Cameroon + { 253, 7, 206,{ 37005,48 },{ 37053,99 },{ 37152,24 },{ 37005,48 },{ 37053,99 },{ 37152,24 }}, // Walser/Latin/Switzerland + { 254, 7, 37,{ 37176,51 },{ 37227,191 },{ 418,27 },{ 37176,51 },{ 37227,191 },{ 418,27 }}, // Yangben/Latin/Cameroon + { 256, 7, 197,{ 37418,48 },{ 37466,85 },{ 37551,24 },{ 37575,48 },{ 37623,117 },{ 37551,24 }}, // Asturian/Latin/Spain + { 257, 7, 37,{ 37740,174 },{ 37740,174 },{ 418,27 },{ 37740,174 },{ 37740,174 },{ 418,27 }}, // Ngomba/Latin/Cameroon + { 258, 7, 37,{ 37914,103 },{ 37914,103 },{ 418,27 },{ 37914,103 },{ 37914,103 },{ 418,27 }}, // Kako/Latin/Cameroon + { 259, 7, 37,{ 38017,137 },{ 38154,142 },{ 38296,36 },{ 38017,137 },{ 38154,142 },{ 38296,36 }}, // Meta/Latin/Cameroon + { 260, 7, 37,{ 38332,165 },{ 38332,165 },{ 418,27 },{ 38332,165 },{ 38332,165 },{ 418,27 }}, // Ngiemboon/Latin/Cameroon { 261, 7, 197,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Aragonese/Latin/Spain - { 290, 11, 100,{ 38716,58 },{ 38774,88 },{ 38862,37 },{ 38774,88 },{ 38774,88 },{ 38899,38 }}, // Manipuri/Bengali/India + { 275, 13, 100,{ 38497,60 },{ 38557,73 },{ 38630,30 },{ 38497,60 },{ 38660,73 },{ 38630,30 }}, // Dogri/Devanagari/India + { 290, 11, 100,{ 38733,58 },{ 38791,88 },{ 38879,37 },{ 38916,88 },{ 38916,88 },{ 39004,38 }}, // Manipuri/Bengali/India { 290, 72, 100,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Manipuri/Meitei Mayek/India - { 304, 78, 100,{ 38937,47 },{ 38984,83 },{ 39067,24 },{ 38937,47 },{ 38984,83 },{ 39067,24 }}, // Santali/Ol Chiki/India + { 304, 78, 100,{ 39042,47 },{ 39089,83 },{ 39172,24 },{ 39042,47 },{ 39089,83 },{ 39172,24 }}, // Santali/Ol Chiki/India { 304, 13, 100,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Santali/Devanagari/India { 309, 100, 232,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Tai Dam/Tai Viet/Vietnam { 312, 7, 37,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Akoose/Latin/Cameroon - { 313, 7, 225,{ 39091,180 },{ 39091,180 },{ 418,27 },{ 39091,180 },{ 39091,180 },{ 418,27 }}, // Lakota/Latin/United States - { 314, 9, 145,{ 29157,48 },{ 29205,81 },{ 29286,24 },{ 29157,48 },{ 29205,81 },{ 29286,24 }}, // Standard Moroccan Tamazight/Tifinagh/Morocco + { 313, 7, 225,{ 39196,180 },{ 39196,180 },{ 418,27 },{ 39196,180 },{ 39196,180 },{ 418,27 }}, // Lakota/Latin/United States + { 314, 9, 145,{ 29267,48 },{ 29315,81 },{ 29396,24 },{ 29267,48 },{ 29315,81 },{ 29396,24 }}, // Standard Moroccan Tamazight/Tifinagh/Morocco { 315, 7, 43,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Mapuche/Latin/Chile - { 316, 1, 103,{ 39271,105 },{ 39271,105 },{ 39376,24 },{ 39271,105 },{ 39271,105 },{ 39376,24 }}, // Central Kurdish/Arabic/Iraq - { 316, 1, 102,{ 39271,105 },{ 39271,105 },{ 39376,24 },{ 39271,105 },{ 39271,105 },{ 39376,24 }}, // Central Kurdish/Arabic/Iran - { 317, 7, 82,{ 39400,48 },{ 39448,85 },{ 9992,24 },{ 39533,60 },{ 39593,93 },{ 9992,24 }}, // Lower Sorbian/Latin/Germany - { 318, 7, 82,{ 39686,48 },{ 39734,86 },{ 9992,24 },{ 39820,60 },{ 39880,93 },{ 9992,24 }}, // Upper Sorbian/Latin/Germany + { 316, 1, 103,{ 39376,105 },{ 39376,105 },{ 39481,24 },{ 39376,105 },{ 39376,105 },{ 39481,24 }}, // Central Kurdish/Arabic/Iraq + { 316, 1, 102,{ 39376,105 },{ 39376,105 },{ 39481,24 },{ 39376,105 },{ 39376,105 },{ 39481,24 }}, // Central Kurdish/Arabic/Iran + { 317, 7, 82,{ 39505,48 },{ 39553,85 },{ 10015,24 },{ 39638,60 },{ 39698,93 },{ 10015,24 }}, // Lower Sorbian/Latin/Germany + { 318, 7, 82,{ 39791,48 },{ 39839,86 },{ 10015,24 },{ 39925,60 },{ 39985,93 },{ 10015,24 }}, // Upper Sorbian/Latin/Germany { 319, 7, 37,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Kenyang/Latin/Cameroon { 320, 7, 38,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Mohawk/Latin/Canada { 321, 75, 91,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Nko/Nko/Guinea - { 322, 7, 260,{ 39973,48 },{ 40021,91 },{ 40112,24 },{ 39973,48 },{ 40021,91 },{ 40112,24 }}, // Prussian/Latin/World + { 322, 7, 260,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Prussian/Latin/World { 323, 7, 90,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Kiche/Latin/Guatemala { 324, 7, 205,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Southern Sami/Latin/Sweden { 325, 7, 205,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Lule Sami/Latin/Sweden - { 326, 7, 73,{ 40136,77 },{ 40213,140 },{ 40353,25 },{ 40136,77 },{ 40213,140 },{ 40353,25 }}, // Inari Sami/Latin/Finland + { 326, 7, 73,{ 40078,77 },{ 40155,140 },{ 40295,25 },{ 40078,77 },{ 40155,140 },{ 40295,25 }}, // Inari Sami/Latin/Finland { 327, 7, 73,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Skolt Sami/Latin/Finland { 328, 7, 13,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Warlpiri/Latin/Australia - { 339, 13, 100,{ 9202,59 },{ 9261,73 },{ 9334,30 },{ 9202,59 },{ 9261,73 },{ 9334,30 }}, // Maithili/Devanagari/India - { 346, 1, 102,{ 15184,70 },{ 15184,70 },{ 418,27 },{ 15184,70 },{ 15184,70 },{ 418,27 }}, // Mazanderani/Arabic/Iran - { 349, 1, 102,{ 40378,77 },{ 40378,77 },{ 418,27 },{ 40378,77 },{ 40378,77 },{ 418,27 }}, // Northern Luri/Arabic/Iran - { 349, 1, 103,{ 40378,77 },{ 40378,77 },{ 418,27 },{ 40378,77 },{ 40378,77 },{ 418,27 }}, // Northern Luri/Arabic/Iraq - { 357, 6, 97,{ 4557,39 },{ 4557,39 },{ 418,27 },{ 4557,39 },{ 4557,39 },{ 418,27 }}, // Cantonese/Traditional Han/Hong Kong - { 357, 5, 44,{ 4557,39 },{ 4596,38 },{ 418,27 },{ 4557,39 },{ 4596,38 },{ 418,27 }}, // Cantonese/Simplified Han/China + { 339, 13, 100,{ 9225,59 },{ 9284,73 },{ 9357,30 },{ 9225,59 },{ 9284,73 },{ 9357,30 }}, // Maithili/Devanagari/India + { 346, 1, 102,{ 15207,70 },{ 15207,70 },{ 418,27 },{ 15207,70 },{ 15207,70 },{ 418,27 }}, // Mazanderani/Arabic/Iran + { 349, 1, 102,{ 40320,77 },{ 40320,77 },{ 418,27 },{ 40320,77 },{ 40320,77 },{ 418,27 }}, // Northern Luri/Arabic/Iran + { 349, 1, 103,{ 40320,77 },{ 40320,77 },{ 418,27 },{ 40320,77 },{ 40320,77 },{ 418,27 }}, // Northern Luri/Arabic/Iraq + { 357, 6, 97,{ 4480,39 },{ 4480,39 },{ 418,27 },{ 4480,39 },{ 4480,39 },{ 418,27 }}, // Cantonese/Traditional Han/Hong Kong + { 357, 5, 44,{ 4480,39 },{ 4519,38 },{ 418,27 },{ 4480,39 },{ 4519,38 },{ 418,27 }}, // Cantonese/Simplified Han/China { 358, 138, 225,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Osage/Osage/United States { 360, 7, 260,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Ido/Latin/World { 361, 7, 260,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Lojban/Latin/World { 362, 7, 106,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Sicilian/Latin/Italy { 363, 1, 102,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Southern Kurdish/Arabic/Iran { 364, 1, 163,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Western Balochi/Arabic/Pakistan - { 365, 7, 170,{ 26742,48 },{ 26790,88 },{ 40455,24 },{ 40479,46 },{ 26790,88 },{ 40455,24 }}, // Cebuano/Latin/Philippines + { 365, 7, 170,{ 26852,48 },{ 26900,88 },{ 40397,24 },{ 26852,48 },{ 26900,88 },{ 40397,24 }}, // Cebuano/Latin/Philippines { 366, 2, 178,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Erzya/Cyrillic/Russia { 367, 7, 225,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Chickasaw/Latin/United States { 368, 7, 225,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Muscogee/Latin/United States { 369, 7, 172,{ 370,48 },{ 370,48 },{ 418,27 },{ 370,48 },{ 370,48 },{ 418,27 }}, // Silesian/Latin/Poland - { 370, 7, 157,{ 40525,51 },{ 40576,83 },{ 134,24 },{ 40659,50 },{ 40576,83 },{ 134,24 }}, // Nigerian Pidgin/Latin/Nigeria + { 370, 7, 157,{ 40421,51 },{ 40472,83 },{ 134,24 },{ 40555,50 },{ 40472,83 },{ 134,24 }}, // Nigerian Pidgin/Latin/Nigeria { 0, 0, 0,{ 0,0},{ 0,0},{ 0,0},{ 0,0},{ 0,0},{ 0,0}}, // trailing zeros }; @@ -773,1944 +776,1939 @@ 0x3b, 0x9ab, 0x3b, 0x9ae, 0x3b, 0x98f, 0x3b, 0x9ae, 0x3b, 0x99c, 0x3b, 0x99c, 0x3b, 0x986, 0x3b, 0x99b, 0x3b, 0x985, 0x3b, 0x9a8, 0x3b, 0x9a1, 0x3b, 0x79, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x76, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x69, 0x79, 0x6e, 0x3b, 0x69, 0x79, 0x6c, 0x3b, 0x61, 0x76, 0x71, 0x3b, 0x73, 0x65, 0x6e, 0x3b, 0x6f, -0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x79, 0x3b, 0x64, 0x65, 0x6b, 0x3b, 0x79, 0x61, 0x6e, 0x76, 0x61, 0x72, 0x3b, 0x46, 0x65, -0x76, 0x72, 0x61, 0x6c, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x3b, -0x130, 0x79, 0x75, 0x6e, 0x3b, 0x130, 0x79, 0x75, 0x6c, 0x3b, 0x41, 0x76, 0x71, 0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x6e, -0x74, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x4e, 0x6f, 0x79, 0x61, 0x62, 0x72, -0x3b, 0x64, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, 0x79, 0x61, 0x6e, 0x76, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x76, 0x72, 0x61, -0x6c, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x69, 0x79, 0x75, -0x6e, 0x3b, 0x69, 0x79, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x71, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x6e, 0x74, 0x79, 0x61, -0x62, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x6e, 0x6f, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x64, 0x65, -0x6b, 0x61, 0x62, 0x72, 0x3b, 0x458, 0x430, 0x43d, 0x3b, 0x444, 0x435, 0x432, 0x3b, 0x43c, 0x430, 0x440, 0x3b, 0x430, 0x43f, 0x440, -0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x458, 0x43d, 0x3b, 0x438, 0x458, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, 0x435, 0x43d, -0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x458, 0x3b, 0x434, 0x435, 0x43a, 0x3b, 0x408, 0x430, 0x43d, 0x432, 0x430, 0x440, 0x3b, -0x424, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x3b, 0x41c, 0x430, 0x440, 0x442, 0x3b, 0x410, 0x43f, 0x440, 0x435, 0x43b, 0x3b, 0x41c, 0x430, -0x439, 0x3b, 0x418, 0x458, 0x443, 0x43d, 0x3b, 0x418, 0x458, 0x443, 0x43b, 0x3b, 0x410, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x421, -0x435, 0x43d, 0x442, 0x458, 0x430, 0x431, 0x440, 0x3b, 0x41e, 0x43a, 0x442, 0x458, 0x430, 0x431, 0x440, 0x3b, 0x41d, 0x43e, 0x458, 0x430, -0x431, 0x440, 0x3b, 0x414, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x3b, 0x458, 0x430, 0x43d, 0x432, 0x430, 0x440, 0x3b, 0x444, 0x435, 0x432, -0x440, 0x430, 0x43b, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, -0x458, 0x443, 0x43d, 0x3b, 0x438, 0x458, 0x443, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43d, 0x442, -0x458, 0x430, 0x431, 0x440, 0x3b, 0x43e, 0x43a, 0x442, 0x458, 0x430, 0x431, 0x440, 0x3b, 0x43d, 0x43e, 0x458, 0x430, 0x431, 0x440, 0x3b, -0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x3b, 0x75, 0x72, 0x74, 0x2e, 0x3b, 0x6f, 0x74, 0x73, 0x2e, 0x3b, 0x6d, 0x61, 0x72, -0x2e, 0x3b, 0x61, 0x70, 0x69, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x2e, 0x3b, 0x65, 0x6b, 0x61, 0x2e, 0x3b, 0x75, 0x7a, 0x74, -0x2e, 0x3b, 0x61, 0x62, 0x75, 0x2e, 0x3b, 0x69, 0x72, 0x61, 0x2e, 0x3b, 0x75, 0x72, 0x72, 0x2e, 0x3b, 0x61, 0x7a, 0x61, -0x2e, 0x3b, 0x61, 0x62, 0x65, 0x2e, 0x3b, 0x75, 0x72, 0x74, 0x61, 0x72, 0x72, 0x69, 0x6c, 0x61, 0x3b, 0x6f, 0x74, 0x73, -0x61, 0x69, 0x6c, 0x61, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x78, 0x6f, 0x61, 0x3b, 0x61, 0x70, 0x69, 0x72, 0x69, 0x6c, 0x61, -0x3b, 0x6d, 0x61, 0x69, 0x61, 0x74, 0x7a, 0x61, 0x3b, 0x65, 0x6b, 0x61, 0x69, 0x6e, 0x61, 0x3b, 0x75, 0x7a, 0x74, 0x61, -0x69, 0x6c, 0x61, 0x3b, 0x61, 0x62, 0x75, 0x7a, 0x74, 0x75, 0x61, 0x3b, 0x69, 0x72, 0x61, 0x69, 0x6c, 0x61, 0x3b, 0x75, -0x72, 0x72, 0x69, 0x61, 0x3b, 0x61, 0x7a, 0x61, 0x72, 0x6f, 0x61, 0x3b, 0x61, 0x62, 0x65, 0x6e, 0x64, 0x75, 0x61, 0x3b, -0x55, 0x3b, 0x4f, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x55, 0x3b, 0x41, 0x3b, 0x49, 0x3b, 0x55, 0x3b, -0x41, 0x3b, 0x41, 0x3b, 0x75, 0x72, 0x74, 0x61, 0x72, 0x72, 0x69, 0x6c, 0x61, 0x6b, 0x3b, 0x6f, 0x74, 0x73, 0x61, 0x69, -0x6c, 0x61, 0x6b, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x78, 0x6f, 0x61, 0x6b, 0x3b, 0x61, 0x70, 0x69, 0x72, 0x69, 0x6c, 0x61, -0x6b, 0x3b, 0x6d, 0x61, 0x69, 0x61, 0x74, 0x7a, 0x61, 0x6b, 0x3b, 0x65, 0x6b, 0x61, 0x69, 0x6e, 0x61, 0x6b, 0x3b, 0x75, -0x7a, 0x74, 0x61, 0x69, 0x6c, 0x61, 0x6b, 0x3b, 0x61, 0x62, 0x75, 0x7a, 0x74, 0x75, 0x61, 0x6b, 0x3b, 0x69, 0x72, 0x61, -0x69, 0x6c, 0x61, 0x6b, 0x3b, 0x75, 0x72, 0x72, 0x69, 0x61, 0x6b, 0x3b, 0x61, 0x7a, 0x61, 0x72, 0x6f, 0x61, 0x6b, 0x3b, -0x61, 0x62, 0x65, 0x6e, 0x64, 0x75, 0x61, 0x6b, 0x3b, 0x99c, 0x9be, 0x9a8, 0x9c1, 0x9af, 0x9bc, 0x9be, 0x9b0, 0x9c0, 0x3b, 0x9ab, -0x9c7, 0x9ac, 0x9cd, 0x9b0, 0x9c1, 0x9af, 0x9bc, 0x9be, 0x9b0, 0x9c0, 0x3b, 0x9ae, 0x9be, 0x9b0, 0x9cd, 0x99a, 0x3b, 0x98f, 0x9aa, 0x9cd, -0x9b0, 0x9bf, 0x9b2, 0x3b, 0x9ae, 0x9c7, 0x3b, 0x99c, 0x9c1, 0x9a8, 0x3b, 0x99c, 0x9c1, 0x9b2, 0x9be, 0x987, 0x3b, 0x986, 0x997, 0x9b8, -0x9cd, 0x99f, 0x3b, 0x9b8, 0x9c7, 0x9aa, 0x9cd, 0x99f, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, 0x985, 0x995, 0x9cd, 0x99f, 0x9cb, 0x9ac, -0x9b0, 0x3b, 0x9a8, 0x9ad, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, 0x9a1, 0x9bf, 0x9b8, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, 0x99c, -0x9be, 0x3b, 0x9ab, 0x9c7, 0x3b, 0x9ae, 0x9be, 0x3b, 0x98f, 0x3b, 0x9ae, 0x9c7, 0x3b, 0x99c, 0x9c1, 0x9a8, 0x3b, 0x99c, 0x9c1, 0x3b, -0x986, 0x3b, 0x9b8, 0x9c7, 0x3b, 0x985, 0x3b, 0x9a8, 0x3b, 0x9a1, 0x9bf, 0x3b, 0x99c, 0x9be, 0x9a8, 0x9c1, 0x3b, 0x9ab, 0x9c7, 0x9ac, -0x3b, 0x9ae, 0x9be, 0x9b0, 0x9cd, 0x99a, 0x3b, 0x98f, 0x9aa, 0x9cd, 0x9b0, 0x9bf, 0x9b2, 0x3b, 0x9ae, 0x9c7, 0x3b, 0x99c, 0x9c1, 0x9a8, -0x3b, 0x99c, 0x9c1, 0x9b2, 0x9be, 0x987, 0x3b, 0x986, 0x997, 0x9b8, 0x9cd, 0x99f, 0x3b, 0x9b8, 0x9c7, 0x9aa, 0x9cd, 0x99f, 0x9c7, 0x9ae, -0x9cd, 0x9ac, 0x9b0, 0x3b, 0x985, 0x995, 0x9cd, 0x99f, 0x9cb, 0x9ac, 0x9b0, 0x3b, 0x9a8, 0x9ad, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, -0x9a1, 0x9bf, 0x9b8, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf21, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf22, 0x3b, 0xf5f, -0xfb3, 0xf0b, 0xf23, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf24, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf25, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf26, 0x3b, 0xf5f, -0xfb3, 0xf0b, 0xf27, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf28, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf29, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf21, 0xf20, 0x3b, -0xf5f, 0xfb3, 0xf0b, 0xf21, 0xf21, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf21, 0xf22, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, -0xf51, 0xf44, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0xf0b, -0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf42, 0xf66, 0xf74, 0xf58, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, -0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf5e, 0xf72, 0xf0b, 0xf54, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf63, -0xf94, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf51, 0xfb2, 0xf74, 0xf42, 0xf0b, 0xf54, 0x3b, -0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf51, 0xf74, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, -0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf62, 0xf92, 0xfb1, 0xf51, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, -0xf0b, 0xf51, 0xf42, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, -0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf45, 0xf72, 0xf42, 0xf0b, -0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, -0xf54, 0xf0b, 0x3b, 0xf21, 0x3b, 0xf22, 0x3b, 0xf23, 0x3b, 0xf24, 0x3b, 0xf25, 0x3b, 0xf26, 0x3b, 0xf27, 0x3b, 0xf28, 0x3b, 0xf29, -0x3b, 0xf21, 0xf20, 0x3b, 0xf21, 0xf21, 0x3b, 0xf21, 0xf22, 0x3b, 0xf21, 0x3b, 0xf22, 0x3b, 0xf23, 0x3b, 0xf24, 0x3b, 0xf25, 0x3b, -0xf26, 0x3b, 0xf27, 0x3b, 0xf28, 0x3b, 0xf29, 0x3b, 0xf21, 0xf20, 0x3b, 0xf21, 0xf21, 0x3b, 0x31, 0x32, 0x3b, 0xf5f, 0xfb3, 0xf0b, -0xf51, 0xf44, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf42, -0xf66, 0xf74, 0xf58, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf5e, 0xf72, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, -0xf63, 0xf94, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf51, 0xfb2, 0xf74, 0xf42, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, -0xf51, 0xf74, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf62, 0xf92, 0xfb1, 0xf51, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, -0xfb3, 0xf0b, 0xf51, 0xf42, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, -0xfb3, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf45, 0xf72, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf45, 0xf74, -0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf21, 0x3b, 0xf22, 0x3b, 0xf23, 0x3b, 0x34, 0x3b, 0xf25, 0x3b, 0xf26, -0x3b, 0xf27, 0x3b, 0xf28, 0x3b, 0x39, 0x3b, 0xf21, 0xf20, 0x3b, 0xf21, 0xf21, 0x3b, 0xf21, 0xf22, 0x3b, 0x47, 0x65, 0x6e, 0x2e, -0x3b, 0x43, 0x2bc, 0x68, 0x77, 0x65, 0x2e, 0x3b, 0x4d, 0x65, 0x75, 0x72, 0x2e, 0x3b, 0x45, 0x62, 0x72, 0x2e, 0x3b, 0x4d, -0x61, 0x65, 0x3b, 0x4d, 0x65, 0x7a, 0x68, 0x2e, 0x3b, 0x47, 0x6f, 0x75, 0x65, 0x2e, 0x3b, 0x45, 0x6f, 0x73, 0x74, 0x3b, -0x47, 0x77, 0x65, 0x6e, 0x2e, 0x3b, 0x48, 0x65, 0x72, 0x65, 0x3b, 0x44, 0x75, 0x3b, 0x4b, 0x7a, 0x75, 0x2e, 0x3b, 0x47, -0x65, 0x6e, 0x76, 0x65, 0x72, 0x3b, 0x43, 0x2bc, 0x68, 0x77, 0x65, 0x76, 0x72, 0x65, 0x72, 0x3b, 0x4d, 0x65, 0x75, 0x72, -0x7a, 0x68, 0x3b, 0x45, 0x62, 0x72, 0x65, 0x6c, 0x3b, 0x4d, 0x61, 0x65, 0x3b, 0x4d, 0x65, 0x7a, 0x68, 0x65, 0x76, 0x65, -0x6e, 0x3b, 0x47, 0x6f, 0x75, 0x65, 0x72, 0x65, 0x3b, 0x45, 0x6f, 0x73, 0x74, 0x3b, 0x47, 0x77, 0x65, 0x6e, 0x67, 0x6f, -0x6c, 0x6f, 0x3b, 0x48, 0x65, 0x72, 0x65, 0x3b, 0x44, 0x75, 0x3b, 0x4b, 0x65, 0x72, 0x7a, 0x75, 0x3b, 0x30, 0x31, 0x3b, -0x30, 0x32, 0x3b, 0x30, 0x33, 0x3b, 0x30, 0x34, 0x3b, 0x30, 0x35, 0x3b, 0x30, 0x36, 0x3b, 0x30, 0x37, 0x3b, 0x30, 0x38, -0x3b, 0x30, 0x39, 0x3b, 0x31, 0x30, 0x3b, 0x31, 0x31, 0x3b, 0x31, 0x32, 0x3b, 0x44f, 0x43d, 0x443, 0x3b, 0x444, 0x435, 0x432, -0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x44e, 0x43d, 0x438, 0x3b, 0x44e, 0x43b, -0x438, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, 0x435, 0x43f, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x435, 0x3b, 0x434, 0x435, -0x43a, 0x3b, 0x44f, 0x43d, 0x443, 0x430, 0x440, 0x438, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x443, 0x430, 0x440, 0x438, 0x3b, 0x43c, 0x430, -0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x438, 0x43b, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x44e, 0x43d, 0x438, 0x3b, 0x44e, 0x43b, 0x438, -0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x435, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x43e, 0x43a, -0x442, 0x43e, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x43d, 0x43e, 0x435, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x434, 0x435, 0x43a, 0x435, 0x43c, -0x432, 0x440, 0x438, 0x3b, 0x44f, 0x3b, 0x444, 0x3b, 0x43c, 0x3b, 0x430, 0x3b, 0x43c, 0x3b, 0x44e, 0x3b, 0x44e, 0x3b, 0x430, 0x3b, -0x441, 0x3b, 0x43e, 0x3b, 0x43d, 0x3b, 0x434, 0x3b, 0x1007, 0x1014, 0x103a, 0x3b, 0x1016, 0x1031, 0x3b, 0x1019, 0x1010, 0x103a, 0x3b, 0x1027, -0x3b, 0x1019, 0x1031, 0x3b, 0x1007, 0x103d, 0x1014, 0x103a, 0x3b, 0x1007, 0x1030, 0x3b, 0x1029, 0x3b, 0x1005, 0x1000, 0x103a, 0x3b, 0x1021, 0x1031, -0x102c, 0x1000, 0x103a, 0x3b, 0x1014, 0x102d, 0x102f, 0x3b, 0x1012, 0x102e, 0x3b, 0x1007, 0x1014, 0x103a, 0x1014, 0x101d, 0x102b, 0x101b, 0x102e, 0x3b, -0x1016, 0x1031, 0x1016, 0x1031, 0x102c, 0x103a, 0x101d, 0x102b, 0x101b, 0x102e, 0x3b, 0x1019, 0x1010, 0x103a, 0x3b, 0x1027, 0x1015, 0x103c, 0x102e, 0x3b, -0x1019, 0x1031, 0x3b, 0x1007, 0x103d, 0x1014, 0x103a, 0x3b, 0x1007, 0x1030, 0x101c, 0x102d, 0x102f, 0x1004, 0x103a, 0x3b, 0x1029, 0x1002, 0x102f, 0x1010, -0x103a, 0x3b, 0x1005, 0x1000, 0x103a, 0x1010, 0x1004, 0x103a, 0x1018, 0x102c, 0x3b, 0x1021, 0x1031, 0x102c, 0x1000, 0x103a, 0x1010, 0x102d, 0x102f, 0x1018, -0x102c, 0x3b, 0x1014, 0x102d, 0x102f, 0x101d, 0x1004, 0x103a, 0x1018, 0x102c, 0x3b, 0x1012, 0x102e, 0x1007, 0x1004, 0x103a, 0x1018, 0x102c, 0x3b, 0x1007, -0x3b, 0x1016, 0x3b, 0x1019, 0x3b, 0x1027, 0x3b, 0x1019, 0x3b, 0x1007, 0x3b, 0x1007, 0x3b, 0x1029, 0x3b, 0x1005, 0x3b, 0x1021, 0x3b, 0x1014, -0x3b, 0x1012, 0x3b, 0x441, 0x442, 0x443, 0x3b, 0x43b, 0x44e, 0x442, 0x3b, 0x441, 0x430, 0x43a, 0x3b, 0x43a, 0x440, 0x430, 0x3b, 0x43c, -0x430, 0x439, 0x3b, 0x447, 0x44d, 0x440, 0x3b, 0x43b, 0x456, 0x43f, 0x3b, 0x436, 0x43d, 0x456, 0x3b, 0x432, 0x435, 0x440, 0x3b, 0x43a, -0x430, 0x441, 0x3b, 0x43b, 0x456, 0x441, 0x3b, 0x441, 0x43d, 0x435, 0x3b, 0x441, 0x442, 0x443, 0x434, 0x437, 0x435, 0x43d, 0x44c, 0x3b, -0x43b, 0x44e, 0x442, 0x44b, 0x3b, 0x441, 0x430, 0x43a, 0x430, 0x432, 0x456, 0x43a, 0x3b, 0x43a, 0x440, 0x430, 0x441, 0x430, 0x432, 0x456, -0x43a, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x447, 0x44d, 0x440, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x43b, 0x456, 0x43f, 0x435, 0x43d, 0x44c, -0x3b, 0x436, 0x43d, 0x456, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x432, 0x435, 0x440, 0x430, 0x441, 0x435, 0x43d, 0x44c, 0x3b, 0x43a, 0x430, -0x441, 0x442, 0x440, 0x44b, 0x447, 0x43d, 0x456, 0x43a, 0x3b, 0x43b, 0x456, 0x441, 0x442, 0x430, 0x43f, 0x430, 0x434, 0x3b, 0x441, 0x43d, -0x435, 0x436, 0x430, 0x43d, 0x44c, 0x3b, 0x441, 0x3b, 0x43b, 0x3b, 0x441, 0x3b, 0x43a, 0x3b, 0x43c, 0x3b, 0x447, 0x3b, 0x43b, 0x3b, -0x436, 0x3b, 0x432, 0x3b, 0x43a, 0x3b, 0x43b, 0x3b, 0x441, 0x3b, 0x441, 0x442, 0x443, 0x3b, 0x43b, 0x44e, 0x442, 0x3b, 0x441, 0x430, -0x43a, 0x3b, 0x43a, 0x440, 0x430, 0x3b, 0x43c, 0x430, 0x44f, 0x3b, 0x447, 0x44d, 0x440, 0x3b, 0x43b, 0x456, 0x43f, 0x3b, 0x436, 0x43d, -0x456, 0x3b, 0x432, 0x435, 0x440, 0x3b, 0x43a, 0x430, 0x441, 0x3b, 0x43b, 0x456, 0x441, 0x3b, 0x441, 0x43d, 0x435, 0x3b, 0x441, 0x442, -0x443, 0x434, 0x437, 0x435, 0x43d, 0x44f, 0x3b, 0x43b, 0x44e, 0x442, 0x430, 0x433, 0x430, 0x3b, 0x441, 0x430, 0x43a, 0x430, 0x432, 0x456, -0x43a, 0x430, 0x3b, 0x43a, 0x440, 0x430, 0x441, 0x430, 0x432, 0x456, 0x43a, 0x430, 0x3b, 0x43c, 0x430, 0x44f, 0x3b, 0x447, 0x44d, 0x440, -0x432, 0x435, 0x43d, 0x44f, 0x3b, 0x43b, 0x456, 0x43f, 0x435, 0x43d, 0x44f, 0x3b, 0x436, 0x43d, 0x456, 0x45e, 0x43d, 0x44f, 0x3b, 0x432, -0x435, 0x440, 0x430, 0x441, 0x43d, 0x44f, 0x3b, 0x43a, 0x430, 0x441, 0x442, 0x440, 0x44b, 0x447, 0x43d, 0x456, 0x43a, 0x430, 0x3b, 0x43b, -0x456, 0x441, 0x442, 0x430, 0x43f, 0x430, 0x434, 0x430, 0x3b, 0x441, 0x43d, 0x435, 0x436, 0x43d, 0x44f, 0x3b, 0x1798, 0x1780, 0x179a, 0x17b6, -0x3b, 0x1780, 0x17bb, 0x1798, 0x17d2, 0x1797, 0x17c8, 0x3b, 0x1798, 0x17b8, 0x1793, 0x17b6, 0x3b, 0x1798, 0x17c1, 0x179f, 0x17b6, 0x3b, 0x17a7, 0x179f, -0x1797, 0x17b6, 0x3b, 0x1798, 0x17b7, 0x1790, 0x17bb, 0x1793, 0x17b6, 0x3b, 0x1780, 0x1780, 0x17d2, 0x1780, 0x178a, 0x17b6, 0x3b, 0x179f, 0x17b8, 0x17a0, -0x17b6, 0x3b, 0x1780, 0x1789, 0x17d2, 0x1789, 0x17b6, 0x3b, 0x178f, 0x17bb, 0x179b, 0x17b6, 0x3b, 0x179c, 0x17b7, 0x1785, 0x17d2, 0x1786, 0x17b7, 0x1780, -0x17b6, 0x3b, 0x1792, 0x17d2, 0x1793, 0x17bc, 0x3b, 0x1798, 0x3b, 0x1780, 0x3b, 0x1798, 0x3b, 0x1798, 0x3b, 0x17a7, 0x3b, 0x1798, 0x3b, 0x1780, -0x3b, 0x179f, 0x3b, 0x1780, 0x3b, 0x178f, 0x3b, 0x179c, 0x3b, 0x1792, 0x3b, 0x67, 0x65, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x72, -0x2e, 0x3b, 0x6d, 0x61, 0x72, 0xe7, 0x3b, 0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x67, 0x3b, 0x6a, 0x75, 0x6e, -0x79, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, -0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x73, 0x2e, 0x3b, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x66, 0x65, 0x62, -0x72, 0x65, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0xe7, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x67, 0x3b, -0x6a, 0x75, 0x6e, 0x79, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6f, 0x6c, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x3b, 0x73, 0x65, -0x74, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, -0x62, 0x72, 0x65, 0x3b, 0x64, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x47, 0x4e, 0x3b, 0x46, 0x42, 0x3b, 0x4d, -0xc7, 0x3b, 0x41, 0x42, 0x3b, 0x4d, 0x47, 0x3b, 0x4a, 0x4e, 0x3b, 0x4a, 0x4c, 0x3b, 0x41, 0x47, 0x3b, 0x53, 0x54, 0x3b, -0x4f, 0x43, 0x3b, 0x4e, 0x56, 0x3b, 0x44, 0x53, 0x3b, 0x64, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x2e, 0x3b, 0x64, 0x65, 0x20, -0x66, 0x65, 0x62, 0x72, 0x2e, 0x3b, 0x64, 0x65, 0x20, 0x6d, 0x61, 0x72, 0xe7, 0x3b, 0x64, 0x2019, 0x61, 0x62, 0x72, 0x2e, -0x3b, 0x64, 0x65, 0x20, 0x6d, 0x61, 0x69, 0x67, 0x3b, 0x64, 0x65, 0x20, 0x6a, 0x75, 0x6e, 0x79, 0x3b, 0x64, 0x65, 0x20, -0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x64, 0x2019, 0x61, 0x67, 0x2e, 0x3b, 0x64, 0x65, 0x20, 0x73, 0x65, 0x74, 0x2e, 0x3b, 0x64, -0x2019, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x64, 0x65, 0x20, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x20, 0x64, 0x65, 0x73, -0x2e, 0x3b, 0x64, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x20, 0x66, 0x65, 0x62, 0x72, 0x65, 0x72, -0x3b, 0x64, 0x65, 0x20, 0x6d, 0x61, 0x72, 0xe7, 0x3b, 0x64, 0x2019, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x64, 0x65, 0x20, -0x6d, 0x61, 0x69, 0x67, 0x3b, 0x64, 0x65, 0x20, 0x6a, 0x75, 0x6e, 0x79, 0x3b, 0x64, 0x65, 0x20, 0x6a, 0x75, 0x6c, 0x69, -0x6f, 0x6c, 0x3b, 0x64, 0x2019, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x3b, 0x64, 0x65, 0x20, 0x73, 0x65, 0x74, 0x65, 0x6d, 0x62, -0x72, 0x65, 0x3b, 0x64, 0x2019, 0x6f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x65, 0x20, 0x6e, 0x6f, 0x76, 0x65, -0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x65, 0x20, 0x64, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x31, 0x6708, 0x3b, -0x32, 0x6708, 0x3b, 0x33, 0x6708, 0x3b, 0x34, 0x6708, 0x3b, 0x35, 0x6708, 0x3b, 0x36, 0x6708, 0x3b, 0x37, 0x6708, 0x3b, 0x38, 0x6708, -0x3b, 0x39, 0x6708, 0x3b, 0x31, 0x30, 0x6708, 0x3b, 0x31, 0x31, 0x6708, 0x3b, 0x31, 0x32, 0x6708, 0x3b, 0x4e00, 0x6708, 0x3b, 0x4e8c, -0x6708, 0x3b, 0x4e09, 0x6708, 0x3b, 0x56db, 0x6708, 0x3b, 0x4e94, 0x6708, 0x3b, 0x516d, 0x6708, 0x3b, 0x4e03, 0x6708, 0x3b, 0x516b, 0x6708, 0x3b, -0x4e5d, 0x6708, 0x3b, 0x5341, 0x6708, 0x3b, 0x5341, 0x4e00, 0x6708, 0x3b, 0x5341, 0x4e8c, 0x6708, 0x3b, 0x73, 0x69, 0x6a, 0x3b, 0x76, 0x65, -0x6c, 0x6a, 0x3b, 0x6f, 0x17e, 0x75, 0x3b, 0x74, 0x72, 0x61, 0x3b, 0x73, 0x76, 0x69, 0x3b, 0x6c, 0x69, 0x70, 0x3b, 0x73, -0x72, 0x70, 0x3b, 0x6b, 0x6f, 0x6c, 0x3b, 0x72, 0x75, 0x6a, 0x3b, 0x6c, 0x69, 0x73, 0x3b, 0x73, 0x74, 0x75, 0x3b, 0x70, -0x72, 0x6f, 0x3b, 0x73, 0x69, 0x6a, 0x65, 0x10d, 0x61, 0x6e, 0x6a, 0x3b, 0x76, 0x65, 0x6c, 0x6a, 0x61, 0x10d, 0x61, 0x3b, -0x6f, 0x17e, 0x75, 0x6a, 0x61, 0x6b, 0x3b, 0x74, 0x72, 0x61, 0x76, 0x61, 0x6e, 0x6a, 0x3b, 0x73, 0x76, 0x69, 0x62, 0x61, -0x6e, 0x6a, 0x3b, 0x6c, 0x69, 0x70, 0x61, 0x6e, 0x6a, 0x3b, 0x73, 0x72, 0x70, 0x61, 0x6e, 0x6a, 0x3b, 0x6b, 0x6f, 0x6c, -0x6f, 0x76, 0x6f, 0x7a, 0x3b, 0x72, 0x75, 0x6a, 0x61, 0x6e, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x3b, -0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x69, 0x3b, 0x70, 0x72, 0x6f, 0x73, 0x69, 0x6e, 0x61, 0x63, 0x3b, 0x31, 0x2e, 0x3b, -0x32, 0x2e, 0x3b, 0x33, 0x2e, 0x3b, 0x34, 0x2e, 0x3b, 0x35, 0x2e, 0x3b, 0x36, 0x2e, 0x3b, 0x37, 0x2e, 0x3b, 0x38, 0x2e, -0x3b, 0x39, 0x2e, 0x3b, 0x31, 0x30, 0x2e, 0x3b, 0x31, 0x31, 0x2e, 0x3b, 0x31, 0x32, 0x2e, 0x3b, 0x73, 0x69, 0x6a, 0x65, -0x10d, 0x6e, 0x6a, 0x61, 0x3b, 0x76, 0x65, 0x6c, 0x6a, 0x61, 0x10d, 0x65, 0x3b, 0x6f, 0x17e, 0x75, 0x6a, 0x6b, 0x61, 0x3b, -0x74, 0x72, 0x61, 0x76, 0x6e, 0x6a, 0x61, 0x3b, 0x73, 0x76, 0x69, 0x62, 0x6e, 0x6a, 0x61, 0x3b, 0x6c, 0x69, 0x70, 0x6e, -0x6a, 0x61, 0x3b, 0x73, 0x72, 0x70, 0x6e, 0x6a, 0x61, 0x3b, 0x6b, 0x6f, 0x6c, 0x6f, 0x76, 0x6f, 0x7a, 0x61, 0x3b, 0x72, -0x75, 0x6a, 0x6e, 0x61, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x61, 0x3b, 0x73, 0x74, 0x75, 0x64, 0x65, -0x6e, 0x6f, 0x67, 0x61, 0x3b, 0x70, 0x72, 0x6f, 0x73, 0x69, 0x6e, 0x63, 0x61, 0x3b, 0x6c, 0x65, 0x64, 0x3b, 0xfa, 0x6e, -0x6f, 0x3b, 0x62, 0x159, 0x65, 0x3b, 0x64, 0x75, 0x62, 0x3b, 0x6b, 0x76, 0x11b, 0x3b, 0x10d, 0x76, 0x6e, 0x3b, 0x10d, 0x76, -0x63, 0x3b, 0x73, 0x72, 0x70, 0x3b, 0x7a, 0xe1, 0x159, 0x3b, 0x159, 0xed, 0x6a, 0x3b, 0x6c, 0x69, 0x73, 0x3b, 0x70, 0x72, -0x6f, 0x3b, 0x6c, 0x65, 0x64, 0x65, 0x6e, 0x3b, 0xfa, 0x6e, 0x6f, 0x72, 0x3b, 0x62, 0x159, 0x65, 0x7a, 0x65, 0x6e, 0x3b, -0x64, 0x75, 0x62, 0x65, 0x6e, 0x3b, 0x6b, 0x76, 0x11b, 0x74, 0x65, 0x6e, 0x3b, 0x10d, 0x65, 0x72, 0x76, 0x65, 0x6e, 0x3b, -0x10d, 0x65, 0x72, 0x76, 0x65, 0x6e, 0x65, 0x63, 0x3b, 0x73, 0x72, 0x70, 0x65, 0x6e, 0x3b, 0x7a, 0xe1, 0x159, 0xed, 0x3b, -0x159, 0xed, 0x6a, 0x65, 0x6e, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x3b, 0x70, 0x72, 0x6f, 0x73, 0x69, -0x6e, 0x65, 0x63, 0x3b, 0x6c, 0x65, 0x64, 0x6e, 0x61, 0x3b, 0xfa, 0x6e, 0x6f, 0x72, 0x61, 0x3b, 0x62, 0x159, 0x65, 0x7a, -0x6e, 0x61, 0x3b, 0x64, 0x75, 0x62, 0x6e, 0x61, 0x3b, 0x6b, 0x76, 0x11b, 0x74, 0x6e, 0x61, 0x3b, 0x10d, 0x65, 0x72, 0x76, -0x6e, 0x61, 0x3b, 0x10d, 0x65, 0x72, 0x76, 0x65, 0x6e, 0x63, 0x65, 0x3b, 0x73, 0x72, 0x70, 0x6e, 0x61, 0x3b, 0x7a, 0xe1, -0x159, 0xed, 0x3b, 0x159, 0xed, 0x6a, 0x6e, 0x61, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x75, 0x3b, 0x70, -0x72, 0x6f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, -0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, -0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, -0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, -0x72, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, -0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, -0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, -0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, -0x3b, 0x6d, 0x72, 0x74, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x65, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, +0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x79, 0x3b, 0x64, 0x65, 0x6b, 0x3b, 0x79, 0x61, 0x6e, 0x76, 0x61, 0x72, 0x3b, 0x66, 0x65, +0x76, 0x72, 0x61, 0x6c, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x3b, +0x69, 0x79, 0x75, 0x6e, 0x3b, 0x69, 0x79, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x71, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x6e, +0x74, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x6e, 0x6f, 0x79, 0x61, 0x62, 0x72, +0x3b, 0x64, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, 0x458, 0x430, 0x43d, 0x3b, 0x444, 0x435, 0x432, 0x3b, 0x43c, 0x430, 0x440, 0x3b, +0x430, 0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x458, 0x43d, 0x3b, 0x438, 0x458, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x3b, +0x441, 0x435, 0x43d, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x458, 0x3b, 0x434, 0x435, 0x43a, 0x3b, 0x408, 0x430, 0x43d, 0x432, +0x430, 0x440, 0x3b, 0x424, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x3b, 0x41c, 0x430, 0x440, 0x442, 0x3b, 0x410, 0x43f, 0x440, 0x435, 0x43b, +0x3b, 0x41c, 0x430, 0x439, 0x3b, 0x418, 0x458, 0x443, 0x43d, 0x3b, 0x418, 0x458, 0x443, 0x43b, 0x3b, 0x410, 0x432, 0x433, 0x443, 0x441, +0x442, 0x3b, 0x421, 0x435, 0x43d, 0x442, 0x458, 0x430, 0x431, 0x440, 0x3b, 0x41e, 0x43a, 0x442, 0x458, 0x430, 0x431, 0x440, 0x3b, 0x41d, +0x43e, 0x458, 0x430, 0x431, 0x440, 0x3b, 0x414, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x3b, 0x458, 0x430, 0x43d, 0x432, 0x430, 0x440, 0x3b, +0x444, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x3b, 0x43c, 0x430, +0x439, 0x3b, 0x438, 0x458, 0x443, 0x43d, 0x3b, 0x438, 0x458, 0x443, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, +0x435, 0x43d, 0x442, 0x458, 0x430, 0x431, 0x440, 0x3b, 0x43e, 0x43a, 0x442, 0x458, 0x430, 0x431, 0x440, 0x3b, 0x43d, 0x43e, 0x458, 0x430, +0x431, 0x440, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x3b, 0x75, 0x72, 0x74, 0x2e, 0x3b, 0x6f, 0x74, 0x73, 0x2e, 0x3b, +0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x69, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x2e, 0x3b, 0x65, 0x6b, 0x61, 0x2e, 0x3b, +0x75, 0x7a, 0x74, 0x2e, 0x3b, 0x61, 0x62, 0x75, 0x2e, 0x3b, 0x69, 0x72, 0x61, 0x2e, 0x3b, 0x75, 0x72, 0x72, 0x2e, 0x3b, +0x61, 0x7a, 0x61, 0x2e, 0x3b, 0x61, 0x62, 0x65, 0x2e, 0x3b, 0x75, 0x72, 0x74, 0x61, 0x72, 0x72, 0x69, 0x6c, 0x61, 0x3b, +0x6f, 0x74, 0x73, 0x61, 0x69, 0x6c, 0x61, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x78, 0x6f, 0x61, 0x3b, 0x61, 0x70, 0x69, 0x72, +0x69, 0x6c, 0x61, 0x3b, 0x6d, 0x61, 0x69, 0x61, 0x74, 0x7a, 0x61, 0x3b, 0x65, 0x6b, 0x61, 0x69, 0x6e, 0x61, 0x3b, 0x75, +0x7a, 0x74, 0x61, 0x69, 0x6c, 0x61, 0x3b, 0x61, 0x62, 0x75, 0x7a, 0x74, 0x75, 0x61, 0x3b, 0x69, 0x72, 0x61, 0x69, 0x6c, +0x61, 0x3b, 0x75, 0x72, 0x72, 0x69, 0x61, 0x3b, 0x61, 0x7a, 0x61, 0x72, 0x6f, 0x61, 0x3b, 0x61, 0x62, 0x65, 0x6e, 0x64, +0x75, 0x61, 0x3b, 0x55, 0x3b, 0x4f, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x55, 0x3b, 0x41, 0x3b, 0x49, +0x3b, 0x55, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x75, 0x72, 0x74, 0x61, 0x72, 0x72, 0x69, 0x6c, 0x61, 0x6b, 0x3b, 0x6f, 0x74, +0x73, 0x61, 0x69, 0x6c, 0x61, 0x6b, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x78, 0x6f, 0x61, 0x6b, 0x3b, 0x61, 0x70, 0x69, 0x72, +0x69, 0x6c, 0x61, 0x6b, 0x3b, 0x6d, 0x61, 0x69, 0x61, 0x74, 0x7a, 0x61, 0x6b, 0x3b, 0x65, 0x6b, 0x61, 0x69, 0x6e, 0x61, +0x6b, 0x3b, 0x75, 0x7a, 0x74, 0x61, 0x69, 0x6c, 0x61, 0x6b, 0x3b, 0x61, 0x62, 0x75, 0x7a, 0x74, 0x75, 0x61, 0x6b, 0x3b, +0x69, 0x72, 0x61, 0x69, 0x6c, 0x61, 0x6b, 0x3b, 0x75, 0x72, 0x72, 0x69, 0x61, 0x6b, 0x3b, 0x61, 0x7a, 0x61, 0x72, 0x6f, +0x61, 0x6b, 0x3b, 0x61, 0x62, 0x65, 0x6e, 0x64, 0x75, 0x61, 0x6b, 0x3b, 0x99c, 0x9be, 0x9a8, 0x9c1, 0x9af, 0x9bc, 0x9be, 0x9b0, +0x9c0, 0x3b, 0x9ab, 0x9c7, 0x9ac, 0x9cd, 0x9b0, 0x9c1, 0x9af, 0x9bc, 0x9be, 0x9b0, 0x9c0, 0x3b, 0x9ae, 0x9be, 0x9b0, 0x9cd, 0x99a, 0x3b, +0x98f, 0x9aa, 0x9cd, 0x9b0, 0x9bf, 0x9b2, 0x3b, 0x9ae, 0x9c7, 0x3b, 0x99c, 0x9c1, 0x9a8, 0x3b, 0x99c, 0x9c1, 0x9b2, 0x9be, 0x987, 0x3b, +0x986, 0x997, 0x9b8, 0x9cd, 0x99f, 0x3b, 0x9b8, 0x9c7, 0x9aa, 0x9cd, 0x99f, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, 0x985, 0x995, 0x9cd, +0x99f, 0x9cb, 0x9ac, 0x9b0, 0x3b, 0x9a8, 0x9ad, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, 0x9a1, 0x9bf, 0x9b8, 0x9c7, 0x9ae, 0x9cd, 0x9ac, +0x9b0, 0x3b, 0x99c, 0x9be, 0x3b, 0x9ab, 0x9c7, 0x3b, 0x9ae, 0x9be, 0x3b, 0x98f, 0x3b, 0x9ae, 0x9c7, 0x3b, 0x99c, 0x9c1, 0x9a8, 0x3b, +0x99c, 0x9c1, 0x3b, 0x986, 0x3b, 0x9b8, 0x9c7, 0x3b, 0x985, 0x3b, 0x9a8, 0x3b, 0x9a1, 0x9bf, 0x3b, 0x99c, 0x9be, 0x9a8, 0x9c1, 0x3b, +0x9ab, 0x9c7, 0x9ac, 0x3b, 0x9ae, 0x9be, 0x9b0, 0x9cd, 0x99a, 0x3b, 0x98f, 0x9aa, 0x9cd, 0x9b0, 0x9bf, 0x9b2, 0x3b, 0x9ae, 0x9c7, 0x3b, +0x99c, 0x9c1, 0x9a8, 0x3b, 0x99c, 0x9c1, 0x9b2, 0x9be, 0x987, 0x3b, 0x986, 0x997, 0x9b8, 0x9cd, 0x99f, 0x3b, 0x9b8, 0x9c7, 0x9aa, 0x9cd, +0x99f, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, 0x985, 0x995, 0x9cd, 0x99f, 0x9cb, 0x9ac, 0x9b0, 0x3b, 0x9a8, 0x9ad, 0x9c7, 0x9ae, 0x9cd, +0x9ac, 0x9b0, 0x3b, 0x9a1, 0x9bf, 0x9b8, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf21, 0x3b, 0xf5f, 0xfb3, 0xf0b, +0xf22, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf23, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf24, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf25, 0x3b, 0xf5f, 0xfb3, 0xf0b, +0xf26, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf27, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf28, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf29, 0x3b, 0xf5f, 0xfb3, 0xf0b, +0xf21, 0xf20, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf21, 0xf21, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf21, 0xf22, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, +0xf5f, 0xfb3, 0xf0b, 0xf51, 0xf44, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, +0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf42, 0xf66, 0xf74, 0xf58, 0xf0b, 0xf54, 0xf0b, 0x3b, +0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf5e, 0xf72, 0xf0b, 0xf54, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, +0xfb3, 0xf0b, 0xf63, 0xf94, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf51, 0xfb2, 0xf74, 0xf42, +0xf0b, 0xf54, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf51, 0xf74, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, +0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf62, 0xf92, 0xfb1, 0xf51, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, +0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf51, 0xf42, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, +0xf45, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf45, +0xf72, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf66, 0xfa4, 0xfb1, 0xf72, 0xf0b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf49, +0xf72, 0xf66, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf21, 0x3b, 0xf22, 0x3b, 0xf23, 0x3b, 0xf24, 0x3b, 0xf25, 0x3b, 0xf26, 0x3b, 0xf27, 0x3b, +0xf28, 0x3b, 0xf29, 0x3b, 0xf21, 0xf20, 0x3b, 0xf21, 0xf21, 0x3b, 0xf21, 0xf22, 0x3b, 0xf21, 0x3b, 0xf22, 0x3b, 0xf23, 0x3b, 0xf24, +0x3b, 0xf25, 0x3b, 0xf26, 0x3b, 0xf27, 0x3b, 0xf28, 0x3b, 0xf29, 0x3b, 0xf21, 0xf20, 0x3b, 0xf21, 0xf21, 0x3b, 0x31, 0x32, 0x3b, +0xf5f, 0xfb3, 0xf0b, 0xf51, 0xf44, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, +0xfb3, 0xf0b, 0xf42, 0xf66, 0xf74, 0xf58, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf5e, 0xf72, 0xf0b, 0xf54, 0xf0b, 0x3b, +0xf5f, 0xfb3, 0xf0b, 0xf63, 0xf94, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf51, 0xfb2, 0xf74, 0xf42, 0xf0b, 0xf54, 0x3b, 0xf5f, +0xfb3, 0xf0b, 0xf56, 0xf51, 0xf74, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf62, 0xf92, 0xfb1, 0xf51, 0xf0b, 0xf54, +0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf51, 0xf42, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf54, +0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf45, 0xf72, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, +0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf21, 0x3b, 0xf22, 0x3b, 0xf23, 0x3b, 0x34, 0x3b, +0xf25, 0x3b, 0xf26, 0x3b, 0xf27, 0x3b, 0xf28, 0x3b, 0x39, 0x3b, 0xf21, 0xf20, 0x3b, 0xf21, 0xf21, 0x3b, 0xf21, 0xf22, 0x3b, 0x47, +0x65, 0x6e, 0x2e, 0x3b, 0x43, 0x2bc, 0x68, 0x77, 0x65, 0x2e, 0x3b, 0x4d, 0x65, 0x75, 0x72, 0x2e, 0x3b, 0x45, 0x62, 0x72, +0x2e, 0x3b, 0x4d, 0x61, 0x65, 0x3b, 0x4d, 0x65, 0x7a, 0x68, 0x2e, 0x3b, 0x47, 0x6f, 0x75, 0x65, 0x2e, 0x3b, 0x45, 0x6f, +0x73, 0x74, 0x3b, 0x47, 0x77, 0x65, 0x6e, 0x2e, 0x3b, 0x48, 0x65, 0x72, 0x65, 0x3b, 0x44, 0x75, 0x3b, 0x4b, 0x7a, 0x75, +0x2e, 0x3b, 0x47, 0x65, 0x6e, 0x76, 0x65, 0x72, 0x3b, 0x43, 0x2bc, 0x68, 0x77, 0x65, 0x76, 0x72, 0x65, 0x72, 0x3b, 0x4d, +0x65, 0x75, 0x72, 0x7a, 0x68, 0x3b, 0x45, 0x62, 0x72, 0x65, 0x6c, 0x3b, 0x4d, 0x61, 0x65, 0x3b, 0x4d, 0x65, 0x7a, 0x68, +0x65, 0x76, 0x65, 0x6e, 0x3b, 0x47, 0x6f, 0x75, 0x65, 0x72, 0x65, 0x3b, 0x45, 0x6f, 0x73, 0x74, 0x3b, 0x47, 0x77, 0x65, +0x6e, 0x67, 0x6f, 0x6c, 0x6f, 0x3b, 0x48, 0x65, 0x72, 0x65, 0x3b, 0x44, 0x75, 0x3b, 0x4b, 0x65, 0x72, 0x7a, 0x75, 0x3b, +0x30, 0x31, 0x3b, 0x30, 0x32, 0x3b, 0x30, 0x33, 0x3b, 0x30, 0x34, 0x3b, 0x30, 0x35, 0x3b, 0x30, 0x36, 0x3b, 0x30, 0x37, +0x3b, 0x30, 0x38, 0x3b, 0x30, 0x39, 0x3b, 0x31, 0x30, 0x3b, 0x31, 0x31, 0x3b, 0x31, 0x32, 0x3b, 0x44f, 0x43d, 0x443, 0x3b, +0x444, 0x435, 0x432, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x44e, 0x43d, 0x438, +0x3b, 0x44e, 0x43b, 0x438, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, 0x435, 0x43f, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x435, +0x3b, 0x434, 0x435, 0x43a, 0x3b, 0x44f, 0x43d, 0x443, 0x430, 0x440, 0x438, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x443, 0x430, 0x440, 0x438, +0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x438, 0x43b, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x44e, 0x43d, 0x438, 0x3b, +0x44e, 0x43b, 0x438, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x435, 0x43c, 0x432, 0x440, 0x438, +0x3b, 0x43e, 0x43a, 0x442, 0x43e, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x43d, 0x43e, 0x435, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x434, 0x435, +0x43a, 0x435, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x44f, 0x3b, 0x444, 0x3b, 0x43c, 0x3b, 0x430, 0x3b, 0x43c, 0x3b, 0x44e, 0x3b, 0x44e, +0x3b, 0x430, 0x3b, 0x441, 0x3b, 0x43e, 0x3b, 0x43d, 0x3b, 0x434, 0x3b, 0x1007, 0x1014, 0x103a, 0x3b, 0x1016, 0x1031, 0x3b, 0x1019, 0x1010, +0x103a, 0x3b, 0x1027, 0x3b, 0x1019, 0x1031, 0x3b, 0x1007, 0x103d, 0x1014, 0x103a, 0x3b, 0x1007, 0x1030, 0x3b, 0x1029, 0x3b, 0x1005, 0x1000, 0x103a, +0x3b, 0x1021, 0x1031, 0x102c, 0x1000, 0x103a, 0x3b, 0x1014, 0x102d, 0x102f, 0x3b, 0x1012, 0x102e, 0x3b, 0x1007, 0x1014, 0x103a, 0x1014, 0x101d, 0x102b, +0x101b, 0x102e, 0x3b, 0x1016, 0x1031, 0x1016, 0x1031, 0x102c, 0x103a, 0x101d, 0x102b, 0x101b, 0x102e, 0x3b, 0x1019, 0x1010, 0x103a, 0x3b, 0x1027, 0x1015, +0x103c, 0x102e, 0x3b, 0x1019, 0x1031, 0x3b, 0x1007, 0x103d, 0x1014, 0x103a, 0x3b, 0x1007, 0x1030, 0x101c, 0x102d, 0x102f, 0x1004, 0x103a, 0x3b, 0x1029, +0x1002, 0x102f, 0x1010, 0x103a, 0x3b, 0x1005, 0x1000, 0x103a, 0x1010, 0x1004, 0x103a, 0x1018, 0x102c, 0x3b, 0x1021, 0x1031, 0x102c, 0x1000, 0x103a, 0x1010, +0x102d, 0x102f, 0x1018, 0x102c, 0x3b, 0x1014, 0x102d, 0x102f, 0x101d, 0x1004, 0x103a, 0x1018, 0x102c, 0x3b, 0x1012, 0x102e, 0x1007, 0x1004, 0x103a, 0x1018, +0x102c, 0x3b, 0x1007, 0x3b, 0x1016, 0x3b, 0x1019, 0x3b, 0x1027, 0x3b, 0x1019, 0x3b, 0x1007, 0x3b, 0x1007, 0x3b, 0x1029, 0x3b, 0x1005, 0x3b, +0x1021, 0x3b, 0x1014, 0x3b, 0x1012, 0x3b, 0x441, 0x442, 0x443, 0x3b, 0x43b, 0x44e, 0x442, 0x3b, 0x441, 0x430, 0x43a, 0x3b, 0x43a, 0x440, +0x430, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x447, 0x44d, 0x440, 0x3b, 0x43b, 0x456, 0x43f, 0x3b, 0x436, 0x43d, 0x456, 0x3b, 0x432, 0x435, +0x440, 0x3b, 0x43a, 0x430, 0x441, 0x3b, 0x43b, 0x456, 0x441, 0x3b, 0x441, 0x43d, 0x435, 0x3b, 0x441, 0x442, 0x443, 0x434, 0x437, 0x435, +0x43d, 0x44c, 0x3b, 0x43b, 0x44e, 0x442, 0x44b, 0x3b, 0x441, 0x430, 0x43a, 0x430, 0x432, 0x456, 0x43a, 0x3b, 0x43a, 0x440, 0x430, 0x441, +0x430, 0x432, 0x456, 0x43a, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x447, 0x44d, 0x440, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x43b, 0x456, 0x43f, +0x435, 0x43d, 0x44c, 0x3b, 0x436, 0x43d, 0x456, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x432, 0x435, 0x440, 0x430, 0x441, 0x435, 0x43d, 0x44c, +0x3b, 0x43a, 0x430, 0x441, 0x442, 0x440, 0x44b, 0x447, 0x43d, 0x456, 0x43a, 0x3b, 0x43b, 0x456, 0x441, 0x442, 0x430, 0x43f, 0x430, 0x434, +0x3b, 0x441, 0x43d, 0x435, 0x436, 0x430, 0x43d, 0x44c, 0x3b, 0x441, 0x3b, 0x43b, 0x3b, 0x441, 0x3b, 0x43a, 0x3b, 0x43c, 0x3b, 0x447, +0x3b, 0x43b, 0x3b, 0x436, 0x3b, 0x432, 0x3b, 0x43a, 0x3b, 0x43b, 0x3b, 0x441, 0x3b, 0x441, 0x442, 0x443, 0x3b, 0x43b, 0x44e, 0x442, +0x3b, 0x441, 0x430, 0x43a, 0x3b, 0x43a, 0x440, 0x430, 0x3b, 0x43c, 0x430, 0x44f, 0x3b, 0x447, 0x44d, 0x440, 0x3b, 0x43b, 0x456, 0x43f, +0x3b, 0x436, 0x43d, 0x456, 0x3b, 0x432, 0x435, 0x440, 0x3b, 0x43a, 0x430, 0x441, 0x3b, 0x43b, 0x456, 0x441, 0x3b, 0x441, 0x43d, 0x435, +0x3b, 0x441, 0x442, 0x443, 0x434, 0x437, 0x435, 0x43d, 0x44f, 0x3b, 0x43b, 0x44e, 0x442, 0x430, 0x433, 0x430, 0x3b, 0x441, 0x430, 0x43a, +0x430, 0x432, 0x456, 0x43a, 0x430, 0x3b, 0x43a, 0x440, 0x430, 0x441, 0x430, 0x432, 0x456, 0x43a, 0x430, 0x3b, 0x43c, 0x430, 0x44f, 0x3b, +0x447, 0x44d, 0x440, 0x432, 0x435, 0x43d, 0x44f, 0x3b, 0x43b, 0x456, 0x43f, 0x435, 0x43d, 0x44f, 0x3b, 0x436, 0x43d, 0x456, 0x45e, 0x43d, +0x44f, 0x3b, 0x432, 0x435, 0x440, 0x430, 0x441, 0x43d, 0x44f, 0x3b, 0x43a, 0x430, 0x441, 0x442, 0x440, 0x44b, 0x447, 0x43d, 0x456, 0x43a, +0x430, 0x3b, 0x43b, 0x456, 0x441, 0x442, 0x430, 0x43f, 0x430, 0x434, 0x430, 0x3b, 0x441, 0x43d, 0x435, 0x436, 0x43d, 0x44f, 0x3b, 0x1798, +0x1780, 0x179a, 0x17b6, 0x3b, 0x1780, 0x17bb, 0x1798, 0x17d2, 0x1797, 0x17c8, 0x3b, 0x1798, 0x17b8, 0x1793, 0x17b6, 0x3b, 0x1798, 0x17c1, 0x179f, 0x17b6, +0x3b, 0x17a7, 0x179f, 0x1797, 0x17b6, 0x3b, 0x1798, 0x17b7, 0x1790, 0x17bb, 0x1793, 0x17b6, 0x3b, 0x1780, 0x1780, 0x17d2, 0x1780, 0x178a, 0x17b6, 0x3b, +0x179f, 0x17b8, 0x17a0, 0x17b6, 0x3b, 0x1780, 0x1789, 0x17d2, 0x1789, 0x17b6, 0x3b, 0x178f, 0x17bb, 0x179b, 0x17b6, 0x3b, 0x179c, 0x17b7, 0x1785, 0x17d2, +0x1786, 0x17b7, 0x1780, 0x17b6, 0x3b, 0x1792, 0x17d2, 0x1793, 0x17bc, 0x3b, 0x1798, 0x3b, 0x1780, 0x3b, 0x1798, 0x3b, 0x1798, 0x3b, 0x17a7, 0x3b, +0x1798, 0x3b, 0x1780, 0x3b, 0x179f, 0x3b, 0x1780, 0x3b, 0x178f, 0x3b, 0x179c, 0x3b, 0x1792, 0x3b, 0x67, 0x65, 0x6e, 0x2e, 0x3b, 0x66, +0x65, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0xe7, 0x3b, 0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x67, 0x3b, +0x6a, 0x75, 0x6e, 0x79, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x74, 0x2e, 0x3b, 0x6f, +0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x73, 0x2e, 0x3b, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x3b, +0x66, 0x65, 0x62, 0x72, 0x65, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0xe7, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, +0x69, 0x67, 0x3b, 0x6a, 0x75, 0x6e, 0x79, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6f, 0x6c, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, +0x3b, 0x73, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, +0x76, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x47, 0x4e, 0x3b, 0x46, +0x42, 0x3b, 0x4d, 0xc7, 0x3b, 0x41, 0x42, 0x3b, 0x4d, 0x47, 0x3b, 0x4a, 0x4e, 0x3b, 0x4a, 0x4c, 0x3b, 0x41, 0x47, 0x3b, +0x53, 0x54, 0x3b, 0x4f, 0x43, 0x3b, 0x4e, 0x56, 0x3b, 0x44, 0x53, 0x3b, 0x64, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x2e, 0x3b, +0x64, 0x65, 0x20, 0x66, 0x65, 0x62, 0x72, 0x2e, 0x3b, 0x64, 0x65, 0x20, 0x6d, 0x61, 0x72, 0xe7, 0x3b, 0x64, 0x2019, 0x61, +0x62, 0x72, 0x2e, 0x3b, 0x64, 0x65, 0x20, 0x6d, 0x61, 0x69, 0x67, 0x3b, 0x64, 0x65, 0x20, 0x6a, 0x75, 0x6e, 0x79, 0x3b, +0x64, 0x65, 0x20, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x64, 0x2019, 0x61, 0x67, 0x2e, 0x3b, 0x64, 0x65, 0x20, 0x73, 0x65, 0x74, +0x2e, 0x3b, 0x64, 0x2019, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x64, 0x65, 0x20, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x20, +0x64, 0x65, 0x73, 0x2e, 0x3b, 0x64, 0x65, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x20, 0x66, 0x65, 0x62, +0x72, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x20, 0x6d, 0x61, 0x72, 0xe7, 0x3b, 0x64, 0x2019, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, +0x64, 0x65, 0x20, 0x6d, 0x61, 0x69, 0x67, 0x3b, 0x64, 0x65, 0x20, 0x6a, 0x75, 0x6e, 0x79, 0x3b, 0x64, 0x65, 0x20, 0x6a, +0x75, 0x6c, 0x69, 0x6f, 0x6c, 0x3b, 0x64, 0x2019, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x3b, 0x64, 0x65, 0x20, 0x73, 0x65, 0x74, +0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x2019, 0x6f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x65, 0x20, 0x6e, +0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x65, 0x20, 0x64, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, +0x31, 0x6708, 0x3b, 0x32, 0x6708, 0x3b, 0x33, 0x6708, 0x3b, 0x34, 0x6708, 0x3b, 0x35, 0x6708, 0x3b, 0x36, 0x6708, 0x3b, 0x37, 0x6708, +0x3b, 0x38, 0x6708, 0x3b, 0x39, 0x6708, 0x3b, 0x31, 0x30, 0x6708, 0x3b, 0x31, 0x31, 0x6708, 0x3b, 0x31, 0x32, 0x6708, 0x3b, 0x4e00, +0x6708, 0x3b, 0x4e8c, 0x6708, 0x3b, 0x4e09, 0x6708, 0x3b, 0x56db, 0x6708, 0x3b, 0x4e94, 0x6708, 0x3b, 0x516d, 0x6708, 0x3b, 0x4e03, 0x6708, 0x3b, +0x516b, 0x6708, 0x3b, 0x4e5d, 0x6708, 0x3b, 0x5341, 0x6708, 0x3b, 0x5341, 0x4e00, 0x6708, 0x3b, 0x5341, 0x4e8c, 0x6708, 0x3b, 0x73, 0x69, 0x6a, +0x3b, 0x76, 0x65, 0x6c, 0x6a, 0x3b, 0x6f, 0x17e, 0x75, 0x3b, 0x74, 0x72, 0x61, 0x3b, 0x73, 0x76, 0x69, 0x3b, 0x6c, 0x69, +0x70, 0x3b, 0x73, 0x72, 0x70, 0x3b, 0x6b, 0x6f, 0x6c, 0x3b, 0x72, 0x75, 0x6a, 0x3b, 0x6c, 0x69, 0x73, 0x3b, 0x73, 0x74, +0x75, 0x3b, 0x70, 0x72, 0x6f, 0x3b, 0x73, 0x69, 0x6a, 0x65, 0x10d, 0x61, 0x6e, 0x6a, 0x3b, 0x76, 0x65, 0x6c, 0x6a, 0x61, +0x10d, 0x61, 0x3b, 0x6f, 0x17e, 0x75, 0x6a, 0x61, 0x6b, 0x3b, 0x74, 0x72, 0x61, 0x76, 0x61, 0x6e, 0x6a, 0x3b, 0x73, 0x76, +0x69, 0x62, 0x61, 0x6e, 0x6a, 0x3b, 0x6c, 0x69, 0x70, 0x61, 0x6e, 0x6a, 0x3b, 0x73, 0x72, 0x70, 0x61, 0x6e, 0x6a, 0x3b, +0x6b, 0x6f, 0x6c, 0x6f, 0x76, 0x6f, 0x7a, 0x3b, 0x72, 0x75, 0x6a, 0x61, 0x6e, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, +0x61, 0x64, 0x3b, 0x73, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x69, 0x3b, 0x70, 0x72, 0x6f, 0x73, 0x69, 0x6e, 0x61, 0x63, 0x3b, +0x31, 0x2e, 0x3b, 0x32, 0x2e, 0x3b, 0x33, 0x2e, 0x3b, 0x34, 0x2e, 0x3b, 0x35, 0x2e, 0x3b, 0x36, 0x2e, 0x3b, 0x37, 0x2e, +0x3b, 0x38, 0x2e, 0x3b, 0x39, 0x2e, 0x3b, 0x31, 0x30, 0x2e, 0x3b, 0x31, 0x31, 0x2e, 0x3b, 0x31, 0x32, 0x2e, 0x3b, 0x73, +0x69, 0x6a, 0x65, 0x10d, 0x6e, 0x6a, 0x61, 0x3b, 0x76, 0x65, 0x6c, 0x6a, 0x61, 0x10d, 0x65, 0x3b, 0x6f, 0x17e, 0x75, 0x6a, +0x6b, 0x61, 0x3b, 0x74, 0x72, 0x61, 0x76, 0x6e, 0x6a, 0x61, 0x3b, 0x73, 0x76, 0x69, 0x62, 0x6e, 0x6a, 0x61, 0x3b, 0x6c, +0x69, 0x70, 0x6e, 0x6a, 0x61, 0x3b, 0x73, 0x72, 0x70, 0x6e, 0x6a, 0x61, 0x3b, 0x6b, 0x6f, 0x6c, 0x6f, 0x76, 0x6f, 0x7a, +0x61, 0x3b, 0x72, 0x75, 0x6a, 0x6e, 0x61, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x61, 0x3b, 0x73, 0x74, +0x75, 0x64, 0x65, 0x6e, 0x6f, 0x67, 0x61, 0x3b, 0x70, 0x72, 0x6f, 0x73, 0x69, 0x6e, 0x63, 0x61, 0x3b, 0x6c, 0x65, 0x64, +0x3b, 0xfa, 0x6e, 0x6f, 0x3b, 0x62, 0x159, 0x65, 0x3b, 0x64, 0x75, 0x62, 0x3b, 0x6b, 0x76, 0x11b, 0x3b, 0x10d, 0x76, 0x6e, +0x3b, 0x10d, 0x76, 0x63, 0x3b, 0x73, 0x72, 0x70, 0x3b, 0x7a, 0xe1, 0x159, 0x3b, 0x159, 0xed, 0x6a, 0x3b, 0x6c, 0x69, 0x73, +0x3b, 0x70, 0x72, 0x6f, 0x3b, 0x6c, 0x65, 0x64, 0x65, 0x6e, 0x3b, 0xfa, 0x6e, 0x6f, 0x72, 0x3b, 0x62, 0x159, 0x65, 0x7a, +0x65, 0x6e, 0x3b, 0x64, 0x75, 0x62, 0x65, 0x6e, 0x3b, 0x6b, 0x76, 0x11b, 0x74, 0x65, 0x6e, 0x3b, 0x10d, 0x65, 0x72, 0x76, +0x65, 0x6e, 0x3b, 0x10d, 0x65, 0x72, 0x76, 0x65, 0x6e, 0x65, 0x63, 0x3b, 0x73, 0x72, 0x70, 0x65, 0x6e, 0x3b, 0x7a, 0xe1, +0x159, 0xed, 0x3b, 0x159, 0xed, 0x6a, 0x65, 0x6e, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x3b, 0x70, 0x72, +0x6f, 0x73, 0x69, 0x6e, 0x65, 0x63, 0x3b, 0x6c, 0x65, 0x64, 0x6e, 0x61, 0x3b, 0xfa, 0x6e, 0x6f, 0x72, 0x61, 0x3b, 0x62, +0x159, 0x65, 0x7a, 0x6e, 0x61, 0x3b, 0x64, 0x75, 0x62, 0x6e, 0x61, 0x3b, 0x6b, 0x76, 0x11b, 0x74, 0x6e, 0x61, 0x3b, 0x10d, +0x65, 0x72, 0x76, 0x6e, 0x61, 0x3b, 0x10d, 0x65, 0x72, 0x76, 0x65, 0x6e, 0x63, 0x65, 0x3b, 0x73, 0x72, 0x70, 0x6e, 0x61, +0x3b, 0x7a, 0xe1, 0x159, 0xed, 0x3b, 0x159, 0xed, 0x6a, 0x6e, 0x61, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, +0x75, 0x3b, 0x70, 0x72, 0x6f, 0x73, 0x69, 0x6e, 0x63, 0x65, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, +0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, -0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x66, 0x65, -0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x6d, 0x61, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, -0x65, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x75, -0x73, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, -0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x61, -0x6e, 0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, 0x4d, 0x61, 0x72, 0x2e, 0x3b, 0x41, 0x70, 0x72, 0x2e, 0x3b, 0x4d, 0x61, -0x79, 0x3b, 0x4a, 0x75, 0x6e, 0x2e, 0x3b, 0x4a, 0x75, 0x6c, 0x2e, 0x3b, 0x41, 0x75, 0x67, 0x2e, 0x3b, 0x53, 0x65, 0x70, -0x2e, 0x3b, 0x4f, 0x63, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, -0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, -0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x16d, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, -0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, -0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x6f, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x6f, 0x3b, 0x6d, 0x61, 0x6a, 0x6f, 0x3b, -0x6a, 0x75, 0x6e, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6f, 0x3b, 0x61, 0x16d, 0x67, 0x75, 0x73, 0x74, 0x6f, 0x3b, -0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x6f, 0x3b, 0x6e, 0x6f, -0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x6a, 0x61, 0x61, 0x6e, -0x3b, 0x76, 0x65, 0x65, 0x62, 0x72, 0x3b, 0x6d, 0xe4, 0x72, 0x74, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x69, -0x3b, 0x6a, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x3b, 0x73, 0x65, 0x70, -0x74, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x74, 0x73, 0x3b, 0x6a, 0x61, 0x61, 0x6e, 0x75, -0x61, 0x72, 0x3b, 0x76, 0x65, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0xe4, 0x72, 0x74, 0x73, 0x3b, 0x61, 0x70, -0x72, 0x69, 0x6c, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x75, 0x6c, 0x69, +0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, +0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x6a, +0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, +0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, +0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, +0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x72, 0x74, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x65, 0x69, 0x3b, 0x6a, 0x75, +0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, +0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, +0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x6d, 0x61, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x69, +0x6c, 0x3b, 0x6d, 0x65, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, +0x73, 0x74, 0x75, 0x73, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, +0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, +0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0x79, +0x3b, 0x4a, 0x75, 0x6e, 0x65, 0x3b, 0x4a, 0x75, 0x6c, 0x79, 0x3b, 0x41, 0x75, 0x67, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x3b, +0x4f, 0x63, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x63, 0x3b, 0x4a, 0x61, 0x6e, 0x2e, 0x3b, 0x46, 0x65, 0x62, +0x2e, 0x3b, 0x4d, 0x61, 0x72, 0x2e, 0x3b, 0x41, 0x70, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x4a, 0x75, 0x6e, 0x2e, +0x3b, 0x4a, 0x75, 0x6c, 0x2e, 0x3b, 0x41, 0x75, 0x67, 0x2e, 0x3b, 0x53, 0x65, 0x70, 0x2e, 0x3b, 0x4f, 0x63, 0x74, 0x2e, +0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x65, 0x63, 0x2e, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, +0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, +0x75, 0x67, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x3b, 0x4f, 0x63, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x63, 0x3b, +0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, +0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x16d, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, +0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x72, +0x75, 0x61, 0x72, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x6f, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x6f, 0x3b, 0x6d, 0x61, +0x6a, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6f, 0x3b, 0x61, 0x16d, 0x67, 0x75, 0x73, +0x74, 0x6f, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x6f, +0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x6a, +0x61, 0x61, 0x6e, 0x3b, 0x76, 0x65, 0x65, 0x62, 0x72, 0x3b, 0x6d, 0xe4, 0x72, 0x74, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x3b, +0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x3b, +0x73, 0x65, 0x70, 0x74, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x74, 0x73, 0x3b, 0x6a, 0x61, +0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x76, 0x65, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0xe4, 0x72, 0x74, 0x73, +0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, +0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, +0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, +0x65, 0x74, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x3b, 0x56, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, +0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, +0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, +0x3b, 0x61, 0x75, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x73, +0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x73, +0x3b, 0x61, 0x70, 0x72, 0xed, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, -0x74, 0x6f, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x74, 0x73, -0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x3b, 0x56, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, -0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, -0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x75, -0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x73, 0x3b, 0x6a, 0x61, -0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, -0x72, 0xed, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, -0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, -0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, -0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, -0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, -0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x73, 0x2e, 0x3b, -0x74, 0x61, 0x6d, 0x6d, 0x69, 0x3b, 0x68, 0x65, 0x6c, 0x6d, 0x69, 0x3b, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x73, 0x3b, 0x68, -0x75, 0x68, 0x74, 0x69, 0x3b, 0x74, 0x6f, 0x75, 0x6b, 0x6f, 0x3b, 0x6b, 0x65, 0x73, 0xe4, 0x3b, 0x68, 0x65, 0x69, 0x6e, -0xe4, 0x3b, 0x65, 0x6c, 0x6f, 0x3b, 0x73, 0x79, 0x79, 0x73, 0x3b, 0x6c, 0x6f, 0x6b, 0x61, 0x3b, 0x6d, 0x61, 0x72, 0x72, -0x61, 0x73, 0x3b, 0x6a, 0x6f, 0x75, 0x6c, 0x75, 0x3b, 0x74, 0x61, 0x6d, 0x6d, 0x69, 0x6b, 0x75, 0x75, 0x3b, 0x68, 0x65, -0x6c, 0x6d, 0x69, 0x6b, 0x75, 0x75, 0x3b, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x73, 0x6b, 0x75, 0x75, 0x3b, 0x68, 0x75, 0x68, -0x74, 0x69, 0x6b, 0x75, 0x75, 0x3b, 0x74, 0x6f, 0x75, 0x6b, 0x6f, 0x6b, 0x75, 0x75, 0x3b, 0x6b, 0x65, 0x73, 0xe4, 0x6b, -0x75, 0x75, 0x3b, 0x68, 0x65, 0x69, 0x6e, 0xe4, 0x6b, 0x75, 0x75, 0x3b, 0x65, 0x6c, 0x6f, 0x6b, 0x75, 0x75, 0x3b, 0x73, -0x79, 0x79, 0x73, 0x6b, 0x75, 0x75, 0x3b, 0x6c, 0x6f, 0x6b, 0x61, 0x6b, 0x75, 0x75, 0x3b, 0x6d, 0x61, 0x72, 0x72, 0x61, -0x73, 0x6b, 0x75, 0x75, 0x3b, 0x6a, 0x6f, 0x75, 0x6c, 0x75, 0x6b, 0x75, 0x75, 0x3b, 0x54, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, -0x48, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x48, 0x3b, 0x45, 0x3b, 0x53, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x74, 0x61, -0x6d, 0x6d, 0x69, 0x6b, 0x2e, 0x3b, 0x68, 0x65, 0x6c, 0x6d, 0x69, 0x6b, 0x2e, 0x3b, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x73, -0x6b, 0x2e, 0x3b, 0x68, 0x75, 0x68, 0x74, 0x69, 0x6b, 0x2e, 0x3b, 0x74, 0x6f, 0x75, 0x6b, 0x6f, 0x6b, 0x2e, 0x3b, 0x6b, -0x65, 0x73, 0xe4, 0x6b, 0x2e, 0x3b, 0x68, 0x65, 0x69, 0x6e, 0xe4, 0x6b, 0x2e, 0x3b, 0x65, 0x6c, 0x6f, 0x6b, 0x2e, 0x3b, -0x73, 0x79, 0x79, 0x73, 0x6b, 0x2e, 0x3b, 0x6c, 0x6f, 0x6b, 0x61, 0x6b, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x72, 0x61, 0x73, -0x6b, 0x2e, 0x3b, 0x6a, 0x6f, 0x75, 0x6c, 0x75, 0x6b, 0x2e, 0x3b, 0x74, 0x61, 0x6d, 0x6d, 0x69, 0x6b, 0x75, 0x75, 0x74, -0x61, 0x3b, 0x68, 0x65, 0x6c, 0x6d, 0x69, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x73, 0x6b, -0x75, 0x75, 0x74, 0x61, 0x3b, 0x68, 0x75, 0x68, 0x74, 0x69, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x74, 0x6f, 0x75, 0x6b, -0x6f, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x6b, 0x65, 0x73, 0xe4, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x68, 0x65, 0x69, -0x6e, 0xe4, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x65, 0x6c, 0x6f, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x73, 0x79, 0x79, -0x73, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x6c, 0x6f, 0x6b, 0x61, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x6d, 0x61, 0x72, -0x72, 0x61, 0x73, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x6a, 0x6f, 0x75, 0x6c, 0x75, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, -0x6a, 0x61, 0x6e, 0x76, 0x2e, 0x3b, 0x66, 0xe9, 0x76, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x76, 0x72, -0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x69, 0x6e, 0x3b, 0x6a, 0x75, 0x69, 0x6c, 0x2e, 0x3b, 0x61, 0x6f, 0xfb, -0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0xe9, -0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x76, 0x69, 0x65, 0x72, 0x3b, 0x66, 0xe9, 0x76, 0x72, 0x69, 0x65, 0x72, 0x3b, 0x6d, -0x61, 0x72, 0x73, 0x3b, 0x61, 0x76, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x69, 0x6e, 0x3b, 0x6a, -0x75, 0x69, 0x6c, 0x6c, 0x65, 0x74, 0x3b, 0x61, 0x6f, 0xfb, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, -0x65, 0x3b, 0x6f, 0x63, 0x74, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, -0xe9, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6a, 0x61, 0x6e, 0x76, 0x2e, 0x3b, 0x66, 0xe9, 0x76, 0x72, 0x2e, 0x3b, -0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x76, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x69, 0x6e, 0x3b, 0x6a, -0x75, 0x69, 0x6c, 0x6c, 0x2e, 0x3b, 0x61, 0x6f, 0xfb, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, -0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0xe9, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0xe9, 0x76, -0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x76, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x69, 0x2e, -0x3b, 0x6a, 0x75, 0x69, 0x6c, 0x2e, 0x3b, 0x61, 0x6f, 0xfb, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x63, -0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0xe9, 0x63, 0x2e, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, -0x3b, 0x4d, 0x72, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, -0x3b, 0x41, 0x75, 0x67, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x73, -0x3b, 0x4a, 0x61, 0x6e, 0x6e, 0x65, 0x77, 0x61, 0x72, 0x69, 0x73, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x65, 0x77, 0x61, 0x72, -0x69, 0x73, 0x3b, 0x4d, 0x61, 0x61, 0x72, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x61, 0x69, 0x65, -0x3b, 0x4a, 0x75, 0x6e, 0x79, 0x3b, 0x4a, 0x75, 0x6c, 0x79, 0x3b, 0x41, 0x75, 0x67, 0x75, 0x73, 0x74, 0x75, 0x73, 0x3b, -0x53, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, -0x76, 0x69, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x73, 0x69, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x46, 0x61, 0x6f, 0x69, -0x3b, 0x47, 0x65, 0x61, 0x72, 0x72, 0x3b, 0x4d, 0xe0, 0x72, 0x74, 0x3b, 0x47, 0x69, 0x62, 0x6c, 0x3b, 0x43, 0xe8, 0x69, -0x74, 0x3b, 0xd2, 0x67, 0x6d, 0x68, 0x3b, 0x49, 0x75, 0x63, 0x68, 0x3b, 0x4c, 0xf9, 0x6e, 0x61, 0x3b, 0x53, 0x75, 0x6c, -0x74, 0x3b, 0x44, 0xe0, 0x6d, 0x68, 0x3b, 0x53, 0x61, 0x6d, 0x68, 0x3b, 0x44, 0xf9, 0x62, 0x68, 0x3b, 0x41, 0x6d, 0x20, -0x46, 0x61, 0x6f, 0x69, 0x6c, 0x6c, 0x65, 0x61, 0x63, 0x68, 0x3b, 0x41, 0x6e, 0x20, 0x47, 0x65, 0x61, 0x72, 0x72, 0x61, -0x6e, 0x3b, 0x41, 0x6d, 0x20, 0x4d, 0xe0, 0x72, 0x74, 0x3b, 0x41, 0x6e, 0x20, 0x47, 0x69, 0x62, 0x6c, 0x65, 0x61, 0x6e, -0x3b, 0x41, 0x6e, 0x20, 0x43, 0xe8, 0x69, 0x74, 0x65, 0x61, 0x6e, 0x3b, 0x41, 0x6e, 0x20, 0x74, 0x2d, 0xd2, 0x67, 0x6d, -0x68, 0x69, 0x6f, 0x73, 0x3b, 0x41, 0x6e, 0x20, 0x74, 0x2d, 0x49, 0x75, 0x63, 0x68, 0x61, 0x72, 0x3b, 0x41, 0x6e, 0x20, -0x4c, 0xf9, 0x6e, 0x61, 0x73, 0x74, 0x61, 0x6c, 0x3b, 0x41, 0x6e, 0x20, 0x74, 0x2d, 0x53, 0x75, 0x6c, 0x74, 0x61, 0x69, -0x6e, 0x3b, 0x41, 0x6e, 0x20, 0x44, 0xe0, 0x6d, 0x68, 0x61, 0x69, 0x72, 0x3b, 0x41, 0x6e, 0x20, 0x74, 0x2d, 0x53, 0x61, -0x6d, 0x68, 0x61, 0x69, 0x6e, 0x3b, 0x41, 0x6e, 0x20, 0x44, 0xf9, 0x62, 0x68, 0x6c, 0x61, 0x63, 0x68, 0x64, 0x3b, 0x46, -0x3b, 0x47, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x43, 0x3b, 0xd2, 0x3b, 0x49, 0x3b, 0x4c, 0x3b, 0x53, 0x3b, 0x44, 0x3b, 0x53, -0x3b, 0x44, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x46, 0x68, 0x61, 0x6f, 0x69, 0x6c, 0x6c, 0x65, 0x61, 0x63, 0x68, 0x3b, -0x64, 0x68, 0x65, 0x6e, 0x20, 0x47, 0x68, 0x65, 0x61, 0x72, 0x72, 0x61, 0x6e, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x4d, -0x68, 0xe0, 0x72, 0x74, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x47, 0x68, 0x69, 0x62, 0x6c, 0x65, 0x61, 0x6e, 0x3b, 0x64, -0x68, 0x65, 0x6e, 0x20, 0x43, 0x68, 0xe8, 0x69, 0x74, 0x65, 0x61, 0x6e, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0xd2, 0x67, -0x6d, 0x68, 0x69, 0x6f, 0x73, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x49, 0x75, 0x63, 0x68, 0x61, 0x72, 0x3b, 0x64, 0x68, -0x65, 0x6e, 0x20, 0x4c, 0xf9, 0x6e, 0x61, 0x73, 0x74, 0x61, 0x6c, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x2d, 0x53, -0x75, 0x6c, 0x74, 0x61, 0x69, 0x6e, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x44, 0xe0, 0x6d, 0x68, 0x61, 0x69, 0x72, 0x3b, -0x64, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x2d, 0x53, 0x61, 0x6d, 0x68, 0x61, 0x69, 0x6e, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, -0x44, 0xf9, 0x62, 0x68, 0x6c, 0x61, 0x63, 0x68, 0x64, 0x3b, 0x58, 0x61, 0x6e, 0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, -0x4d, 0x61, 0x72, 0x2e, 0x3b, 0x41, 0x62, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x69, 0x6f, 0x3b, 0x58, 0x75, 0xf1, 0x6f, 0x3b, -0x58, 0x75, 0x6c, 0x2e, 0x3b, 0x41, 0x67, 0x6f, 0x2e, 0x3b, 0x53, 0x65, 0x74, 0x2e, 0x3b, 0x4f, 0x75, 0x74, 0x2e, 0x3b, -0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x65, 0x63, 0x2e, 0x3b, 0x58, 0x61, 0x6e, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x46, 0x65, -0x62, 0x72, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x4d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x4d, -0x61, 0x69, 0x6f, 0x3b, 0x58, 0x75, 0xf1, 0x6f, 0x3b, 0x58, 0x75, 0x6c, 0x6c, 0x6f, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, -0x6f, 0x3b, 0x53, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x4f, 0x75, 0x74, 0x75, 0x62, 0x72, 0x6f, 0x3b, 0x4e, -0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x44, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x58, 0x3b, 0x46, -0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x58, 0x3b, 0x58, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, -0x3b, 0x78, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x62, 0x72, 0x2e, -0x3b, 0x6d, 0x61, 0x69, 0x6f, 0x3b, 0x78, 0x75, 0xf1, 0x6f, 0x3b, 0x78, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x6f, 0x2e, -0x3b, 0x73, 0x65, 0x74, 0x2e, 0x3b, 0x6f, 0x75, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, -0x3b, 0x78, 0x61, 0x6e, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x6d, 0x61, -0x72, 0x7a, 0x6f, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x6f, 0x3b, 0x78, 0x75, 0xf1, 0x6f, 0x3b, -0x78, 0x75, 0x6c, 0x6c, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x72, -0x6f, 0x3b, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x72, 0x6f, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x64, -0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x78, 0x2e, 0x3b, 0x66, 0x2e, 0x3b, 0x6d, 0x2e, 0x3b, 0x61, 0x2e, 0x3b, -0x6d, 0x2e, 0x3b, 0x78, 0x2e, 0x3b, 0x78, 0x2e, 0x3b, 0x61, 0x2e, 0x3b, 0x73, 0x2e, 0x3b, 0x6f, 0x2e, 0x3b, 0x6e, 0x2e, -0x3b, 0x64, 0x2e, 0x3b, 0x10d8, 0x10d0, 0x10dc, 0x3b, 0x10d7, 0x10d4, 0x10d1, 0x3b, 0x10db, 0x10d0, 0x10e0, 0x3b, 0x10d0, 0x10de, 0x10e0, 0x3b, -0x10db, 0x10d0, 0x10d8, 0x3b, 0x10d8, 0x10d5, 0x10dc, 0x3b, 0x10d8, 0x10d5, 0x10da, 0x3b, 0x10d0, 0x10d2, 0x10d5, 0x3b, 0x10e1, 0x10d4, 0x10e5, 0x3b, -0x10dd, 0x10e5, 0x10e2, 0x3b, 0x10dc, 0x10dd, 0x10d4, 0x3b, 0x10d3, 0x10d4, 0x10d9, 0x3b, 0x10d8, 0x10d0, 0x10dc, 0x10d5, 0x10d0, 0x10e0, 0x10d8, 0x3b, -0x10d7, 0x10d4, 0x10d1, 0x10d4, 0x10e0, 0x10d5, 0x10d0, 0x10da, 0x10d8, 0x3b, 0x10db, 0x10d0, 0x10e0, 0x10e2, 0x10d8, 0x3b, 0x10d0, 0x10de, 0x10e0, 0x10d8, -0x10da, 0x10d8, 0x3b, 0x10db, 0x10d0, 0x10d8, 0x10e1, 0x10d8, 0x3b, 0x10d8, 0x10d5, 0x10dc, 0x10d8, 0x10e1, 0x10d8, 0x3b, 0x10d8, 0x10d5, 0x10da, 0x10d8, -0x10e1, 0x10d8, 0x3b, 0x10d0, 0x10d2, 0x10d5, 0x10d8, 0x10e1, 0x10e2, 0x10dd, 0x3b, 0x10e1, 0x10d4, 0x10e5, 0x10e2, 0x10d4, 0x10db, 0x10d1, 0x10d4, 0x10e0, -0x10d8, 0x3b, 0x10dd, 0x10e5, 0x10e2, 0x10dd, 0x10db, 0x10d1, 0x10d4, 0x10e0, 0x10d8, 0x3b, 0x10dc, 0x10dd, 0x10d4, 0x10db, 0x10d1, 0x10d4, 0x10e0, 0x10d8, -0x3b, 0x10d3, 0x10d4, 0x10d9, 0x10d4, 0x10db, 0x10d1, 0x10d4, 0x10e0, 0x10d8, 0x3b, 0x10d8, 0x3b, 0x10d7, 0x3b, 0x10db, 0x3b, 0x10d0, 0x3b, 0x10db, -0x3b, 0x10d8, 0x3b, 0x10d8, 0x3b, 0x10d0, 0x3b, 0x10e1, 0x3b, 0x10dd, 0x3b, 0x10dc, 0x3b, 0x10d3, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, -0x65, 0x62, 0x3b, 0x4d, 0xe4, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, -0x75, 0x6c, 0x3b, 0x41, 0x75, 0x67, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, -0x65, 0x7a, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x4d, 0xe4, -0x72, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, -0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, -0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x7a, -0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x61, 0x6e, 0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, 0x4d, 0xe4, 0x72, 0x7a, -0x3b, 0x41, 0x70, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, -0x41, 0x75, 0x67, 0x2e, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x4f, 0x6b, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, -0x3b, 0x44, 0x65, 0x7a, 0x2e, 0x3b, 0x4a, 0xe4, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0xe4, 0x72, 0x3b, 0x41, 0x70, -0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x75, 0x67, 0x3b, 0x53, 0x65, -0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x7a, 0x3b, 0x4a, 0xe4, 0x6e, 0x6e, 0x65, 0x72, -0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x4d, 0xe4, 0x72, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, -0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x75, 0x73, 0x74, -0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, -0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x7a, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0xe4, 0x6e, -0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, 0x4d, 0xe4, 0x72, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x69, -0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x2e, 0x3b, 0x53, 0x65, 0x70, 0x2e, -0x3b, 0x4f, 0x6b, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x65, 0x7a, 0x2e, 0x3b, 0x399, 0x3b1, 0x3bd, 0x3b, -0x3a6, 0x3b5, 0x3b2, 0x3b, 0x39c, 0x3ac, 0x3c1, 0x3b, 0x391, 0x3c0, 0x3c1, 0x3b, 0x39c, 0x3ac, 0x3b9, 0x3b, 0x399, 0x3bf, 0x3cd, 0x3bd, -0x3b, 0x399, 0x3bf, 0x3cd, 0x3bb, 0x3b, 0x391, 0x3cd, 0x3b3, 0x3b, 0x3a3, 0x3b5, 0x3c0, 0x3b, 0x39f, 0x3ba, 0x3c4, 0x3b, 0x39d, 0x3bf, -0x3ad, 0x3b, 0x394, 0x3b5, 0x3ba, 0x3b, 0x399, 0x3b1, 0x3bd, 0x3bf, 0x3c5, 0x3ac, 0x3c1, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x3a6, 0x3b5, 0x3b2, -0x3c1, 0x3bf, 0x3c5, 0x3ac, 0x3c1, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x39c, 0x3ac, 0x3c1, 0x3c4, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x391, 0x3c0, 0x3c1, -0x3af, 0x3bb, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x39c, 0x3ac, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x399, 0x3bf, 0x3cd, 0x3bd, 0x3b9, 0x3bf, 0x3c2, 0x3b, -0x399, 0x3bf, 0x3cd, 0x3bb, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x391, 0x3cd, 0x3b3, 0x3bf, 0x3c5, 0x3c3, 0x3c4, 0x3bf, 0x3c2, 0x3b, 0x3a3, 0x3b5, -0x3c0, 0x3c4, 0x3ad, 0x3bc, 0x3b2, 0x3c1, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x39f, 0x3ba, 0x3c4, 0x3ce, 0x3b2, 0x3c1, 0x3b9, 0x3bf, 0x3c2, 0x3b, -0x39d, 0x3bf, 0x3ad, 0x3bc, 0x3b2, 0x3c1, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x394, 0x3b5, 0x3ba, 0x3ad, 0x3bc, 0x3b2, 0x3c1, 0x3b9, 0x3bf, 0x3c2, -0x3b, 0x399, 0x3b, 0x3a6, 0x3b, 0x39c, 0x3b, 0x391, 0x3b, 0x39c, 0x3b, 0x399, 0x3b, 0x399, 0x3b, 0x391, 0x3b, 0x3a3, 0x3b, 0x39f, -0x3b, 0x39d, 0x3b, 0x394, 0x3b, 0x399, 0x3b1, 0x3bd, 0x3b, 0x3a6, 0x3b5, 0x3b2, 0x3b, 0x39c, 0x3b1, 0x3c1, 0x3b, 0x391, 0x3c0, 0x3c1, -0x3b, 0x39c, 0x3b1, 0x390, 0x3b, 0x399, 0x3bf, 0x3c5, 0x3bd, 0x3b, 0x399, 0x3bf, 0x3c5, 0x3bb, 0x3b, 0x391, 0x3c5, 0x3b3, 0x3b, 0x3a3, -0x3b5, 0x3c0, 0x3b, 0x39f, 0x3ba, 0x3c4, 0x3b, 0x39d, 0x3bf, 0x3b5, 0x3b, 0x394, 0x3b5, 0x3ba, 0x3b, 0x399, 0x3b1, 0x3bd, 0x3bf, 0x3c5, -0x3b1, 0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x3a6, 0x3b5, 0x3b2, 0x3c1, 0x3bf, 0x3c5, 0x3b1, 0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x39c, 0x3b1, -0x3c1, 0x3c4, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x391, 0x3c0, 0x3c1, 0x3b9, 0x3bb, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x39c, 0x3b1, 0x390, 0x3bf, 0x3c5, -0x3b, 0x399, 0x3bf, 0x3c5, 0x3bd, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x399, 0x3bf, 0x3c5, 0x3bb, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x391, 0x3c5, 0x3b3, -0x3bf, 0x3cd, 0x3c3, 0x3c4, 0x3bf, 0x3c5, 0x3b, 0x3a3, 0x3b5, 0x3c0, 0x3c4, 0x3b5, 0x3bc, 0x3b2, 0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x39f, -0x3ba, 0x3c4, 0x3c9, 0x3b2, 0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x39d, 0x3bf, 0x3b5, 0x3bc, 0x3b2, 0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x394, -0x3b5, 0x3ba, 0x3b5, 0x3bc, 0x3b2, 0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x3b, 0x6d, -0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, -0x75, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, -0x6a, 0x61, 0x6e, 0x75, 0x61, 0x61, 0x72, 0x69, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x61, 0x72, 0x69, 0x3b, 0x6d, -0x61, 0x72, 0x73, 0x69, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x69, 0x6c, 0x69, 0x3b, 0x6d, 0x61, 0x61, 0x6a, 0x69, 0x3b, 0x6a, -0x75, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x67, 0x67, 0x75, 0x73, 0x74, 0x69, 0x3b, 0x73, -0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x69, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x72, 0x69, 0x3b, 0x6e, -0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x69, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x69, 0x3b, 0x6a, -0x61, 0x6e, 0x75, 0x61, 0x61, 0x72, 0x69, 0x70, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x61, 0x72, 0x69, 0x70, 0x3b, -0x6d, 0x61, 0x72, 0x73, 0x69, 0x70, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x69, 0x6c, 0x69, 0x70, 0x3b, 0x6d, 0x61, 0x61, 0x6a, -0x69, 0x70, 0x3b, 0x6a, 0x75, 0x75, 0x6e, 0x69, 0x70, 0x3b, 0x6a, 0x75, 0x75, 0x6c, 0x69, 0x70, 0x3b, 0x61, 0x67, 0x67, -0x75, 0x73, 0x74, 0x69, 0x70, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x69, 0x70, 0x3b, 0x6f, 0x6b, -0x74, 0x6f, 0x62, 0x61, 0x72, 0x69, 0x70, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x69, 0x70, 0x3b, 0x64, -0x65, 0x63, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x69, 0x70, 0x3b, 0xa9c, 0xabe, 0xaa8, 0xacd, 0xaaf, 0xac1, 0x3b, 0xaab, 0xac7, 0xaac, -0xacd, 0xab0, 0xac1, 0x3b, 0xaae, 0xabe, 0xab0, 0xacd, 0xa9a, 0x3b, 0xa8f, 0xaaa, 0xacd, 0xab0, 0xabf, 0xab2, 0x3b, 0xaae, 0xac7, 0x3b, -0xa9c, 0xac2, 0xaa8, 0x3b, 0xa9c, 0xac1, 0xab2, 0xabe, 0xa88, 0x3b, 0xa91, 0xa97, 0xab8, 0xacd, 0xa9f, 0x3b, 0xab8, 0xaaa, 0xacd, 0xa9f, -0xac7, 0x3b, 0xa91, 0xa95, 0xacd, 0xa9f, 0xacb, 0x3b, 0xaa8, 0xab5, 0xac7, 0x3b, 0xaa1, 0xabf, 0xab8, 0xac7, 0x3b, 0xa9c, 0xabe, 0xaa8, -0xacd, 0xaaf, 0xac1, 0xa86, 0xab0, 0xac0, 0x3b, 0xaab, 0xac7, 0xaac, 0xacd, 0xab0, 0xac1, 0xa86, 0xab0, 0xac0, 0x3b, 0xaae, 0xabe, 0xab0, -0xacd, 0xa9a, 0x3b, 0xa8f, 0xaaa, 0xacd, 0xab0, 0xabf, 0xab2, 0x3b, 0xaae, 0xac7, 0x3b, 0xa9c, 0xac2, 0xaa8, 0x3b, 0xa9c, 0xac1, 0xab2, -0xabe, 0xa88, 0x3b, 0xa91, 0xa97, 0xab8, 0xacd, 0xa9f, 0x3b, 0xab8, 0xaaa, 0xacd, 0xa9f, 0xac7, 0xaae, 0xacd, 0xaac, 0xab0, 0x3b, 0xa91, -0xa95, 0xacd, 0xa9f, 0xacb, 0xaac, 0xab0, 0x3b, 0xaa8, 0xab5, 0xac7, 0xaae, 0xacd, 0xaac, 0xab0, 0x3b, 0xaa1, 0xabf, 0xab8, 0xac7, 0xaae, -0xacd, 0xaac, 0xab0, 0x3b, 0xa9c, 0xabe, 0x3b, 0xaab, 0xac7, 0x3b, 0xaae, 0xabe, 0x3b, 0xa8f, 0x3b, 0xaae, 0xac7, 0x3b, 0xa9c, 0xac2, -0x3b, 0xa9c, 0xac1, 0x3b, 0xa91, 0x3b, 0xab8, 0x3b, 0xa91, 0x3b, 0xaa8, 0x3b, 0xaa1, 0xabf, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, -0x61, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x66, 0x69, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x59, 0x75, 0x6e, 0x3b, 0x59, -0x75, 0x6c, 0x3b, 0x41, 0x67, 0x75, 0x3b, 0x53, 0x61, 0x74, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x75, 0x77, 0x3b, 0x44, -0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x61, 0x69, 0x72, 0x75, 0x3b, 0x46, 0x61, 0x62, 0x75, 0x72, 0x61, 0x69, 0x72, 0x75, -0x3b, 0x4d, 0x61, 0x72, 0x69, 0x73, 0x3b, 0x41, 0x66, 0x69, 0x72, 0x69, 0x6c, 0x75, 0x3b, 0x4d, 0x61, 0x79, 0x75, 0x3b, -0x59, 0x75, 0x6e, 0x69, 0x3b, 0x59, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x67, 0x75, 0x73, 0x74, 0x61, 0x3b, 0x53, 0x61, 0x74, -0x75, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x75, 0x77, 0x61, 0x6d, 0x62, 0x61, 0x3b, -0x44, 0x69, 0x73, 0x61, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x59, 0x3b, -0x59, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x5d9, 0x5e0, 0x5d5, 0x5f3, 0x3b, 0x5e4, 0x5d1, 0x5e8, -0x5f3, 0x3b, 0x5de, 0x5e8, 0x5e5, 0x3b, 0x5d0, 0x5e4, 0x5e8, 0x5f3, 0x3b, 0x5de, 0x5d0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5e0, 0x5d9, 0x3b, -0x5d9, 0x5d5, 0x5dc, 0x5d9, 0x3b, 0x5d0, 0x5d5, 0x5d2, 0x5f3, 0x3b, 0x5e1, 0x5e4, 0x5d8, 0x5f3, 0x3b, 0x5d0, 0x5d5, 0x5e7, 0x5f3, 0x3b, -0x5e0, 0x5d5, 0x5d1, 0x5f3, 0x3b, 0x5d3, 0x5e6, 0x5de, 0x5f3, 0x3b, 0x5d9, 0x5e0, 0x5d5, 0x5d0, 0x5e8, 0x3b, 0x5e4, 0x5d1, 0x5e8, 0x5d5, -0x5d0, 0x5e8, 0x3b, 0x5de, 0x5e8, 0x5e5, 0x3b, 0x5d0, 0x5e4, 0x5e8, 0x5d9, 0x5dc, 0x3b, 0x5de, 0x5d0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5e0, -0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dc, 0x5d9, 0x3b, 0x5d0, 0x5d5, 0x5d2, 0x5d5, 0x5e1, 0x5d8, 0x3b, 0x5e1, 0x5e4, 0x5d8, 0x5de, 0x5d1, 0x5e8, -0x3b, 0x5d0, 0x5d5, 0x5e7, 0x5d8, 0x5d5, 0x5d1, 0x5e8, 0x3b, 0x5e0, 0x5d5, 0x5d1, 0x5de, 0x5d1, 0x5e8, 0x3b, 0x5d3, 0x5e6, 0x5de, 0x5d1, -0x5e8, 0x3b, 0x91c, 0x928, 0x970, 0x3b, 0x92b, 0x93c, 0x930, 0x970, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, -0x930, 0x948, 0x932, 0x3b, 0x92e, 0x908, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x970, 0x3b, 0x905, 0x917, 0x970, 0x3b, -0x938, 0x93f, 0x924, 0x970, 0x3b, 0x905, 0x915, 0x94d, 0x924, 0x942, 0x970, 0x3b, 0x928, 0x935, 0x970, 0x3b, 0x926, 0x93f, 0x938, 0x970, -0x3b, 0x91c, 0x928, 0x935, 0x930, 0x940, 0x3b, 0x92b, 0x93c, 0x930, 0x935, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, -0x905, 0x92a, 0x94d, 0x930, 0x948, 0x932, 0x3b, 0x92e, 0x908, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x908, 0x3b, -0x905, 0x917, 0x938, 0x94d, 0x924, 0x3b, 0x938, 0x93f, 0x924, 0x902, 0x92c, 0x930, 0x3b, 0x905, 0x915, 0x94d, 0x924, 0x942, 0x92c, 0x930, -0x3b, 0x928, 0x935, 0x902, 0x92c, 0x930, 0x3b, 0x926, 0x93f, 0x938, 0x902, 0x92c, 0x930, 0x3b, 0x91c, 0x3b, 0x92b, 0x93c, 0x3b, 0x92e, -0x93e, 0x3b, 0x905, 0x3b, 0x92e, 0x3b, 0x91c, 0x942, 0x3b, 0x91c, 0x941, 0x3b, 0x905, 0x3b, 0x938, 0x93f, 0x3b, 0x905, 0x3b, 0x928, -0x3b, 0x926, 0x93f, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0xe1, 0x72, 0x63, 0x2e, -0x3b, 0xe1, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0xe1, 0x6a, 0x2e, 0x3b, 0x6a, 0xfa, 0x6e, 0x2e, 0x3b, 0x6a, 0xfa, 0x6c, 0x2e, -0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x7a, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, -0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0xe1, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, -0xe1, 0x72, 0x3b, 0x6d, 0xe1, 0x72, 0x63, 0x69, 0x75, 0x73, 0x3b, 0xe1, 0x70, 0x72, 0x69, 0x6c, 0x69, 0x73, 0x3b, 0x6d, -0xe1, 0x6a, 0x75, 0x73, 0x3b, 0x6a, 0xfa, 0x6e, 0x69, 0x75, 0x73, 0x3b, 0x6a, 0xfa, 0x6c, 0x69, 0x75, 0x73, 0x3b, 0x61, -0x75, 0x67, 0x75, 0x73, 0x7a, 0x74, 0x75, 0x73, 0x3b, 0x73, 0x7a, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, -0x6f, 0x6b, 0x74, 0xf3, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, -0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0xc1, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, -0x41, 0x3b, 0x53, 0x7a, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, -0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0xed, 0x3b, 0x6a, 0xfa, 0x6e, 0x2e, 0x3b, -0x6a, 0xfa, 0x6c, 0x2e, 0x3b, 0xe1, 0x67, 0xfa, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, -0x6e, 0xf3, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x73, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0xfa, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, -0x72, 0xfa, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0xed, 0x6c, 0x3b, 0x6d, 0x61, 0xed, 0x3b, -0x6a, 0xfa, 0x6e, 0xed, 0x3b, 0x6a, 0xfa, 0x6c, 0xed, 0x3b, 0xe1, 0x67, 0xfa, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, -0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0xf3, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0xf3, 0x76, 0x65, 0x6d, 0x62, -0x65, 0x72, 0x3b, 0x64, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, -0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0xc1, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, -0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, -0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x75, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, -0x44, 0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, -0x3b, 0x4d, 0x61, 0x72, 0x65, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, -0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x67, 0x75, 0x73, 0x74, 0x75, 0x73, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, -0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, -0x72, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, -0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, -0x75, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x63, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, -0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x6f, 0x3b, 0x6d, 0x61, -0x72, 0x74, 0x69, 0x6f, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x69, -0x6f, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6f, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x70, 0x74, -0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x63, 0x74, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, -0x72, 0x65, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6a, 0x3b, 0x66, 0x3b, 0x6d, 0x3b, 0x61, 0x3b, -0x6d, 0x3b, 0x6a, 0x3b, 0x6a, 0x3b, 0x61, 0x3b, 0x73, 0x3b, 0x6f, 0x3b, 0x6e, 0x3b, 0x64, 0x3b, 0x45, 0x61, 0x6e, 0x3b, -0x46, 0x65, 0x61, 0x62, 0x68, 0x3b, 0x4d, 0xe1, 0x72, 0x74, 0x61, 0x3b, 0x41, 0x69, 0x62, 0x3b, 0x42, 0x65, 0x61, 0x6c, -0x3b, 0x4d, 0x65, 0x69, 0x74, 0x68, 0x3b, 0x49, 0xfa, 0x69, 0x6c, 0x3b, 0x4c, 0xfa, 0x6e, 0x3b, 0x4d, 0x46, 0xf3, 0x6d, -0x68, 0x3b, 0x44, 0x46, 0xf3, 0x6d, 0x68, 0x3b, 0x53, 0x61, 0x6d, 0x68, 0x3b, 0x4e, 0x6f, 0x6c, 0x6c, 0x3b, 0x45, 0x61, -0x6e, 0xe1, 0x69, 0x72, 0x3b, 0x46, 0x65, 0x61, 0x62, 0x68, 0x72, 0x61, 0x3b, 0x4d, 0xe1, 0x72, 0x74, 0x61, 0x3b, 0x41, -0x69, 0x62, 0x72, 0x65, 0xe1, 0x6e, 0x3b, 0x42, 0x65, 0x61, 0x6c, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x3b, 0x4d, 0x65, 0x69, -0x74, 0x68, 0x65, 0x61, 0x6d, 0x68, 0x3b, 0x49, 0xfa, 0x69, 0x6c, 0x3b, 0x4c, 0xfa, 0x6e, 0x61, 0x73, 0x61, 0x3b, 0x4d, -0x65, 0xe1, 0x6e, 0x20, 0x46, 0xf3, 0x6d, 0x68, 0x61, 0x69, 0x72, 0x3b, 0x44, 0x65, 0x69, 0x72, 0x65, 0x61, 0x64, 0x68, -0x20, 0x46, 0xf3, 0x6d, 0x68, 0x61, 0x69, 0x72, 0x3b, 0x53, 0x61, 0x6d, 0x68, 0x61, 0x69, 0x6e, 0x3b, 0x4e, 0x6f, 0x6c, -0x6c, 0x61, 0x69, 0x67, 0x3b, 0x45, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x42, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x4c, -0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x4e, 0x3b, 0x67, 0x65, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, -0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x67, 0x3b, 0x67, 0x69, 0x75, 0x3b, 0x6c, 0x75, 0x67, 0x3b, 0x61, 0x67, 0x6f, -0x3b, 0x73, 0x65, 0x74, 0x3b, 0x6f, 0x74, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x69, 0x63, 0x3b, 0x67, 0x65, 0x6e, -0x6e, 0x61, 0x69, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x62, 0x72, 0x61, 0x69, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, -0x61, 0x70, 0x72, 0x69, 0x6c, 0x65, 0x3b, 0x6d, 0x61, 0x67, 0x67, 0x69, 0x6f, 0x3b, 0x67, 0x69, 0x75, 0x67, 0x6e, 0x6f, -0x3b, 0x6c, 0x75, 0x67, 0x6c, 0x69, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x74, 0x65, -0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x74, 0x74, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, -0x65, 0x3b, 0x64, 0x69, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x47, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, -0x3b, 0x47, 0x3b, 0x4c, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, -0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, -0x75, 0x6c, 0x3b, 0x41, 0x67, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, -0x65, 0x73, 0x3b, 0xc9c, 0xca8, 0x3b, 0xcab, 0xcc6, 0xcac, 0xccd, 0xcb0, 0x3b, 0xcae, 0xcbe, 0xcb0, 0xccd, 0xc9a, 0xccd, 0x3b, 0xc8f, -0xcaa, 0xccd, 0xcb0, 0xcbf, 0x3b, 0xcae, 0xcc7, 0x3b, 0xc9c, 0xcc2, 0xca8, 0xccd, 0x3b, 0xc9c, 0xcc1, 0xcb2, 0xcc8, 0x3b, 0xc86, 0xc97, -0x3b, 0xcb8, 0xcc6, 0xcaa, 0xccd, 0xc9f, 0xcc6, 0xc82, 0x3b, 0xc85, 0xc95, 0xccd, 0xc9f, 0xccb, 0x3b, 0xca8, 0xcb5, 0xcc6, 0xc82, 0x3b, -0xca1, 0xcbf, 0xcb8, 0xcc6, 0xc82, 0x3b, 0xc9c, 0xca8, 0xcb5, 0xcb0, 0xcbf, 0x3b, 0xcab, 0xcc6, 0xcac, 0xccd, 0xcb0, 0xcb5, 0xcb0, 0xcbf, -0x3b, 0xcae, 0xcbe, 0xcb0, 0xccd, 0xc9a, 0xccd, 0x3b, 0xc8f, 0xcaa, 0xccd, 0xcb0, 0xcbf, 0xcb2, 0xccd, 0x3b, 0xcae, 0xcc7, 0x3b, 0xc9c, -0xcc2, 0xca8, 0xccd, 0x3b, 0xc9c, 0xcc1, 0xcb2, 0xcc8, 0x3b, 0xc86, 0xc97, 0xcb8, 0xccd, 0xc9f, 0xccd, 0x3b, 0xcb8, 0xcc6, 0xcaa, 0xccd, -0xc9f, 0xcc6, 0xc82, 0xcac, 0xcb0, 0xccd, 0x3b, 0xc85, 0xc95, 0xccd, 0xc9f, 0xccb, 0xcac, 0xcb0, 0xccd, 0x3b, 0xca8, 0xcb5, 0xcc6, 0xc82, -0xcac, 0xcb0, 0xccd, 0x3b, 0xca1, 0xcbf, 0xcb8, 0xcc6, 0xc82, 0xcac, 0xcb0, 0xccd, 0x3b, 0xc9c, 0x3b, 0xcab, 0xcc6, 0x3b, 0xcae, 0xcbe, -0x3b, 0xc8f, 0x3b, 0xcae, 0xcc7, 0x3b, 0xc9c, 0xcc2, 0x3b, 0xc9c, 0xcc1, 0x3b, 0xc86, 0x3b, 0xcb8, 0xcc6, 0x3b, 0xc85, 0x3b, 0xca8, -0x3b, 0xca1, 0xcbf, 0x3b, 0xc9c, 0xca8, 0xcb5, 0xcb0, 0xcbf, 0x3b, 0xcab, 0xcc6, 0xcac, 0xccd, 0xcb0, 0xcb5, 0xcb0, 0xcbf, 0x3b, 0xcae, -0xcbe, 0xcb0, 0xccd, 0xc9a, 0xccd, 0x3b, 0xc8f, 0xcaa, 0xccd, 0xcb0, 0xcbf, 0x3b, 0xcae, 0xcc7, 0x3b, 0xc9c, 0xcc2, 0xca8, 0xccd, 0x3b, -0xc9c, 0xcc1, 0xcb2, 0xcc8, 0x3b, 0xc86, 0xc97, 0x3b, 0xcb8, 0xcc6, 0xcaa, 0xccd, 0xc9f, 0xcc6, 0xc82, 0x3b, 0xc85, 0xc95, 0xccd, 0xc9f, -0xccb, 0x3b, 0xca8, 0xcb5, 0xcc6, 0xc82, 0x3b, 0xca1, 0xcbf, 0xcb8, 0xcc6, 0xc82, 0x3b, 0x62c, 0x646, 0x624, 0x631, 0x6cc, 0x3b, 0x641, -0x631, 0x624, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x655, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cc, 0x654, -0x3b, 0x62c, 0x648, 0x657, 0x646, 0x3b, 0x62c, 0x648, 0x657, 0x644, 0x627, 0x6cc, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, -0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x657, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, -0x633, 0x645, 0x628, 0x631, 0x3b, 0x62c, 0x3b, 0x641, 0x3b, 0x645, 0x3b, 0x627, 0x3b, 0x645, 0x3b, 0x62c, 0x3b, 0x62c, 0x3b, 0x627, -0x3b, 0x633, 0x3b, 0x633, 0x3b, 0x627, 0x3b, 0x646, 0x3b, 0x49b, 0x430, 0x4a3, 0x2e, 0x3b, 0x430, 0x49b, 0x43f, 0x2e, 0x3b, 0x43d, -0x430, 0x443, 0x2e, 0x3b, 0x441, 0x4d9, 0x443, 0x2e, 0x3b, 0x43c, 0x430, 0x43c, 0x2e, 0x3b, 0x43c, 0x430, 0x443, 0x2e, 0x3b, 0x448, -0x456, 0x43b, 0x2e, 0x3b, 0x442, 0x430, 0x43c, 0x2e, 0x3b, 0x49b, 0x44b, 0x440, 0x2e, 0x3b, 0x49b, 0x430, 0x437, 0x2e, 0x3b, 0x49b, -0x430, 0x440, 0x2e, 0x3b, 0x436, 0x435, 0x43b, 0x2e, 0x3b, 0x49a, 0x430, 0x4a3, 0x442, 0x430, 0x440, 0x3b, 0x410, 0x49b, 0x43f, 0x430, -0x43d, 0x3b, 0x41d, 0x430, 0x443, 0x440, 0x44b, 0x437, 0x3b, 0x421, 0x4d9, 0x443, 0x456, 0x440, 0x3b, 0x41c, 0x430, 0x43c, 0x44b, 0x440, -0x3b, 0x41c, 0x430, 0x443, 0x441, 0x44b, 0x43c, 0x3b, 0x428, 0x456, 0x43b, 0x434, 0x435, 0x3b, 0x422, 0x430, 0x43c, 0x44b, 0x437, 0x3b, -0x49a, 0x44b, 0x440, 0x43a, 0x4af, 0x439, 0x435, 0x43a, 0x3b, 0x49a, 0x430, 0x437, 0x430, 0x43d, 0x3b, 0x49a, 0x430, 0x440, 0x430, 0x448, -0x430, 0x3b, 0x416, 0x435, 0x43b, 0x442, 0x43e, 0x49b, 0x441, 0x430, 0x43d, 0x3b, 0x49a, 0x3b, 0x410, 0x3b, 0x41d, 0x3b, 0x421, 0x3b, -0x41c, 0x3b, 0x41c, 0x3b, 0x428, 0x3b, 0x422, 0x3b, 0x49a, 0x3b, 0x49a, 0x3b, 0x49a, 0x3b, 0x416, 0x3b, 0x49b, 0x430, 0x4a3, 0x442, -0x430, 0x440, 0x3b, 0x430, 0x49b, 0x43f, 0x430, 0x43d, 0x3b, 0x43d, 0x430, 0x443, 0x440, 0x44b, 0x437, 0x3b, 0x441, 0x4d9, 0x443, 0x456, -0x440, 0x3b, 0x43c, 0x430, 0x43c, 0x44b, 0x440, 0x3b, 0x43c, 0x430, 0x443, 0x441, 0x44b, 0x43c, 0x3b, 0x448, 0x456, 0x43b, 0x434, 0x435, -0x3b, 0x442, 0x430, 0x43c, 0x44b, 0x437, 0x3b, 0x49b, 0x44b, 0x440, 0x43a, 0x4af, 0x439, 0x435, 0x43a, 0x3b, 0x49b, 0x430, 0x437, 0x430, -0x43d, 0x3b, 0x49b, 0x430, 0x440, 0x430, 0x448, 0x430, 0x3b, 0x436, 0x435, 0x43b, 0x442, 0x43e, 0x49b, 0x441, 0x430, 0x43d, 0x3b, 0x6d, -0x75, 0x74, 0x2e, 0x3b, 0x67, 0x61, 0x73, 0x2e, 0x3b, 0x77, 0x65, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x74, 0x2e, 0x3b, 0x67, -0x69, 0x63, 0x2e, 0x3b, 0x6b, 0x61, 0x6d, 0x2e, 0x3b, 0x6e, 0x79, 0x61, 0x2e, 0x3b, 0x6b, 0x61, 0x6e, 0x2e, 0x3b, 0x6e, -0x7a, 0x65, 0x2e, 0x3b, 0x75, 0x6b, 0x77, 0x2e, 0x3b, 0x75, 0x67, 0x75, 0x2e, 0x3b, 0x75, 0x6b, 0x75, 0x2e, 0x3b, 0x4d, -0x75, 0x74, 0x61, 0x72, 0x61, 0x6d, 0x61, 0x3b, 0x47, 0x61, 0x73, 0x68, 0x79, 0x61, 0x6e, 0x74, 0x61, 0x72, 0x65, 0x3b, -0x57, 0x65, 0x72, 0x75, 0x72, 0x77, 0x65, 0x3b, 0x4d, 0x61, 0x74, 0x61, 0x3b, 0x47, 0x69, 0x63, 0x75, 0x72, 0x61, 0x6e, -0x73, 0x69, 0x3b, 0x4b, 0x61, 0x6d, 0x65, 0x6e, 0x61, 0x3b, 0x4e, 0x79, 0x61, 0x6b, 0x61, 0x6e, 0x67, 0x61, 0x3b, 0x4b, -0x61, 0x6e, 0x61, 0x6d, 0x61, 0x3b, 0x4e, 0x7a, 0x65, 0x6c, 0x69, 0x3b, 0x55, 0x6b, 0x77, 0x61, 0x6b, 0x69, 0x72, 0x61, -0x3b, 0x55, 0x67, 0x75, 0x73, 0x68, 0x79, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x55, 0x6b, 0x75, 0x62, 0x6f, 0x7a, 0x61, 0x3b, -0x42f, 0x43d, 0x432, 0x3b, 0x424, 0x435, 0x432, 0x3b, 0x41c, 0x430, 0x440, 0x3b, 0x410, 0x43f, 0x440, 0x3b, 0x41c, 0x430, 0x439, 0x3b, -0x418, 0x44e, 0x43d, 0x3b, 0x418, 0x44e, 0x43b, 0x3b, 0x410, 0x432, 0x433, 0x3b, 0x421, 0x435, 0x43d, 0x3b, 0x41e, 0x43a, 0x442, 0x3b, -0x41d, 0x43e, 0x44f, 0x3b, 0x414, 0x435, 0x43a, 0x3b, 0x42f, 0x43d, 0x432, 0x430, 0x440, 0x44c, 0x3b, 0x424, 0x435, 0x432, 0x440, 0x430, -0x43b, 0x44c, 0x3b, 0x41c, 0x430, 0x440, 0x442, 0x3b, 0x410, 0x43f, 0x440, 0x435, 0x43b, 0x44c, 0x3b, 0x41c, 0x430, 0x439, 0x3b, 0x418, -0x44e, 0x43d, 0x44c, 0x3b, 0x418, 0x44e, 0x43b, 0x44c, 0x3b, 0x410, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x421, 0x435, 0x43d, 0x442, -0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x41e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x41d, 0x43e, 0x44f, 0x431, 0x440, 0x44c, 0x3b, -0x414, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44c, 0x3b, 0x42f, 0x3b, 0x424, 0x3b, 0x41c, 0x3b, 0x410, 0x3b, 0x41c, 0x3b, 0x418, 0x3b, -0x418, 0x3b, 0x410, 0x3b, 0x421, 0x3b, 0x41e, 0x3b, 0x41d, 0x3b, 0x414, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, 0x444, 0x435, 0x432, -0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x2e, -0x3b, 0x438, 0x44e, 0x43b, 0x2e, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, -0x3b, 0x43d, 0x43e, 0x44f, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, 0x44c, 0x3b, 0x444, 0x435, -0x432, 0x440, 0x430, 0x43b, 0x44c, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x44c, 0x3b, 0x43c, 0x430, -0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x44c, 0x3b, 0x438, 0x44e, 0x43b, 0x44c, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, -0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, -0x440, 0x44c, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44c, 0x3b, 0x31, 0xc6d4, 0x3b, 0x32, 0xc6d4, 0x3b, 0x33, 0xc6d4, 0x3b, -0x34, 0xc6d4, 0x3b, 0x35, 0xc6d4, 0x3b, 0x36, 0xc6d4, 0x3b, 0x37, 0xc6d4, 0x3b, 0x38, 0xc6d4, 0x3b, 0x39, 0xc6d4, 0x3b, 0x31, 0x30, -0xc6d4, 0x3b, 0x31, 0x31, 0xc6d4, 0x3b, 0x31, 0x32, 0xc6d4, 0x3b, 0x72, 0xea, 0x62, 0x3b, 0x72, 0x65, 0x15f, 0x3b, 0x61, 0x64, -0x61, 0x3b, 0x61, 0x76, 0x72, 0x3b, 0x67, 0x75, 0x6c, 0x3b, 0x70, 0xfb, 0x15f, 0x3b, 0x74, 0xee, 0x72, 0x3b, 0x67, 0x65, -0x6c, 0x3b, 0x72, 0x65, 0x7a, 0x3b, 0x6b, 0x65, 0x77, 0x3b, 0x73, 0x65, 0x72, 0x3b, 0x62, 0x65, 0x72, 0x3b, 0x72, 0xea, -0x62, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x3b, 0x72, 0x65, 0x15f, 0x65, 0x6d, 0xee, 0x3b, 0x61, 0x64, 0x61, 0x72, 0x3b, 0x61, -0x76, 0x72, 0xea, 0x6c, 0x3b, 0x67, 0x75, 0x6c, 0x61, 0x6e, 0x3b, 0x70, 0xfb, 0x15f, 0x70, 0x65, 0x72, 0x3b, 0x74, 0xee, -0x72, 0x6d, 0x65, 0x68, 0x3b, 0x67, 0x65, 0x6c, 0x61, 0x77, 0xea, 0x6a, 0x3b, 0x72, 0x65, 0x7a, 0x62, 0x65, 0x72, 0x3b, -0x6b, 0x65, 0x77, 0xe7, 0xea, 0x72, 0x3b, 0x73, 0x65, 0x72, 0x6d, 0x61, 0x77, 0x65, 0x7a, 0x3b, 0x62, 0x65, 0x72, 0x66, -0x61, 0x6e, 0x62, 0x61, 0x72, 0x3b, 0x52, 0x3b, 0x52, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x47, 0x3b, 0x50, 0x3b, 0x54, 0x3b, -0x47, 0x3b, 0x52, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x42, 0x3b, 0x72, 0xea, 0x62, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0xea, 0x3b, -0x72, 0x65, 0x15f, 0x65, 0x6d, 0x69, 0x79, 0xea, 0x3b, 0x61, 0x64, 0x61, 0x72, 0xea, 0x3b, 0x61, 0x76, 0x72, 0xea, 0x6c, -0xea, 0x3b, 0x67, 0x75, 0x6c, 0x61, 0x6e, 0xea, 0x3b, 0x70, 0xfb, 0x15f, 0x70, 0x65, 0x72, 0xea, 0x3b, 0x74, 0xee, 0x72, -0x6d, 0x65, 0x68, 0xea, 0x3b, 0x67, 0x65, 0x6c, 0x61, 0x77, 0xea, 0x6a, 0xea, 0x3b, 0x72, 0x65, 0x7a, 0x62, 0x65, 0x72, -0xea, 0x3b, 0x6b, 0x65, 0x77, 0xe7, 0xea, 0x72, 0xea, 0x3b, 0x73, 0x65, 0x72, 0x6d, 0x61, 0x77, 0x65, 0x7a, 0xea, 0x3b, -0x62, 0x65, 0x72, 0x66, 0x61, 0x6e, 0x62, 0x61, 0x72, 0xea, 0x3b, 0x4d, 0x75, 0x74, 0x2e, 0x3b, 0x47, 0x61, 0x73, 0x2e, -0x3b, 0x57, 0x65, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x74, 0x2e, 0x3b, 0x47, 0x69, 0x63, 0x2e, 0x3b, 0x4b, 0x61, 0x6d, 0x2e, -0x3b, 0x4e, 0x79, 0x61, 0x2e, 0x3b, 0x4b, 0x61, 0x6e, 0x2e, 0x3b, 0x4e, 0x7a, 0x65, 0x2e, 0x3b, 0x55, 0x6b, 0x77, 0x2e, -0x3b, 0x55, 0x67, 0x75, 0x2e, 0x3b, 0x55, 0x6b, 0x75, 0x2e, 0x3b, 0x4e, 0x7a, 0x65, 0x72, 0x6f, 0x3b, 0x52, 0x75, 0x68, -0x75, 0x68, 0x75, 0x6d, 0x61, 0x3b, 0x4e, 0x74, 0x77, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x3b, 0x4e, 0x64, 0x61, 0x6d, -0x75, 0x6b, 0x69, 0x7a, 0x61, 0x3b, 0x52, 0x75, 0x73, 0x61, 0x6d, 0x61, 0x3b, 0x52, 0x75, 0x68, 0x65, 0x73, 0x68, 0x69, -0x3b, 0x4d, 0x75, 0x6b, 0x61, 0x6b, 0x61, 0x72, 0x6f, 0x3b, 0x4e, 0x79, 0x61, 0x6e, 0x64, 0x61, 0x67, 0x61, 0x72, 0x6f, -0x3b, 0x4e, 0x79, 0x61, 0x6b, 0x61, 0x6e, 0x67, 0x61, 0x3b, 0x47, 0x69, 0x74, 0x75, 0x67, 0x75, 0x74, 0x75, 0x3b, 0x4d, -0x75, 0x6e, 0x79, 0x6f, 0x6e, 0x79, 0x6f, 0x3b, 0x4b, 0x69, 0x67, 0x61, 0x72, 0x61, 0x6d, 0x61, 0x3b, 0xea1, 0x2e, 0xe81, -0x2e, 0x3b, 0xe81, 0x2e, 0xe9e, 0x2e, 0x3b, 0xea1, 0x2e, 0xe99, 0x2e, 0x3b, 0xea1, 0x2e, 0xeaa, 0x2e, 0x3b, 0xe9e, 0x2e, 0xe9e, -0x2e, 0x3b, 0xea1, 0xeb4, 0x2e, 0xe96, 0x2e, 0x3b, 0xe81, 0x2e, 0xea5, 0x2e, 0x3b, 0xeaa, 0x2e, 0xeab, 0x2e, 0x3b, 0xe81, 0x2e, -0xe8d, 0x2e, 0x3b, 0xe95, 0x2e, 0xea5, 0x2e, 0x3b, 0xe9e, 0x2e, 0xe88, 0x2e, 0x3b, 0xe97, 0x2e, 0xea7, 0x2e, 0x3b, 0xea1, 0xeb1, -0xe87, 0xe81, 0xead, 0xe99, 0x3b, 0xe81, 0xeb8, 0xea1, 0xe9e, 0xeb2, 0x3b, 0xea1, 0xeb5, 0xe99, 0xeb2, 0x3b, 0xec0, 0xea1, 0xeaa, 0xeb2, -0x3b, 0xe9e, 0xeb6, 0xe94, 0xeaa, 0xeb0, 0xe9e, 0xeb2, 0x3b, 0xea1, 0xeb4, 0xe96, 0xeb8, 0xe99, 0xeb2, 0x3b, 0xe81, 0xecd, 0xea5, 0xeb0, -0xe81, 0xebb, 0xe94, 0x3b, 0xeaa, 0xeb4, 0xe87, 0xeab, 0xeb2, 0x3b, 0xe81, 0xeb1, 0xe99, 0xe8d, 0xeb2, 0x3b, 0xe95, 0xeb8, 0xea5, 0xeb2, -0x3b, 0xe9e, 0xeb0, 0xe88, 0xeb4, 0xe81, 0x3b, 0xe97, 0xeb1, 0xe99, 0xea7, 0xeb2, 0x3b, 0x6a, 0x61, 0x6e, 0x76, 0x2e, 0x3b, 0x66, -0x65, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x6a, -0x73, 0x3b, 0x6a, 0x16b, 0x6e, 0x2e, 0x3b, 0x6a, 0x16b, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, -0x74, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, -0x6e, 0x76, 0x101, 0x72, 0x69, 0x73, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x101, 0x72, 0x69, 0x73, 0x3b, 0x6d, 0x61, 0x72, -0x74, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x12b, 0x6c, 0x69, 0x73, 0x3b, 0x6d, 0x61, 0x69, 0x6a, 0x73, 0x3b, 0x6a, 0x16b, 0x6e, -0x69, 0x6a, 0x73, 0x3b, 0x6a, 0x16b, 0x6c, 0x69, 0x6a, 0x73, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x73, 0x3b, 0x73, -0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x6e, -0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x79, -0x61, 0x6e, 0x3b, 0x66, 0x62, 0x6c, 0x3b, 0x6d, 0x73, 0x69, 0x3b, 0x61, 0x70, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x79, -0x75, 0x6e, 0x3b, 0x79, 0x75, 0x6c, 0x3b, 0x61, 0x67, 0x74, 0x3b, 0x73, 0x74, 0x62, 0x3b, 0x254, 0x74, 0x62, 0x3b, 0x6e, -0x76, 0x62, 0x3b, 0x64, 0x73, 0x62, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x79, 0x61, 0x6d, 0x62, -0x6f, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x62, 0x61, 0x6c, 0xe9, 0x3b, 0x73, 0xe1, -0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x73, 0xe1, 0x74, 0x6f, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, -0x79, 0x61, 0x20, 0x6d, 0xed, 0x6e, 0x65, 0x69, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, -0x74, 0xe1, 0x6e, 0x6f, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0x6f, 0x74, 0xf3, 0x62, 0xe1, -0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6e, 0x73, 0x61, 0x6d, 0x62, 0x6f, 0x3b, 0x73, 0xe1, 0x6e, -0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0x77, 0x61, 0x6d, 0x62, 0x65, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, -0x61, 0x20, 0x6c, 0x69, 0x62, 0x77, 0x61, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x7a, 0xf3, 0x6d, -0x69, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x7a, 0xf3, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, -0x254, 0x30c, 0x6b, 0x254, 0x301, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x7a, 0xf3, 0x6d, 0x69, 0x20, -0x6e, 0x61, 0x20, 0x6d, 0xed, 0x62, 0x61, 0x6c, 0xe9, 0x3b, 0x79, 0x3b, 0x66, 0x3b, 0x6d, 0x3b, 0x61, 0x3b, 0x6d, 0x3b, -0x79, 0x3b, 0x79, 0x3b, 0x61, 0x3b, 0x73, 0x3b, 0x254, 0x3b, 0x6e, 0x3b, 0x64, 0x3b, 0x73, 0x61, 0x75, 0x73, 0x2e, 0x3b, -0x76, 0x61, 0x73, 0x2e, 0x3b, 0x6b, 0x6f, 0x76, 0x2e, 0x3b, 0x62, 0x61, 0x6c, 0x2e, 0x3b, 0x67, 0x65, 0x67, 0x2e, 0x3b, -0x62, 0x69, 0x72, 0x17e, 0x2e, 0x3b, 0x6c, 0x69, 0x65, 0x70, 0x2e, 0x3b, 0x72, 0x75, 0x67, 0x70, 0x2e, 0x3b, 0x72, 0x75, -0x67, 0x73, 0x2e, 0x3b, 0x73, 0x70, 0x61, 0x6c, 0x2e, 0x3b, 0x6c, 0x61, 0x70, 0x6b, 0x72, 0x2e, 0x3b, 0x67, 0x72, 0x75, -0x6f, 0x64, 0x2e, 0x3b, 0x73, 0x61, 0x75, 0x73, 0x69, 0x73, 0x3b, 0x76, 0x61, 0x73, 0x61, 0x72, 0x69, 0x73, 0x3b, 0x6b, -0x6f, 0x76, 0x61, 0x73, 0x3b, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x64, 0x69, 0x73, 0x3b, 0x67, 0x65, 0x67, 0x75, 0x17e, 0x117, -0x3b, 0x62, 0x69, 0x72, 0x17e, 0x65, 0x6c, 0x69, 0x73, 0x3b, 0x6c, 0x69, 0x65, 0x70, 0x61, 0x3b, 0x72, 0x75, 0x67, 0x70, -0x6a, 0x16b, 0x74, 0x69, 0x73, 0x3b, 0x72, 0x75, 0x67, 0x73, 0x117, 0x6a, 0x69, 0x73, 0x3b, 0x73, 0x70, 0x61, 0x6c, 0x69, -0x73, 0x3b, 0x6c, 0x61, 0x70, 0x6b, 0x72, 0x69, 0x74, 0x69, 0x73, 0x3b, 0x67, 0x72, 0x75, 0x6f, 0x64, 0x69, 0x73, 0x3b, -0x53, 0x3b, 0x56, 0x3b, 0x4b, 0x3b, 0x42, 0x3b, 0x47, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x52, 0x3b, 0x52, 0x3b, 0x53, 0x3b, -0x4c, 0x3b, 0x47, 0x3b, 0x73, 0x61, 0x75, 0x73, 0x69, 0x6f, 0x3b, 0x76, 0x61, 0x73, 0x61, 0x72, 0x69, 0x6f, 0x3b, 0x6b, -0x6f, 0x76, 0x6f, 0x3b, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x64, 0x17e, 0x69, 0x6f, 0x3b, 0x67, 0x65, 0x67, 0x75, 0x17e, 0x117, -0x73, 0x3b, 0x62, 0x69, 0x72, 0x17e, 0x65, 0x6c, 0x69, 0x6f, 0x3b, 0x6c, 0x69, 0x65, 0x70, 0x6f, 0x73, 0x3b, 0x72, 0x75, -0x67, 0x70, 0x6a, 0x16b, 0x10d, 0x69, 0x6f, 0x3b, 0x72, 0x75, 0x67, 0x73, 0x117, 0x6a, 0x6f, 0x3b, 0x73, 0x70, 0x61, 0x6c, -0x69, 0x6f, 0x3b, 0x6c, 0x61, 0x70, 0x6b, 0x72, 0x69, 0x10d, 0x69, 0x6f, 0x3b, 0x67, 0x72, 0x75, 0x6f, 0x64, 0x17e, 0x69, -0x6f, 0x3b, 0x458, 0x430, 0x43d, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, -0x2e, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x2e, 0x3b, 0x458, 0x443, 0x43b, 0x2e, 0x3b, 0x430, 0x432, 0x433, 0x2e, -0x3b, 0x441, 0x435, 0x43f, 0x442, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x435, 0x43c, 0x2e, 0x3b, 0x434, 0x435, -0x43a, 0x2e, 0x3b, 0x458, 0x430, 0x43d, 0x443, 0x430, 0x440, 0x438, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x443, 0x430, 0x440, 0x438, 0x3b, -0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x438, 0x43b, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x438, 0x3b, -0x458, 0x443, 0x43b, 0x438, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x435, 0x43c, 0x432, 0x440, -0x438, 0x3b, 0x43e, 0x43a, 0x442, 0x43e, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x43d, 0x43e, 0x435, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x434, -0x435, 0x43a, 0x435, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x458, 0x3b, 0x444, 0x3b, 0x43c, 0x3b, 0x430, 0x3b, 0x43c, 0x3b, 0x458, 0x3b, -0x458, 0x3b, 0x430, 0x3b, 0x441, 0x3b, 0x43e, 0x3b, 0x43d, 0x3b, 0x434, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, -0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x79, 0x3b, 0x4a, 0x6f, 0x6e, 0x3b, 0x4a, 0x6f, 0x6c, 0x3b, -0x41, 0x6f, 0x67, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x73, 0x3b, -0x4a, 0x61, 0x6e, 0x6f, 0x61, 0x72, 0x79, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x6f, 0x61, 0x72, 0x79, 0x3b, 0x4d, 0x61, 0x72, -0x74, 0x73, 0x61, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x79, 0x3b, 0x4d, 0x65, 0x79, 0x3b, 0x4a, 0x6f, 0x6e, 0x61, 0x3b, -0x4a, 0x6f, 0x6c, 0x61, 0x79, 0x3b, 0x41, 0x6f, 0x67, 0x6f, 0x73, 0x69, 0x74, 0x72, 0x61, 0x3b, 0x53, 0x65, 0x70, 0x74, -0x61, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x61, 0x6d, 0x62, -0x72, 0x61, 0x3b, 0x44, 0x65, 0x73, 0x61, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, -0x4d, 0x61, 0x63, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, -0x4f, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b, -0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x63, -0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x69, -0x3b, 0x4f, 0x67, 0x6f, 0x73, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, -0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d, 0x62, 0x65, -0x72, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4f, 0x3b, 0x53, 0x3b, -0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0xd1c, 0xd28, 0xd41, 0x3b, 0xd2b, 0xd46, 0xd2c, 0xd4d, 0xd30, 0xd41, 0x3b, 0xd2e, 0xd3e, 0xd7c, -0x3b, 0xd0f, 0xd2a, 0xd4d, 0xd30, 0xd3f, 0x3b, 0xd2e, 0xd47, 0xd2f, 0xd4d, 0x3b, 0xd1c, 0xd42, 0xd7a, 0x3b, 0xd1c, 0xd42, 0xd32, 0xd48, -0x3b, 0xd13, 0xd17, 0x3b, 0xd38, 0xd46, 0xd2a, 0xd4d, 0xd31, 0xd4d, 0xd31, 0xd02, 0x3b, 0xd12, 0xd15, 0xd4d, 0xd1f, 0xd4b, 0x3b, 0xd28, -0xd35, 0xd02, 0x3b, 0xd21, 0xd3f, 0xd38, 0xd02, 0x3b, 0xd1c, 0xd28, 0xd41, 0xd35, 0xd30, 0xd3f, 0x3b, 0xd2b, 0xd46, 0xd2c, 0xd4d, 0xd30, -0xd41, 0xd35, 0xd30, 0xd3f, 0x3b, 0xd2e, 0xd3e, 0xd7c, 0xd1a, 0xd4d, 0xd1a, 0xd4d, 0x3b, 0xd0f, 0xd2a, 0xd4d, 0xd30, 0xd3f, 0xd7d, 0x3b, -0xd2e, 0xd47, 0xd2f, 0xd4d, 0x3b, 0xd1c, 0xd42, 0xd7a, 0x3b, 0xd1c, 0xd42, 0xd32, 0xd48, 0x3b, 0xd13, 0xd17, 0xd38, 0xd4d, 0xd31, 0xd4d, -0xd31, 0xd4d, 0x3b, 0xd38, 0xd46, 0xd2a, 0xd4d, 0xd31, 0xd4d, 0xd31, 0xd02, 0xd2c, 0xd7c, 0x3b, 0xd12, 0xd15, 0xd4d, 0x200c, 0xd1f, 0xd4b, -0xd2c, 0xd7c, 0x3b, 0xd28, 0xd35, 0xd02, 0xd2c, 0xd7c, 0x3b, 0xd21, 0xd3f, 0xd38, 0xd02, 0xd2c, 0xd7c, 0x3b, 0xd1c, 0x3b, 0xd2b, 0xd46, -0x3b, 0xd2e, 0xd3e, 0x3b, 0xd0f, 0x3b, 0xd2e, 0xd46, 0x3b, 0xd1c, 0xd42, 0xd7a, 0x3b, 0xd1c, 0xd42, 0x3b, 0xd13, 0x3b, 0xd38, 0xd46, -0x3b, 0xd12, 0x3b, 0xd28, 0x3b, 0xd21, 0xd3f, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x72, 0x61, 0x3b, 0x4d, 0x61, 0x72, 0x3b, -0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x6a, 0x3b, 0x120, 0x75, 0x6e, 0x3b, 0x4c, 0x75, 0x6c, 0x3b, 0x41, 0x77, 0x77, 0x3b, -0x53, 0x65, 0x74, 0x3b, 0x4f, 0x74, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x10b, 0x3b, 0x4a, 0x61, 0x6e, 0x6e, -0x61, 0x72, 0x3b, 0x46, 0x72, 0x61, 0x72, 0x3b, 0x4d, 0x61, 0x72, 0x7a, 0x75, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, -0x4d, 0x65, 0x6a, 0x6a, 0x75, 0x3b, 0x120, 0x75, 0x6e, 0x6a, 0x75, 0x3b, 0x4c, 0x75, 0x6c, 0x6a, 0x75, 0x3b, 0x41, 0x77, -0x77, 0x69, 0x73, 0x73, 0x75, 0x3b, 0x53, 0x65, 0x74, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x75, 0x3b, 0x4f, 0x74, 0x74, 0x75, -0x62, 0x72, 0x75, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x75, 0x3b, 0x44, 0x69, 0x10b, 0x65, 0x6d, 0x62, 0x72, -0x75, 0x3b, 0x4a, 0x6e, 0x3b, 0x46, 0x72, 0x3b, 0x4d, 0x7a, 0x3b, 0x41, 0x70, 0x3b, 0x4d, 0x6a, 0x3b, 0x120, 0x6e, 0x3b, -0x4c, 0x6a, 0x3b, 0x41, 0x77, 0x3b, 0x53, 0x74, 0x3b, 0x4f, 0x62, 0x3b, 0x4e, 0x76, 0x3b, 0x44, 0x10b, 0x3b, 0x4a, 0x3b, -0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x120, 0x3b, 0x4c, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, -0x44, 0x3b, 0x4b, 0x6f, 0x68, 0x69, 0x3b, 0x48, 0x75, 0x69, 0x3b, 0x50, 0x6f, 0x75, 0x3b, 0x50, 0x61, 0x65, 0x3b, 0x48, -0x61, 0x72, 0x61, 0x3b, 0x50, 0x69, 0x70, 0x69, 0x3b, 0x48, 0x14d, 0x6e, 0x67, 0x6f, 0x3b, 0x48, 0x65, 0x72, 0x65, 0x3b, -0x4d, 0x61, 0x68, 0x75, 0x3b, 0x4e, 0x75, 0x6b, 0x75, 0x3b, 0x52, 0x61, 0x6e, 0x67, 0x69, 0x3b, 0x48, 0x61, 0x6b, 0x69, -0x3b, 0x4b, 0x6f, 0x68, 0x69, 0x74, 0x101, 0x74, 0x65, 0x61, 0x3b, 0x48, 0x75, 0x69, 0x74, 0x61, 0x6e, 0x67, 0x75, 0x72, -0x75, 0x3b, 0x50, 0x6f, 0x75, 0x74, 0x16b, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x67, 0x69, 0x3b, 0x50, 0x61, 0x65, 0x6e, 0x67, -0x61, 0x77, 0x68, 0x101, 0x77, 0x68, 0x101, 0x3b, 0x48, 0x61, 0x72, 0x61, 0x74, 0x75, 0x61, 0x3b, 0x50, 0x69, 0x70, 0x69, -0x72, 0x69, 0x3b, 0x48, 0x14d, 0x6e, 0x67, 0x6f, 0x6e, 0x67, 0x6f, 0x69, 0x3b, 0x48, 0x65, 0x72, 0x65, 0x74, 0x75, 0x72, -0x69, 0x6b, 0x14d, 0x6b, 0x101, 0x3b, 0x4d, 0x61, 0x68, 0x75, 0x72, 0x75, 0x3b, 0x57, 0x68, 0x69, 0x72, 0x69, 0x6e, 0x67, -0x61, 0x2d, 0x101, 0x2d, 0x6e, 0x75, 0x6b, 0x75, 0x3b, 0x57, 0x68, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x61, 0x2d, 0x101, 0x2d, -0x72, 0x61, 0x6e, 0x67, 0x69, 0x3b, 0x48, 0x61, 0x6b, 0x69, 0x68, 0x65, 0x61, 0x3b, 0x4b, 0x3b, 0x48, 0x3b, 0x50, 0x3b, -0x50, 0x3b, 0x48, 0x3b, 0x50, 0x3b, 0x48, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x52, 0x3b, 0x48, 0x3b, 0x91c, 0x93e, -0x928, 0x947, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x90f, 0x92a, 0x94d, 0x930, -0x93f, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x948, 0x3b, 0x911, 0x917, 0x3b, 0x938, 0x92a, 0x94d, -0x91f, 0x947, 0x902, 0x3b, 0x911, 0x915, 0x94d, 0x91f, 0x94b, 0x3b, 0x928, 0x94b, 0x935, 0x94d, 0x939, 0x947, 0x902, 0x3b, 0x921, 0x93f, -0x938, 0x947, 0x902, 0x3b, 0x91c, 0x93e, 0x928, 0x947, 0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x935, -0x93e, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x90f, 0x92a, 0x94d, 0x930, 0x93f, 0x932, 0x3b, 0x92e, 0x947, 0x3b, -0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x948, 0x3b, 0x911, 0x917, 0x938, 0x94d, 0x91f, 0x3b, 0x938, 0x92a, 0x94d, 0x91f, 0x947, -0x902, 0x92c, 0x930, 0x3b, 0x911, 0x915, 0x94d, 0x91f, 0x94b, 0x92c, 0x930, 0x3b, 0x928, 0x94b, 0x935, 0x94d, 0x939, 0x947, 0x902, 0x92c, -0x930, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x902, 0x92c, 0x930, 0x3b, 0x91c, 0x93e, 0x3b, 0x92b, 0x947, 0x3b, 0x92e, 0x93e, 0x3b, 0x90f, -0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x942, 0x3b, 0x91c, 0x941, 0x3b, 0x911, 0x3b, 0x938, 0x3b, 0x911, 0x3b, 0x928, 0x94b, 0x3b, 0x921, -0x93f, 0x3b, 0x31, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x32, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x33, 0x2d, -0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x34, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x35, 0x2d, 0x440, 0x20, 0x441, 0x430, -0x440, 0x3b, 0x36, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x37, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x38, 0x2d, -0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x39, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x31, 0x30, 0x2d, 0x440, 0x20, 0x441, -0x430, 0x440, 0x3b, 0x31, 0x31, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x31, 0x32, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, -0x3b, 0x41d, 0x44d, 0x433, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x425, 0x43e, 0x451, 0x440, 0x434, -0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x413, 0x443, 0x440, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, -0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x414, 0x4e9, 0x440, 0x4e9, 0x432, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, -0x440, 0x3b, 0x422, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x417, 0x443, 0x440, 0x433, -0x430, 0x430, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x414, 0x43e, 0x43b, 0x43e, 0x43e, 0x434, 0x443, -0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x41d, 0x430, 0x439, 0x43c, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, -0x441, 0x430, 0x440, 0x3b, 0x415, 0x441, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x410, 0x440, 0x430, -0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x410, 0x440, 0x432, 0x430, 0x43d, 0x20, 0x43d, 0x44d, -0x433, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x410, 0x440, 0x432, 0x430, 0x43d, 0x20, 0x445, 0x43e, -0x451, 0x440, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x49, 0x3b, 0x49, 0x49, 0x3b, 0x49, 0x49, -0x49, 0x3b, 0x49, 0x56, 0x3b, 0x56, 0x3b, 0x56, 0x49, 0x3b, 0x56, 0x49, 0x49, 0x3b, 0x56, 0x49, 0x49, 0x49, 0x3b, 0x49, -0x58, 0x3b, 0x58, 0x3b, 0x58, 0x49, 0x3b, 0x58, 0x49, 0x49, 0x3b, 0x43d, 0x44d, 0x433, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, -0x20, 0x441, 0x430, 0x440, 0x3b, 0x445, 0x43e, 0x451, 0x440, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, -0x433, 0x443, 0x440, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x434, 0x4e9, 0x440, 0x4e9, -0x432, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x442, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, -0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x437, 0x443, 0x440, 0x433, 0x430, 0x430, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, -0x430, 0x440, 0x3b, 0x434, 0x43e, 0x43b, 0x43e, 0x43e, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x43d, -0x430, 0x439, 0x43c, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x435, 0x441, 0x434, 0x4af, 0x433, 0x44d, -0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x430, 0x440, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, -0x440, 0x3b, 0x430, 0x440, 0x432, 0x430, 0x43d, 0x20, 0x43d, 0x44d, 0x433, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, -0x440, 0x3b, 0x430, 0x440, 0x432, 0x430, 0x43d, 0x20, 0x445, 0x43e, 0x451, 0x440, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, -0x430, 0x440, 0x3b, 0x91c, 0x928, 0x935, 0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x905, 0x930, 0x940, 0x3b, 0x92e, -0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x93f, 0x932, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x941, 0x928, 0x3b, 0x91c, -0x941, 0x932, 0x93e, 0x908, 0x3b, 0x905, 0x917, 0x938, 0x94d, 0x91f, 0x3b, 0x938, 0x947, 0x92a, 0x94d, 0x91f, 0x947, 0x92e, 0x94d, 0x92c, -0x930, 0x3b, 0x905, 0x915, 0x94d, 0x91f, 0x94b, 0x92c, 0x930, 0x3b, 0x928, 0x94b, 0x92d, 0x947, 0x92e, 0x94d, 0x92c, 0x930, 0x3b, 0x921, -0x93f, 0x938, 0x947, 0x92e, 0x94d, 0x92c, 0x930, 0x3b, 0x91c, 0x928, 0x3b, 0x92b, 0x947, 0x947, 0x92c, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, -0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x941, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x3b, 0x905, 0x917, -0x3b, 0x938, 0x947, 0x92a, 0x3b, 0x905, 0x915, 0x94d, 0x91f, 0x94b, 0x3b, 0x928, 0x94b, 0x92d, 0x947, 0x3b, 0x921, 0x93f, 0x938, 0x947, -0x3b, 0x91c, 0x928, 0x3b, 0x92b, 0x947, 0x92c, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x3b, 0x92e, -0x947, 0x3b, 0x91c, 0x941, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x3b, 0x905, 0x917, 0x3b, 0x938, 0x947, 0x92a, 0x3b, 0x905, 0x915, 0x94d, -0x91f, 0x94b, 0x3b, 0x928, 0x94b, 0x92d, 0x947, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, -0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, -0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, -0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, -0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0xb1c, 0xb3e, 0xb28, 0xb41, -0xb06, 0xb30, 0xb40, 0x3b, 0xb2b, 0xb47, 0xb2c, 0xb43, 0xb06, 0xb30, 0xb40, 0x3b, 0xb2e, 0xb3e, 0xb30, 0xb4d, 0xb1a, 0xb4d, 0xb1a, 0x3b, -0xb05, 0xb2a, 0xb4d, 0xb30, 0xb47, 0xb32, 0x3b, 0xb2e, 0xb07, 0x3b, 0xb1c, 0xb41, 0xb28, 0x3b, 0xb1c, 0xb41, 0xb32, 0xb3e, 0xb07, 0x3b, -0xb05, 0xb17, 0xb37, 0xb4d, 0xb1f, 0x3b, 0xb38, 0xb47, 0xb2a, 0xb4d, 0xb1f, 0xb47, 0xb2e, 0xb4d, 0xb2c, 0xb30, 0x3b, 0xb05, 0xb15, 0xb4d, -0xb1f, 0xb4b, 0xb2c, 0xb30, 0x3b, 0xb28, 0xb2d, 0xb47, 0xb2e, 0xb4d, 0xb2c, 0xb30, 0x3b, 0xb21, 0xb3f, 0xb38, 0xb47, 0xb2e, 0xb4d, 0xb2c, -0xb30, 0x3b, 0xb1c, 0xb3e, 0x3b, 0xb2b, 0xb47, 0x3b, 0xb2e, 0xb3e, 0x3b, 0xb05, 0x3b, 0xb2e, 0xb07, 0x3b, 0xb1c, 0xb41, 0x3b, 0xb1c, -0xb41, 0x3b, 0xb05, 0x3b, 0xb38, 0xb47, 0x3b, 0xb05, 0x3b, 0xb28, 0x3b, 0xb21, 0xb3f, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x64a, 0x3b, +0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x73, 0x65, 0x6d, +0x62, 0x65, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, +0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x75, +0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, +0x73, 0x2e, 0x3b, 0x74, 0x61, 0x6d, 0x6d, 0x69, 0x3b, 0x68, 0x65, 0x6c, 0x6d, 0x69, 0x3b, 0x6d, 0x61, 0x61, 0x6c, 0x69, +0x73, 0x3b, 0x68, 0x75, 0x68, 0x74, 0x69, 0x3b, 0x74, 0x6f, 0x75, 0x6b, 0x6f, 0x3b, 0x6b, 0x65, 0x73, 0xe4, 0x3b, 0x68, +0x65, 0x69, 0x6e, 0xe4, 0x3b, 0x65, 0x6c, 0x6f, 0x3b, 0x73, 0x79, 0x79, 0x73, 0x3b, 0x6c, 0x6f, 0x6b, 0x61, 0x3b, 0x6d, +0x61, 0x72, 0x72, 0x61, 0x73, 0x3b, 0x6a, 0x6f, 0x75, 0x6c, 0x75, 0x3b, 0x74, 0x61, 0x6d, 0x6d, 0x69, 0x6b, 0x75, 0x75, +0x3b, 0x68, 0x65, 0x6c, 0x6d, 0x69, 0x6b, 0x75, 0x75, 0x3b, 0x6d, 0x61, 0x61, 0x6c, 0x69, 0x73, 0x6b, 0x75, 0x75, 0x3b, +0x68, 0x75, 0x68, 0x74, 0x69, 0x6b, 0x75, 0x75, 0x3b, 0x74, 0x6f, 0x75, 0x6b, 0x6f, 0x6b, 0x75, 0x75, 0x3b, 0x6b, 0x65, +0x73, 0xe4, 0x6b, 0x75, 0x75, 0x3b, 0x68, 0x65, 0x69, 0x6e, 0xe4, 0x6b, 0x75, 0x75, 0x3b, 0x65, 0x6c, 0x6f, 0x6b, 0x75, +0x75, 0x3b, 0x73, 0x79, 0x79, 0x73, 0x6b, 0x75, 0x75, 0x3b, 0x6c, 0x6f, 0x6b, 0x61, 0x6b, 0x75, 0x75, 0x3b, 0x6d, 0x61, +0x72, 0x72, 0x61, 0x73, 0x6b, 0x75, 0x75, 0x3b, 0x6a, 0x6f, 0x75, 0x6c, 0x75, 0x6b, 0x75, 0x75, 0x3b, 0x54, 0x3b, 0x48, +0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x48, 0x3b, 0x45, 0x3b, 0x53, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4a, +0x3b, 0x74, 0x61, 0x6d, 0x6d, 0x69, 0x6b, 0x2e, 0x3b, 0x68, 0x65, 0x6c, 0x6d, 0x69, 0x6b, 0x2e, 0x3b, 0x6d, 0x61, 0x61, +0x6c, 0x69, 0x73, 0x6b, 0x2e, 0x3b, 0x68, 0x75, 0x68, 0x74, 0x69, 0x6b, 0x2e, 0x3b, 0x74, 0x6f, 0x75, 0x6b, 0x6f, 0x6b, +0x2e, 0x3b, 0x6b, 0x65, 0x73, 0xe4, 0x6b, 0x2e, 0x3b, 0x68, 0x65, 0x69, 0x6e, 0xe4, 0x6b, 0x2e, 0x3b, 0x65, 0x6c, 0x6f, +0x6b, 0x2e, 0x3b, 0x73, 0x79, 0x79, 0x73, 0x6b, 0x2e, 0x3b, 0x6c, 0x6f, 0x6b, 0x61, 0x6b, 0x2e, 0x3b, 0x6d, 0x61, 0x72, +0x72, 0x61, 0x73, 0x6b, 0x2e, 0x3b, 0x6a, 0x6f, 0x75, 0x6c, 0x75, 0x6b, 0x2e, 0x3b, 0x74, 0x61, 0x6d, 0x6d, 0x69, 0x6b, +0x75, 0x75, 0x74, 0x61, 0x3b, 0x68, 0x65, 0x6c, 0x6d, 0x69, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x6d, 0x61, 0x61, 0x6c, +0x69, 0x73, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x68, 0x75, 0x68, 0x74, 0x69, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x74, +0x6f, 0x75, 0x6b, 0x6f, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x6b, 0x65, 0x73, 0xe4, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, +0x68, 0x65, 0x69, 0x6e, 0xe4, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x65, 0x6c, 0x6f, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, +0x73, 0x79, 0x79, 0x73, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x6c, 0x6f, 0x6b, 0x61, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, +0x6d, 0x61, 0x72, 0x72, 0x61, 0x73, 0x6b, 0x75, 0x75, 0x74, 0x61, 0x3b, 0x6a, 0x6f, 0x75, 0x6c, 0x75, 0x6b, 0x75, 0x75, +0x74, 0x61, 0x3b, 0x6a, 0x61, 0x6e, 0x76, 0x2e, 0x3b, 0x66, 0xe9, 0x76, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, +0x61, 0x76, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x69, 0x6e, 0x3b, 0x6a, 0x75, 0x69, 0x6c, 0x2e, 0x3b, +0x61, 0x6f, 0xfb, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, +0x3b, 0x64, 0xe9, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x76, 0x69, 0x65, 0x72, 0x3b, 0x66, 0xe9, 0x76, 0x72, 0x69, 0x65, +0x72, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x76, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x69, +0x6e, 0x3b, 0x6a, 0x75, 0x69, 0x6c, 0x6c, 0x65, 0x74, 0x3b, 0x61, 0x6f, 0xfb, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, +0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x63, 0x74, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, +0x65, 0x3b, 0x64, 0xe9, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6a, 0x61, 0x6e, 0x76, 0x2e, 0x3b, 0x66, 0xe9, 0x76, +0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x76, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x69, +0x6e, 0x3b, 0x6a, 0x75, 0x69, 0x6c, 0x6c, 0x2e, 0x3b, 0x61, 0x6f, 0xfb, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x2e, 0x3b, +0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0xe9, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, +0x66, 0xe9, 0x76, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x76, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, +0x75, 0x69, 0x2e, 0x3b, 0x6a, 0x75, 0x69, 0x6c, 0x2e, 0x3b, 0x61, 0x6f, 0xfb, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x2e, +0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0xe9, 0x63, 0x2e, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, +0x46, 0x65, 0x62, 0x3b, 0x4d, 0x72, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, +0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x75, 0x67, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, +0x44, 0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x6e, 0x65, 0x77, 0x61, 0x72, 0x69, 0x73, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x65, +0x77, 0x61, 0x72, 0x69, 0x73, 0x3b, 0x4d, 0x61, 0x61, 0x72, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, +0x61, 0x69, 0x65, 0x3b, 0x4a, 0x75, 0x6e, 0x79, 0x3b, 0x4a, 0x75, 0x6c, 0x79, 0x3b, 0x41, 0x75, 0x67, 0x75, 0x73, 0x74, +0x75, 0x73, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x69, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, +0x3b, 0x4e, 0x6f, 0x76, 0x69, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x73, 0x69, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x46, +0x61, 0x6f, 0x69, 0x3b, 0x47, 0x65, 0x61, 0x72, 0x72, 0x3b, 0x4d, 0xe0, 0x72, 0x74, 0x3b, 0x47, 0x69, 0x62, 0x6c, 0x3b, +0x43, 0xe8, 0x69, 0x74, 0x3b, 0xd2, 0x67, 0x6d, 0x68, 0x3b, 0x49, 0x75, 0x63, 0x68, 0x3b, 0x4c, 0xf9, 0x6e, 0x61, 0x3b, +0x53, 0x75, 0x6c, 0x74, 0x3b, 0x44, 0xe0, 0x6d, 0x68, 0x3b, 0x53, 0x61, 0x6d, 0x68, 0x3b, 0x44, 0xf9, 0x62, 0x68, 0x3b, +0x41, 0x6d, 0x20, 0x46, 0x61, 0x6f, 0x69, 0x6c, 0x6c, 0x65, 0x61, 0x63, 0x68, 0x3b, 0x41, 0x6e, 0x20, 0x47, 0x65, 0x61, +0x72, 0x72, 0x61, 0x6e, 0x3b, 0x41, 0x6d, 0x20, 0x4d, 0xe0, 0x72, 0x74, 0x3b, 0x41, 0x6e, 0x20, 0x47, 0x69, 0x62, 0x6c, +0x65, 0x61, 0x6e, 0x3b, 0x41, 0x6e, 0x20, 0x43, 0xe8, 0x69, 0x74, 0x65, 0x61, 0x6e, 0x3b, 0x41, 0x6e, 0x20, 0x74, 0x2d, +0xd2, 0x67, 0x6d, 0x68, 0x69, 0x6f, 0x73, 0x3b, 0x41, 0x6e, 0x20, 0x74, 0x2d, 0x49, 0x75, 0x63, 0x68, 0x61, 0x72, 0x3b, +0x41, 0x6e, 0x20, 0x4c, 0xf9, 0x6e, 0x61, 0x73, 0x74, 0x61, 0x6c, 0x3b, 0x41, 0x6e, 0x20, 0x74, 0x2d, 0x53, 0x75, 0x6c, +0x74, 0x61, 0x69, 0x6e, 0x3b, 0x41, 0x6e, 0x20, 0x44, 0xe0, 0x6d, 0x68, 0x61, 0x69, 0x72, 0x3b, 0x41, 0x6e, 0x20, 0x74, +0x2d, 0x53, 0x61, 0x6d, 0x68, 0x61, 0x69, 0x6e, 0x3b, 0x41, 0x6e, 0x20, 0x44, 0xf9, 0x62, 0x68, 0x6c, 0x61, 0x63, 0x68, +0x64, 0x3b, 0x46, 0x3b, 0x47, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x43, 0x3b, 0xd2, 0x3b, 0x49, 0x3b, 0x4c, 0x3b, 0x53, 0x3b, +0x44, 0x3b, 0x53, 0x3b, 0x44, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x46, 0x68, 0x61, 0x6f, 0x69, 0x6c, 0x6c, 0x65, 0x61, +0x63, 0x68, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x47, 0x68, 0x65, 0x61, 0x72, 0x72, 0x61, 0x6e, 0x3b, 0x64, 0x68, 0x65, +0x6e, 0x20, 0x4d, 0x68, 0xe0, 0x72, 0x74, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x47, 0x68, 0x69, 0x62, 0x6c, 0x65, 0x61, +0x6e, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x43, 0x68, 0xe8, 0x69, 0x74, 0x65, 0x61, 0x6e, 0x3b, 0x64, 0x68, 0x65, 0x6e, +0x20, 0xd2, 0x67, 0x6d, 0x68, 0x69, 0x6f, 0x73, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x49, 0x75, 0x63, 0x68, 0x61, 0x72, +0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x4c, 0xf9, 0x6e, 0x61, 0x73, 0x74, 0x61, 0x6c, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, +0x74, 0x2d, 0x53, 0x75, 0x6c, 0x74, 0x61, 0x69, 0x6e, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x44, 0xe0, 0x6d, 0x68, 0x61, +0x69, 0x72, 0x3b, 0x64, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x2d, 0x53, 0x61, 0x6d, 0x68, 0x61, 0x69, 0x6e, 0x3b, 0x64, 0x68, +0x65, 0x6e, 0x20, 0x44, 0xf9, 0x62, 0x68, 0x6c, 0x61, 0x63, 0x68, 0x64, 0x3b, 0x58, 0x61, 0x6e, 0x2e, 0x3b, 0x46, 0x65, +0x62, 0x2e, 0x3b, 0x4d, 0x61, 0x72, 0x2e, 0x3b, 0x41, 0x62, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x69, 0x6f, 0x3b, 0x58, 0x75, +0xf1, 0x6f, 0x3b, 0x58, 0x75, 0x6c, 0x2e, 0x3b, 0x41, 0x67, 0x6f, 0x2e, 0x3b, 0x53, 0x65, 0x74, 0x2e, 0x3b, 0x4f, 0x75, +0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x65, 0x63, 0x2e, 0x3b, 0x58, 0x61, 0x6e, 0x65, 0x69, 0x72, 0x6f, +0x3b, 0x46, 0x65, 0x62, 0x72, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x4d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x41, 0x62, 0x72, 0x69, +0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x6f, 0x3b, 0x58, 0x75, 0xf1, 0x6f, 0x3b, 0x58, 0x75, 0x6c, 0x6c, 0x6f, 0x3b, 0x41, 0x67, +0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x4f, 0x75, 0x74, 0x75, 0x62, 0x72, +0x6f, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x44, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, +0x58, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x58, 0x3b, 0x58, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, +0x4e, 0x3b, 0x44, 0x3b, 0x78, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, +0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x6f, 0x3b, 0x78, 0x75, 0xf1, 0x6f, 0x3b, 0x78, 0x75, 0x6c, 0x2e, 0x3b, 0x61, +0x67, 0x6f, 0x2e, 0x3b, 0x73, 0x65, 0x74, 0x2e, 0x3b, 0x6f, 0x75, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, +0x65, 0x63, 0x2e, 0x3b, 0x78, 0x61, 0x6e, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x65, 0x69, 0x72, 0x6f, +0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x6f, 0x3b, 0x78, 0x75, +0xf1, 0x6f, 0x3b, 0x78, 0x75, 0x6c, 0x6c, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x65, +0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x6f, 0x75, 0x74, 0x75, 0x62, 0x72, 0x6f, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, +0x6f, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x78, 0x2e, 0x3b, 0x66, 0x2e, 0x3b, 0x6d, 0x2e, 0x3b, +0x61, 0x2e, 0x3b, 0x6d, 0x2e, 0x3b, 0x78, 0x2e, 0x3b, 0x78, 0x2e, 0x3b, 0x61, 0x2e, 0x3b, 0x73, 0x2e, 0x3b, 0x6f, 0x2e, +0x3b, 0x6e, 0x2e, 0x3b, 0x64, 0x2e, 0x3b, 0x10d8, 0x10d0, 0x10dc, 0x3b, 0x10d7, 0x10d4, 0x10d1, 0x3b, 0x10db, 0x10d0, 0x10e0, 0x3b, 0x10d0, +0x10de, 0x10e0, 0x3b, 0x10db, 0x10d0, 0x10d8, 0x3b, 0x10d8, 0x10d5, 0x10dc, 0x3b, 0x10d8, 0x10d5, 0x10da, 0x3b, 0x10d0, 0x10d2, 0x10d5, 0x3b, 0x10e1, +0x10d4, 0x10e5, 0x3b, 0x10dd, 0x10e5, 0x10e2, 0x3b, 0x10dc, 0x10dd, 0x10d4, 0x3b, 0x10d3, 0x10d4, 0x10d9, 0x3b, 0x10d8, 0x10d0, 0x10dc, 0x10d5, 0x10d0, +0x10e0, 0x10d8, 0x3b, 0x10d7, 0x10d4, 0x10d1, 0x10d4, 0x10e0, 0x10d5, 0x10d0, 0x10da, 0x10d8, 0x3b, 0x10db, 0x10d0, 0x10e0, 0x10e2, 0x10d8, 0x3b, 0x10d0, +0x10de, 0x10e0, 0x10d8, 0x10da, 0x10d8, 0x3b, 0x10db, 0x10d0, 0x10d8, 0x10e1, 0x10d8, 0x3b, 0x10d8, 0x10d5, 0x10dc, 0x10d8, 0x10e1, 0x10d8, 0x3b, 0x10d8, +0x10d5, 0x10da, 0x10d8, 0x10e1, 0x10d8, 0x3b, 0x10d0, 0x10d2, 0x10d5, 0x10d8, 0x10e1, 0x10e2, 0x10dd, 0x3b, 0x10e1, 0x10d4, 0x10e5, 0x10e2, 0x10d4, 0x10db, +0x10d1, 0x10d4, 0x10e0, 0x10d8, 0x3b, 0x10dd, 0x10e5, 0x10e2, 0x10dd, 0x10db, 0x10d1, 0x10d4, 0x10e0, 0x10d8, 0x3b, 0x10dc, 0x10dd, 0x10d4, 0x10db, 0x10d1, +0x10d4, 0x10e0, 0x10d8, 0x3b, 0x10d3, 0x10d4, 0x10d9, 0x10d4, 0x10db, 0x10d1, 0x10d4, 0x10e0, 0x10d8, 0x3b, 0x10d8, 0x3b, 0x10d7, 0x3b, 0x10db, 0x3b, +0x10d0, 0x3b, 0x10db, 0x3b, 0x10d8, 0x3b, 0x10d8, 0x3b, 0x10d0, 0x3b, 0x10e1, 0x3b, 0x10dd, 0x3b, 0x10dc, 0x3b, 0x10d3, 0x3b, 0x4a, 0x61, +0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0xe4, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, +0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x75, 0x67, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, +0x76, 0x3b, 0x44, 0x65, 0x7a, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, +0x3b, 0x4d, 0xe4, 0x72, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, +0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, +0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, +0x44, 0x65, 0x7a, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x61, 0x6e, 0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, 0x4d, +0xe4, 0x72, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, +0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x2e, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x4f, 0x6b, 0x74, 0x2e, 0x3b, 0x4e, +0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x65, 0x7a, 0x2e, 0x3b, 0x4a, 0xe4, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0xe4, 0x72, +0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x75, 0x67, +0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x7a, 0x3b, 0x4a, 0xe4, 0x6e, +0x6e, 0x65, 0x72, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x4d, 0xe4, 0x72, 0x7a, 0x3b, 0x41, 0x70, 0x72, +0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, +0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, +0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x7a, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, +0x4a, 0xe4, 0x6e, 0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, 0x4d, 0xe4, 0x72, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x2e, 0x3b, +0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x2e, 0x3b, 0x53, +0x65, 0x70, 0x2e, 0x3b, 0x4f, 0x6b, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x65, 0x7a, 0x2e, 0x3b, 0x399, +0x3b1, 0x3bd, 0x3b, 0x3a6, 0x3b5, 0x3b2, 0x3b, 0x39c, 0x3ac, 0x3c1, 0x3b, 0x391, 0x3c0, 0x3c1, 0x3b, 0x39c, 0x3ac, 0x3b9, 0x3b, 0x399, +0x3bf, 0x3cd, 0x3bd, 0x3b, 0x399, 0x3bf, 0x3cd, 0x3bb, 0x3b, 0x391, 0x3cd, 0x3b3, 0x3b, 0x3a3, 0x3b5, 0x3c0, 0x3b, 0x39f, 0x3ba, 0x3c4, +0x3b, 0x39d, 0x3bf, 0x3ad, 0x3b, 0x394, 0x3b5, 0x3ba, 0x3b, 0x399, 0x3b1, 0x3bd, 0x3bf, 0x3c5, 0x3ac, 0x3c1, 0x3b9, 0x3bf, 0x3c2, 0x3b, +0x3a6, 0x3b5, 0x3b2, 0x3c1, 0x3bf, 0x3c5, 0x3ac, 0x3c1, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x39c, 0x3ac, 0x3c1, 0x3c4, 0x3b9, 0x3bf, 0x3c2, 0x3b, +0x391, 0x3c0, 0x3c1, 0x3af, 0x3bb, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x39c, 0x3ac, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x399, 0x3bf, 0x3cd, 0x3bd, 0x3b9, +0x3bf, 0x3c2, 0x3b, 0x399, 0x3bf, 0x3cd, 0x3bb, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x391, 0x3cd, 0x3b3, 0x3bf, 0x3c5, 0x3c3, 0x3c4, 0x3bf, 0x3c2, +0x3b, 0x3a3, 0x3b5, 0x3c0, 0x3c4, 0x3ad, 0x3bc, 0x3b2, 0x3c1, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x39f, 0x3ba, 0x3c4, 0x3ce, 0x3b2, 0x3c1, 0x3b9, +0x3bf, 0x3c2, 0x3b, 0x39d, 0x3bf, 0x3ad, 0x3bc, 0x3b2, 0x3c1, 0x3b9, 0x3bf, 0x3c2, 0x3b, 0x394, 0x3b5, 0x3ba, 0x3ad, 0x3bc, 0x3b2, 0x3c1, +0x3b9, 0x3bf, 0x3c2, 0x3b, 0x399, 0x3b, 0x3a6, 0x3b, 0x39c, 0x3b, 0x391, 0x3b, 0x39c, 0x3b, 0x399, 0x3b, 0x399, 0x3b, 0x391, 0x3b, +0x3a3, 0x3b, 0x39f, 0x3b, 0x39d, 0x3b, 0x394, 0x3b, 0x399, 0x3b1, 0x3bd, 0x3b, 0x3a6, 0x3b5, 0x3b2, 0x3b, 0x39c, 0x3b1, 0x3c1, 0x3b, +0x391, 0x3c0, 0x3c1, 0x3b, 0x39c, 0x3b1, 0x390, 0x3b, 0x399, 0x3bf, 0x3c5, 0x3bd, 0x3b, 0x399, 0x3bf, 0x3c5, 0x3bb, 0x3b, 0x391, 0x3c5, +0x3b3, 0x3b, 0x3a3, 0x3b5, 0x3c0, 0x3b, 0x39f, 0x3ba, 0x3c4, 0x3b, 0x39d, 0x3bf, 0x3b5, 0x3b, 0x394, 0x3b5, 0x3ba, 0x3b, 0x399, 0x3b1, +0x3bd, 0x3bf, 0x3c5, 0x3b1, 0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x3a6, 0x3b5, 0x3b2, 0x3c1, 0x3bf, 0x3c5, 0x3b1, 0x3c1, 0x3af, 0x3bf, 0x3c5, +0x3b, 0x39c, 0x3b1, 0x3c1, 0x3c4, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x391, 0x3c0, 0x3c1, 0x3b9, 0x3bb, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x39c, 0x3b1, +0x390, 0x3bf, 0x3c5, 0x3b, 0x399, 0x3bf, 0x3c5, 0x3bd, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x399, 0x3bf, 0x3c5, 0x3bb, 0x3af, 0x3bf, 0x3c5, 0x3b, +0x391, 0x3c5, 0x3b3, 0x3bf, 0x3cd, 0x3c3, 0x3c4, 0x3bf, 0x3c5, 0x3b, 0x3a3, 0x3b5, 0x3c0, 0x3c4, 0x3b5, 0x3bc, 0x3b2, 0x3c1, 0x3af, 0x3bf, +0x3c5, 0x3b, 0x39f, 0x3ba, 0x3c4, 0x3c9, 0x3b2, 0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x39d, 0x3bf, 0x3b5, 0x3bc, 0x3b2, 0x3c1, 0x3af, 0x3bf, +0x3c5, 0x3b, 0x394, 0x3b5, 0x3ba, 0x3b5, 0x3bc, 0x3b2, 0x3c1, 0x3af, 0x3bf, 0x3c5, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, +0x72, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, +0x6c, 0x3b, 0x61, 0x75, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, +0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x61, 0x72, 0x69, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x61, 0x72, +0x69, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x69, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x69, 0x6c, 0x69, 0x3b, 0x6d, 0x61, 0x61, 0x6a, +0x69, 0x3b, 0x6a, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x67, 0x67, 0x75, 0x73, 0x74, +0x69, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x69, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x72, +0x69, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x69, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x61, 0x72, +0x69, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x61, 0x72, 0x69, 0x70, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x61, 0x72, +0x69, 0x70, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x69, 0x70, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x69, 0x6c, 0x69, 0x70, 0x3b, 0x6d, +0x61, 0x61, 0x6a, 0x69, 0x70, 0x3b, 0x6a, 0x75, 0x75, 0x6e, 0x69, 0x70, 0x3b, 0x6a, 0x75, 0x75, 0x6c, 0x69, 0x70, 0x3b, +0x61, 0x67, 0x67, 0x75, 0x73, 0x74, 0x69, 0x70, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x69, 0x70, +0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x72, 0x69, 0x70, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x69, +0x70, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x69, 0x70, 0x3b, 0xa9c, 0xabe, 0xaa8, 0xacd, 0xaaf, 0xac1, 0x3b, +0xaab, 0xac7, 0xaac, 0xacd, 0xab0, 0xac1, 0x3b, 0xaae, 0xabe, 0xab0, 0xacd, 0xa9a, 0x3b, 0xa8f, 0xaaa, 0xacd, 0xab0, 0xabf, 0xab2, 0x3b, +0xaae, 0xac7, 0x3b, 0xa9c, 0xac2, 0xaa8, 0x3b, 0xa9c, 0xac1, 0xab2, 0xabe, 0xa88, 0x3b, 0xa91, 0xa97, 0xab8, 0xacd, 0xa9f, 0x3b, 0xab8, +0xaaa, 0xacd, 0xa9f, 0xac7, 0x3b, 0xa91, 0xa95, 0xacd, 0xa9f, 0xacb, 0x3b, 0xaa8, 0xab5, 0xac7, 0x3b, 0xaa1, 0xabf, 0xab8, 0xac7, 0x3b, +0xa9c, 0xabe, 0xaa8, 0xacd, 0xaaf, 0xac1, 0xa86, 0xab0, 0xac0, 0x3b, 0xaab, 0xac7, 0xaac, 0xacd, 0xab0, 0xac1, 0xa86, 0xab0, 0xac0, 0x3b, +0xaae, 0xabe, 0xab0, 0xacd, 0xa9a, 0x3b, 0xa8f, 0xaaa, 0xacd, 0xab0, 0xabf, 0xab2, 0x3b, 0xaae, 0xac7, 0x3b, 0xa9c, 0xac2, 0xaa8, 0x3b, +0xa9c, 0xac1, 0xab2, 0xabe, 0xa88, 0x3b, 0xa91, 0xa97, 0xab8, 0xacd, 0xa9f, 0x3b, 0xab8, 0xaaa, 0xacd, 0xa9f, 0xac7, 0xaae, 0xacd, 0xaac, +0xab0, 0x3b, 0xa91, 0xa95, 0xacd, 0xa9f, 0xacb, 0xaac, 0xab0, 0x3b, 0xaa8, 0xab5, 0xac7, 0xaae, 0xacd, 0xaac, 0xab0, 0x3b, 0xaa1, 0xabf, +0xab8, 0xac7, 0xaae, 0xacd, 0xaac, 0xab0, 0x3b, 0xa9c, 0xabe, 0x3b, 0xaab, 0xac7, 0x3b, 0xaae, 0xabe, 0x3b, 0xa8f, 0x3b, 0xaae, 0xac7, +0x3b, 0xa9c, 0xac2, 0x3b, 0xa9c, 0xac1, 0x3b, 0xa91, 0x3b, 0xab8, 0x3b, 0xa91, 0x3b, 0xaa8, 0x3b, 0xaa1, 0xabf, 0x3b, 0x4a, 0x61, +0x6e, 0x3b, 0x46, 0x61, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x66, 0x69, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x59, 0x75, +0x6e, 0x3b, 0x59, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x75, 0x3b, 0x53, 0x61, 0x74, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x75, +0x77, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x61, 0x69, 0x72, 0x75, 0x3b, 0x46, 0x61, 0x62, 0x75, 0x72, 0x61, +0x69, 0x72, 0x75, 0x3b, 0x4d, 0x61, 0x72, 0x69, 0x73, 0x3b, 0x41, 0x66, 0x69, 0x72, 0x69, 0x6c, 0x75, 0x3b, 0x4d, 0x61, +0x79, 0x75, 0x3b, 0x59, 0x75, 0x6e, 0x69, 0x3b, 0x59, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x67, 0x75, 0x73, 0x74, 0x61, 0x3b, +0x53, 0x61, 0x74, 0x75, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x75, 0x77, 0x61, 0x6d, +0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x61, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, +0x3b, 0x59, 0x3b, 0x59, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x5d9, 0x5e0, 0x5d5, 0x5f3, 0x3b, +0x5e4, 0x5d1, 0x5e8, 0x5f3, 0x3b, 0x5de, 0x5e8, 0x5e5, 0x3b, 0x5d0, 0x5e4, 0x5e8, 0x5f3, 0x3b, 0x5de, 0x5d0, 0x5d9, 0x3b, 0x5d9, 0x5d5, +0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dc, 0x5d9, 0x3b, 0x5d0, 0x5d5, 0x5d2, 0x5f3, 0x3b, 0x5e1, 0x5e4, 0x5d8, 0x5f3, 0x3b, 0x5d0, 0x5d5, +0x5e7, 0x5f3, 0x3b, 0x5e0, 0x5d5, 0x5d1, 0x5f3, 0x3b, 0x5d3, 0x5e6, 0x5de, 0x5f3, 0x3b, 0x5d9, 0x5e0, 0x5d5, 0x5d0, 0x5e8, 0x3b, 0x5e4, +0x5d1, 0x5e8, 0x5d5, 0x5d0, 0x5e8, 0x3b, 0x5de, 0x5e8, 0x5e5, 0x3b, 0x5d0, 0x5e4, 0x5e8, 0x5d9, 0x5dc, 0x3b, 0x5de, 0x5d0, 0x5d9, 0x3b, +0x5d9, 0x5d5, 0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dc, 0x5d9, 0x3b, 0x5d0, 0x5d5, 0x5d2, 0x5d5, 0x5e1, 0x5d8, 0x3b, 0x5e1, 0x5e4, 0x5d8, +0x5de, 0x5d1, 0x5e8, 0x3b, 0x5d0, 0x5d5, 0x5e7, 0x5d8, 0x5d5, 0x5d1, 0x5e8, 0x3b, 0x5e0, 0x5d5, 0x5d1, 0x5de, 0x5d1, 0x5e8, 0x3b, 0x5d3, +0x5e6, 0x5de, 0x5d1, 0x5e8, 0x3b, 0x91c, 0x928, 0x970, 0x3b, 0x92b, 0x93c, 0x930, 0x970, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, +0x905, 0x92a, 0x94d, 0x930, 0x948, 0x932, 0x3b, 0x92e, 0x908, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x970, 0x3b, 0x905, +0x917, 0x970, 0x3b, 0x938, 0x93f, 0x924, 0x970, 0x3b, 0x905, 0x915, 0x94d, 0x924, 0x942, 0x970, 0x3b, 0x928, 0x935, 0x970, 0x3b, 0x926, +0x93f, 0x938, 0x970, 0x3b, 0x91c, 0x928, 0x935, 0x930, 0x940, 0x3b, 0x92b, 0x93c, 0x930, 0x935, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, +0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x948, 0x932, 0x3b, 0x92e, 0x908, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, +0x93e, 0x908, 0x3b, 0x905, 0x917, 0x938, 0x94d, 0x924, 0x3b, 0x938, 0x93f, 0x924, 0x902, 0x92c, 0x930, 0x3b, 0x905, 0x915, 0x94d, 0x924, +0x942, 0x92c, 0x930, 0x3b, 0x928, 0x935, 0x902, 0x92c, 0x930, 0x3b, 0x926, 0x93f, 0x938, 0x902, 0x92c, 0x930, 0x3b, 0x91c, 0x3b, 0x92b, +0x93c, 0x3b, 0x92e, 0x93e, 0x3b, 0x905, 0x3b, 0x92e, 0x3b, 0x91c, 0x942, 0x3b, 0x91c, 0x941, 0x3b, 0x905, 0x3b, 0x938, 0x93f, 0x3b, +0x905, 0x3b, 0x928, 0x3b, 0x926, 0x93f, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0xe1, +0x72, 0x63, 0x2e, 0x3b, 0xe1, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0xe1, 0x6a, 0x2e, 0x3b, 0x6a, 0xfa, 0x6e, 0x2e, 0x3b, 0x6a, +0xfa, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x7a, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, +0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0xe1, 0x72, 0x3b, 0x66, 0x65, +0x62, 0x72, 0x75, 0xe1, 0x72, 0x3b, 0x6d, 0xe1, 0x72, 0x63, 0x69, 0x75, 0x73, 0x3b, 0xe1, 0x70, 0x72, 0x69, 0x6c, 0x69, +0x73, 0x3b, 0x6d, 0xe1, 0x6a, 0x75, 0x73, 0x3b, 0x6a, 0xfa, 0x6e, 0x69, 0x75, 0x73, 0x3b, 0x6a, 0xfa, 0x6c, 0x69, 0x75, +0x73, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x7a, 0x74, 0x75, 0x73, 0x3b, 0x73, 0x7a, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, +0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0xf3, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, +0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0xc1, 0x3b, 0x4d, 0x3b, 0x4a, +0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x53, 0x7a, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, +0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0xed, 0x3b, 0x6a, 0xfa, +0x6e, 0x2e, 0x3b, 0x6a, 0xfa, 0x6c, 0x2e, 0x3b, 0xe1, 0x67, 0xfa, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, +0x74, 0x2e, 0x3b, 0x6e, 0xf3, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x73, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0xfa, 0x61, 0x72, 0x3b, +0x66, 0x65, 0x62, 0x72, 0xfa, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0xed, 0x6c, 0x3b, 0x6d, +0x61, 0xed, 0x3b, 0x6a, 0xfa, 0x6e, 0xed, 0x3b, 0x6a, 0xfa, 0x6c, 0xed, 0x3b, 0xe1, 0x67, 0xfa, 0x73, 0x74, 0x3b, 0x73, +0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0xf3, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0xf3, 0x76, +0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, +0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0xc1, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4a, +0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, +0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x75, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, +0x6f, 0x76, 0x3b, 0x44, 0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, +0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x72, 0x65, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x65, 0x69, 0x3b, +0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x67, 0x75, 0x73, 0x74, 0x75, 0x73, 0x3b, 0x53, 0x65, +0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, +0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, +0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, +0x6c, 0x3b, 0x61, 0x75, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x63, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, +0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x6f, +0x3b, 0x6d, 0x61, 0x72, 0x74, 0x69, 0x6f, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x6f, 0x3b, 0x6a, +0x75, 0x6e, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6f, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x6f, 0x3b, 0x73, +0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x63, 0x74, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, +0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6a, 0x3b, 0x66, 0x3b, 0x6d, +0x3b, 0x61, 0x3b, 0x6d, 0x3b, 0x6a, 0x3b, 0x6a, 0x3b, 0x61, 0x3b, 0x73, 0x3b, 0x6f, 0x3b, 0x6e, 0x3b, 0x64, 0x3b, 0x45, +0x61, 0x6e, 0x3b, 0x46, 0x65, 0x61, 0x62, 0x68, 0x3b, 0x4d, 0xe1, 0x72, 0x74, 0x61, 0x3b, 0x41, 0x69, 0x62, 0x3b, 0x42, +0x65, 0x61, 0x6c, 0x3b, 0x4d, 0x65, 0x69, 0x74, 0x68, 0x3b, 0x49, 0xfa, 0x69, 0x6c, 0x3b, 0x4c, 0xfa, 0x6e, 0x3b, 0x4d, +0x46, 0xf3, 0x6d, 0x68, 0x3b, 0x44, 0x46, 0xf3, 0x6d, 0x68, 0x3b, 0x53, 0x61, 0x6d, 0x68, 0x3b, 0x4e, 0x6f, 0x6c, 0x6c, +0x3b, 0x45, 0x61, 0x6e, 0xe1, 0x69, 0x72, 0x3b, 0x46, 0x65, 0x61, 0x62, 0x68, 0x72, 0x61, 0x3b, 0x4d, 0xe1, 0x72, 0x74, +0x61, 0x3b, 0x41, 0x69, 0x62, 0x72, 0x65, 0xe1, 0x6e, 0x3b, 0x42, 0x65, 0x61, 0x6c, 0x74, 0x61, 0x69, 0x6e, 0x65, 0x3b, +0x4d, 0x65, 0x69, 0x74, 0x68, 0x65, 0x61, 0x6d, 0x68, 0x3b, 0x49, 0xfa, 0x69, 0x6c, 0x3b, 0x4c, 0xfa, 0x6e, 0x61, 0x73, +0x61, 0x3b, 0x4d, 0x65, 0xe1, 0x6e, 0x20, 0x46, 0xf3, 0x6d, 0x68, 0x61, 0x69, 0x72, 0x3b, 0x44, 0x65, 0x69, 0x72, 0x65, +0x61, 0x64, 0x68, 0x20, 0x46, 0xf3, 0x6d, 0x68, 0x61, 0x69, 0x72, 0x3b, 0x53, 0x61, 0x6d, 0x68, 0x61, 0x69, 0x6e, 0x3b, +0x4e, 0x6f, 0x6c, 0x6c, 0x61, 0x69, 0x67, 0x3b, 0x45, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x42, 0x3b, 0x4d, 0x3b, +0x49, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x4e, 0x3b, 0x67, 0x65, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, +0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x67, 0x3b, 0x67, 0x69, 0x75, 0x3b, 0x6c, 0x75, 0x67, 0x3b, +0x61, 0x67, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x3b, 0x6f, 0x74, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x69, 0x63, 0x3b, +0x67, 0x65, 0x6e, 0x6e, 0x61, 0x69, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x62, 0x72, 0x61, 0x69, 0x6f, 0x3b, 0x6d, 0x61, 0x72, +0x7a, 0x6f, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x65, 0x3b, 0x6d, 0x61, 0x67, 0x67, 0x69, 0x6f, 0x3b, 0x67, 0x69, 0x75, +0x67, 0x6e, 0x6f, 0x3b, 0x6c, 0x75, 0x67, 0x6c, 0x69, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, +0x74, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x74, 0x74, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x65, +0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x69, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x47, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, +0x41, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x4c, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4a, 0x61, +0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, +0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, +0x76, 0x3b, 0x44, 0x65, 0x73, 0x3b, 0xc9c, 0xca8, 0x3b, 0xcab, 0xcc6, 0xcac, 0xccd, 0xcb0, 0x3b, 0xcae, 0xcbe, 0xcb0, 0xccd, 0xc9a, +0xccd, 0x3b, 0xc8f, 0xcaa, 0xccd, 0xcb0, 0xcbf, 0x3b, 0xcae, 0xcc7, 0x3b, 0xc9c, 0xcc2, 0xca8, 0xccd, 0x3b, 0xc9c, 0xcc1, 0xcb2, 0xcc8, +0x3b, 0xc86, 0xc97, 0x3b, 0xcb8, 0xcc6, 0xcaa, 0xccd, 0xc9f, 0xcc6, 0xc82, 0x3b, 0xc85, 0xc95, 0xccd, 0xc9f, 0xccb, 0x3b, 0xca8, 0xcb5, +0xcc6, 0xc82, 0x3b, 0xca1, 0xcbf, 0xcb8, 0xcc6, 0xc82, 0x3b, 0xc9c, 0xca8, 0xcb5, 0xcb0, 0xcbf, 0x3b, 0xcab, 0xcc6, 0xcac, 0xccd, 0xcb0, +0xcb5, 0xcb0, 0xcbf, 0x3b, 0xcae, 0xcbe, 0xcb0, 0xccd, 0xc9a, 0xccd, 0x3b, 0xc8f, 0xcaa, 0xccd, 0xcb0, 0xcbf, 0xcb2, 0xccd, 0x3b, 0xcae, +0xcc7, 0x3b, 0xc9c, 0xcc2, 0xca8, 0xccd, 0x3b, 0xc9c, 0xcc1, 0xcb2, 0xcc8, 0x3b, 0xc86, 0xc97, 0xcb8, 0xccd, 0xc9f, 0xccd, 0x3b, 0xcb8, +0xcc6, 0xcaa, 0xccd, 0xc9f, 0xcc6, 0xc82, 0xcac, 0xcb0, 0xccd, 0x3b, 0xc85, 0xc95, 0xccd, 0xc9f, 0xccb, 0xcac, 0xcb0, 0xccd, 0x3b, 0xca8, +0xcb5, 0xcc6, 0xc82, 0xcac, 0xcb0, 0xccd, 0x3b, 0xca1, 0xcbf, 0xcb8, 0xcc6, 0xc82, 0xcac, 0xcb0, 0xccd, 0x3b, 0xc9c, 0x3b, 0xcab, 0xcc6, +0x3b, 0xcae, 0xcbe, 0x3b, 0xc8f, 0x3b, 0xcae, 0xcc7, 0x3b, 0xc9c, 0xcc2, 0x3b, 0xc9c, 0xcc1, 0x3b, 0xc86, 0x3b, 0xcb8, 0xcc6, 0x3b, +0xc85, 0x3b, 0xca8, 0x3b, 0xca1, 0xcbf, 0x3b, 0xc9c, 0xca8, 0xcb5, 0xcb0, 0xcbf, 0x3b, 0xcab, 0xcc6, 0xcac, 0xccd, 0xcb0, 0xcb5, 0xcb0, +0xcbf, 0x3b, 0xcae, 0xcbe, 0xcb0, 0xccd, 0xc9a, 0xccd, 0x3b, 0xc8f, 0xcaa, 0xccd, 0xcb0, 0xcbf, 0x3b, 0xcae, 0xcc7, 0x3b, 0xc9c, 0xcc2, +0xca8, 0xccd, 0x3b, 0xc9c, 0xcc1, 0xcb2, 0xcc8, 0x3b, 0xc86, 0xc97, 0x3b, 0xcb8, 0xcc6, 0xcaa, 0xccd, 0xc9f, 0xcc6, 0xc82, 0x3b, 0xc85, +0xc95, 0xccd, 0xc9f, 0xccb, 0x3b, 0xca8, 0xcb5, 0xcc6, 0xc82, 0x3b, 0xca1, 0xcbf, 0xcb8, 0xcc6, 0xc82, 0x3b, 0x62c, 0x646, 0x624, 0x631, +0x6cc, 0x3b, 0x641, 0x631, 0x624, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x655, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, +0x645, 0x6cc, 0x654, 0x3b, 0x62c, 0x648, 0x657, 0x646, 0x3b, 0x62c, 0x648, 0x657, 0x644, 0x627, 0x6cc, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, +0x62a, 0x3b, 0x633, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x657, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, +0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x62c, 0x3b, 0x641, 0x3b, 0x645, 0x3b, 0x627, 0x3b, 0x645, 0x3b, 0x62c, 0x3b, +0x62c, 0x3b, 0x627, 0x3b, 0x633, 0x3b, 0x633, 0x3b, 0x627, 0x3b, 0x646, 0x3b, 0x49b, 0x430, 0x4a3, 0x2e, 0x3b, 0x430, 0x49b, 0x43f, +0x2e, 0x3b, 0x43d, 0x430, 0x443, 0x2e, 0x3b, 0x441, 0x4d9, 0x443, 0x2e, 0x3b, 0x43c, 0x430, 0x43c, 0x2e, 0x3b, 0x43c, 0x430, 0x443, +0x2e, 0x3b, 0x448, 0x456, 0x43b, 0x2e, 0x3b, 0x442, 0x430, 0x43c, 0x2e, 0x3b, 0x49b, 0x44b, 0x440, 0x2e, 0x3b, 0x49b, 0x430, 0x437, +0x2e, 0x3b, 0x49b, 0x430, 0x440, 0x2e, 0x3b, 0x436, 0x435, 0x43b, 0x2e, 0x3b, 0x49a, 0x430, 0x4a3, 0x442, 0x430, 0x440, 0x3b, 0x410, +0x49b, 0x43f, 0x430, 0x43d, 0x3b, 0x41d, 0x430, 0x443, 0x440, 0x44b, 0x437, 0x3b, 0x421, 0x4d9, 0x443, 0x456, 0x440, 0x3b, 0x41c, 0x430, +0x43c, 0x44b, 0x440, 0x3b, 0x41c, 0x430, 0x443, 0x441, 0x44b, 0x43c, 0x3b, 0x428, 0x456, 0x43b, 0x434, 0x435, 0x3b, 0x422, 0x430, 0x43c, +0x44b, 0x437, 0x3b, 0x49a, 0x44b, 0x440, 0x43a, 0x4af, 0x439, 0x435, 0x43a, 0x3b, 0x49a, 0x430, 0x437, 0x430, 0x43d, 0x3b, 0x49a, 0x430, +0x440, 0x430, 0x448, 0x430, 0x3b, 0x416, 0x435, 0x43b, 0x442, 0x43e, 0x49b, 0x441, 0x430, 0x43d, 0x3b, 0x49a, 0x3b, 0x410, 0x3b, 0x41d, +0x3b, 0x421, 0x3b, 0x41c, 0x3b, 0x41c, 0x3b, 0x428, 0x3b, 0x422, 0x3b, 0x49a, 0x3b, 0x49a, 0x3b, 0x49a, 0x3b, 0x416, 0x3b, 0x49b, +0x430, 0x4a3, 0x442, 0x430, 0x440, 0x3b, 0x430, 0x49b, 0x43f, 0x430, 0x43d, 0x3b, 0x43d, 0x430, 0x443, 0x440, 0x44b, 0x437, 0x3b, 0x441, +0x4d9, 0x443, 0x456, 0x440, 0x3b, 0x43c, 0x430, 0x43c, 0x44b, 0x440, 0x3b, 0x43c, 0x430, 0x443, 0x441, 0x44b, 0x43c, 0x3b, 0x448, 0x456, +0x43b, 0x434, 0x435, 0x3b, 0x442, 0x430, 0x43c, 0x44b, 0x437, 0x3b, 0x49b, 0x44b, 0x440, 0x43a, 0x4af, 0x439, 0x435, 0x43a, 0x3b, 0x49b, +0x430, 0x437, 0x430, 0x43d, 0x3b, 0x49b, 0x430, 0x440, 0x430, 0x448, 0x430, 0x3b, 0x436, 0x435, 0x43b, 0x442, 0x43e, 0x49b, 0x441, 0x430, +0x43d, 0x3b, 0x6d, 0x75, 0x74, 0x2e, 0x3b, 0x67, 0x61, 0x73, 0x2e, 0x3b, 0x77, 0x65, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x74, +0x2e, 0x3b, 0x67, 0x69, 0x63, 0x2e, 0x3b, 0x6b, 0x61, 0x6d, 0x2e, 0x3b, 0x6e, 0x79, 0x61, 0x2e, 0x3b, 0x6b, 0x61, 0x6e, +0x2e, 0x3b, 0x6e, 0x7a, 0x65, 0x2e, 0x3b, 0x75, 0x6b, 0x77, 0x2e, 0x3b, 0x75, 0x67, 0x75, 0x2e, 0x3b, 0x75, 0x6b, 0x75, +0x2e, 0x3b, 0x4d, 0x75, 0x74, 0x61, 0x72, 0x61, 0x6d, 0x61, 0x3b, 0x47, 0x61, 0x73, 0x68, 0x79, 0x61, 0x6e, 0x74, 0x61, +0x72, 0x65, 0x3b, 0x57, 0x65, 0x72, 0x75, 0x72, 0x77, 0x65, 0x3b, 0x4d, 0x61, 0x74, 0x61, 0x3b, 0x47, 0x69, 0x63, 0x75, +0x72, 0x61, 0x6e, 0x73, 0x69, 0x3b, 0x4b, 0x61, 0x6d, 0x65, 0x6e, 0x61, 0x3b, 0x4e, 0x79, 0x61, 0x6b, 0x61, 0x6e, 0x67, +0x61, 0x3b, 0x4b, 0x61, 0x6e, 0x61, 0x6d, 0x61, 0x3b, 0x4e, 0x7a, 0x65, 0x6c, 0x69, 0x3b, 0x55, 0x6b, 0x77, 0x61, 0x6b, +0x69, 0x72, 0x61, 0x3b, 0x55, 0x67, 0x75, 0x73, 0x68, 0x79, 0x69, 0x6e, 0x67, 0x6f, 0x3b, 0x55, 0x6b, 0x75, 0x62, 0x6f, +0x7a, 0x61, 0x3b, 0x42f, 0x43d, 0x432, 0x3b, 0x424, 0x435, 0x432, 0x3b, 0x41c, 0x430, 0x440, 0x3b, 0x410, 0x43f, 0x440, 0x3b, 0x41c, +0x430, 0x439, 0x3b, 0x418, 0x44e, 0x43d, 0x3b, 0x418, 0x44e, 0x43b, 0x3b, 0x410, 0x432, 0x433, 0x3b, 0x421, 0x435, 0x43d, 0x3b, 0x41e, +0x43a, 0x442, 0x3b, 0x41d, 0x43e, 0x44f, 0x3b, 0x414, 0x435, 0x43a, 0x3b, 0x42f, 0x43d, 0x432, 0x430, 0x440, 0x44c, 0x3b, 0x424, 0x435, +0x432, 0x440, 0x430, 0x43b, 0x44c, 0x3b, 0x41c, 0x430, 0x440, 0x442, 0x3b, 0x410, 0x43f, 0x440, 0x435, 0x43b, 0x44c, 0x3b, 0x41c, 0x430, +0x439, 0x3b, 0x418, 0x44e, 0x43d, 0x44c, 0x3b, 0x418, 0x44e, 0x43b, 0x44c, 0x3b, 0x410, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x421, +0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x41e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x41d, 0x43e, 0x44f, 0x431, +0x440, 0x44c, 0x3b, 0x414, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44c, 0x3b, 0x42f, 0x3b, 0x424, 0x3b, 0x41c, 0x3b, 0x410, 0x3b, 0x41c, +0x3b, 0x418, 0x3b, 0x418, 0x3b, 0x410, 0x3b, 0x421, 0x3b, 0x41e, 0x3b, 0x41d, 0x3b, 0x414, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, +0x444, 0x435, 0x432, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, +0x44e, 0x43d, 0x2e, 0x3b, 0x438, 0x44e, 0x43b, 0x2e, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x2e, 0x3b, 0x43e, +0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x44f, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, 0x44c, +0x3b, 0x444, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x44c, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x44c, +0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x44c, 0x3b, 0x438, 0x44e, 0x43b, 0x44c, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, +0x442, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x43d, +0x43e, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44c, 0x3b, 0x31, 0xc6d4, 0x3b, 0x32, 0xc6d4, 0x3b, +0x33, 0xc6d4, 0x3b, 0x34, 0xc6d4, 0x3b, 0x35, 0xc6d4, 0x3b, 0x36, 0xc6d4, 0x3b, 0x37, 0xc6d4, 0x3b, 0x38, 0xc6d4, 0x3b, 0x39, 0xc6d4, +0x3b, 0x31, 0x30, 0xc6d4, 0x3b, 0x31, 0x31, 0xc6d4, 0x3b, 0x31, 0x32, 0xc6d4, 0x3b, 0x72, 0xea, 0x62, 0x3b, 0x72, 0x65, 0x15f, +0x3b, 0x61, 0x64, 0x61, 0x3b, 0x61, 0x76, 0x72, 0x3b, 0x67, 0x75, 0x6c, 0x3b, 0x70, 0xfb, 0x15f, 0x3b, 0x74, 0xee, 0x72, +0x3b, 0x67, 0x65, 0x6c, 0x3b, 0x72, 0x65, 0x7a, 0x3b, 0x6b, 0x65, 0x77, 0x3b, 0x73, 0x65, 0x72, 0x3b, 0x62, 0x65, 0x72, +0x3b, 0x72, 0xea, 0x62, 0x65, 0x6e, 0x64, 0x61, 0x6e, 0x3b, 0x72, 0x65, 0x15f, 0x65, 0x6d, 0xee, 0x3b, 0x61, 0x64, 0x61, +0x72, 0x3b, 0x61, 0x76, 0x72, 0xea, 0x6c, 0x3b, 0x67, 0x75, 0x6c, 0x61, 0x6e, 0x3b, 0x70, 0xfb, 0x15f, 0x70, 0x65, 0x72, +0x3b, 0x74, 0xee, 0x72, 0x6d, 0x65, 0x68, 0x3b, 0x67, 0x65, 0x6c, 0x61, 0x77, 0xea, 0x6a, 0x3b, 0x72, 0x65, 0x7a, 0x62, +0x65, 0x72, 0x3b, 0x6b, 0x65, 0x77, 0xe7, 0xea, 0x72, 0x3b, 0x73, 0x65, 0x72, 0x6d, 0x61, 0x77, 0x65, 0x7a, 0x3b, 0x62, +0x65, 0x72, 0x66, 0x61, 0x6e, 0x62, 0x61, 0x72, 0x3b, 0x52, 0x3b, 0x52, 0x3b, 0x41, 0x3b, 0x41, 0x3b, 0x47, 0x3b, 0x50, +0x3b, 0x54, 0x3b, 0x47, 0x3b, 0x52, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x42, 0x3b, 0x72, 0xea, 0x62, 0x65, 0x6e, 0x64, 0x61, +0x6e, 0xea, 0x3b, 0x72, 0x65, 0x15f, 0x65, 0x6d, 0x69, 0x79, 0xea, 0x3b, 0x61, 0x64, 0x61, 0x72, 0xea, 0x3b, 0x61, 0x76, +0x72, 0xea, 0x6c, 0xea, 0x3b, 0x67, 0x75, 0x6c, 0x61, 0x6e, 0xea, 0x3b, 0x70, 0xfb, 0x15f, 0x70, 0x65, 0x72, 0xea, 0x3b, +0x74, 0xee, 0x72, 0x6d, 0x65, 0x68, 0xea, 0x3b, 0x67, 0x65, 0x6c, 0x61, 0x77, 0xea, 0x6a, 0xea, 0x3b, 0x72, 0x65, 0x7a, +0x62, 0x65, 0x72, 0xea, 0x3b, 0x6b, 0x65, 0x77, 0xe7, 0xea, 0x72, 0xea, 0x3b, 0x73, 0x65, 0x72, 0x6d, 0x61, 0x77, 0x65, +0x7a, 0xea, 0x3b, 0x62, 0x65, 0x72, 0x66, 0x61, 0x6e, 0x62, 0x61, 0x72, 0xea, 0x3b, 0x4d, 0x75, 0x74, 0x2e, 0x3b, 0x47, +0x61, 0x73, 0x2e, 0x3b, 0x57, 0x65, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x74, 0x2e, 0x3b, 0x47, 0x69, 0x63, 0x2e, 0x3b, 0x4b, +0x61, 0x6d, 0x2e, 0x3b, 0x4e, 0x79, 0x61, 0x2e, 0x3b, 0x4b, 0x61, 0x6e, 0x2e, 0x3b, 0x4e, 0x7a, 0x65, 0x2e, 0x3b, 0x55, +0x6b, 0x77, 0x2e, 0x3b, 0x55, 0x67, 0x75, 0x2e, 0x3b, 0x55, 0x6b, 0x75, 0x2e, 0x3b, 0x4e, 0x7a, 0x65, 0x72, 0x6f, 0x3b, +0x52, 0x75, 0x68, 0x75, 0x68, 0x75, 0x6d, 0x61, 0x3b, 0x4e, 0x74, 0x77, 0x61, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x3b, 0x4e, +0x64, 0x61, 0x6d, 0x75, 0x6b, 0x69, 0x7a, 0x61, 0x3b, 0x52, 0x75, 0x73, 0x61, 0x6d, 0x61, 0x3b, 0x52, 0x75, 0x68, 0x65, +0x73, 0x68, 0x69, 0x3b, 0x4d, 0x75, 0x6b, 0x61, 0x6b, 0x61, 0x72, 0x6f, 0x3b, 0x4e, 0x79, 0x61, 0x6e, 0x64, 0x61, 0x67, +0x61, 0x72, 0x6f, 0x3b, 0x4e, 0x79, 0x61, 0x6b, 0x61, 0x6e, 0x67, 0x61, 0x3b, 0x47, 0x69, 0x74, 0x75, 0x67, 0x75, 0x74, +0x75, 0x3b, 0x4d, 0x75, 0x6e, 0x79, 0x6f, 0x6e, 0x79, 0x6f, 0x3b, 0x4b, 0x69, 0x67, 0x61, 0x72, 0x61, 0x6d, 0x61, 0x3b, +0xea1, 0x2e, 0xe81, 0x2e, 0x3b, 0xe81, 0x2e, 0xe9e, 0x2e, 0x3b, 0xea1, 0x2e, 0xe99, 0x2e, 0x3b, 0xea1, 0x2e, 0xeaa, 0x2e, 0x3b, +0xe9e, 0x2e, 0xe9e, 0x2e, 0x3b, 0xea1, 0xeb4, 0x2e, 0xe96, 0x2e, 0x3b, 0xe81, 0x2e, 0xea5, 0x2e, 0x3b, 0xeaa, 0x2e, 0xeab, 0x2e, +0x3b, 0xe81, 0x2e, 0xe8d, 0x2e, 0x3b, 0xe95, 0x2e, 0xea5, 0x2e, 0x3b, 0xe9e, 0x2e, 0xe88, 0x2e, 0x3b, 0xe97, 0x2e, 0xea7, 0x2e, +0x3b, 0xea1, 0xeb1, 0xe87, 0xe81, 0xead, 0xe99, 0x3b, 0xe81, 0xeb8, 0xea1, 0xe9e, 0xeb2, 0x3b, 0xea1, 0xeb5, 0xe99, 0xeb2, 0x3b, 0xec0, +0xea1, 0xeaa, 0xeb2, 0x3b, 0xe9e, 0xeb6, 0xe94, 0xeaa, 0xeb0, 0xe9e, 0xeb2, 0x3b, 0xea1, 0xeb4, 0xe96, 0xeb8, 0xe99, 0xeb2, 0x3b, 0xe81, +0xecd, 0xea5, 0xeb0, 0xe81, 0xebb, 0xe94, 0x3b, 0xeaa, 0xeb4, 0xe87, 0xeab, 0xeb2, 0x3b, 0xe81, 0xeb1, 0xe99, 0xe8d, 0xeb2, 0x3b, 0xe95, +0xeb8, 0xea5, 0xeb2, 0x3b, 0xe9e, 0xeb0, 0xe88, 0xeb4, 0xe81, 0x3b, 0xe97, 0xeb1, 0xe99, 0xea7, 0xeb2, 0x3b, 0x6a, 0x61, 0x6e, 0x76, +0x2e, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, +0x61, 0x69, 0x6a, 0x73, 0x3b, 0x6a, 0x16b, 0x6e, 0x2e, 0x3b, 0x6a, 0x16b, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, +0x73, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, +0x3b, 0x6a, 0x61, 0x6e, 0x76, 0x101, 0x72, 0x69, 0x73, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x101, 0x72, 0x69, 0x73, 0x3b, +0x6d, 0x61, 0x72, 0x74, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x12b, 0x6c, 0x69, 0x73, 0x3b, 0x6d, 0x61, 0x69, 0x6a, 0x73, 0x3b, +0x6a, 0x16b, 0x6e, 0x69, 0x6a, 0x73, 0x3b, 0x6a, 0x16b, 0x6c, 0x69, 0x6a, 0x73, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, +0x73, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x69, +0x73, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x73, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x69, +0x73, 0x3b, 0x79, 0x61, 0x6e, 0x3b, 0x66, 0x62, 0x6c, 0x3b, 0x6d, 0x73, 0x69, 0x3b, 0x61, 0x70, 0x6c, 0x3b, 0x6d, 0x61, +0x69, 0x3b, 0x79, 0x75, 0x6e, 0x3b, 0x79, 0x75, 0x6c, 0x3b, 0x61, 0x67, 0x74, 0x3b, 0x73, 0x74, 0x62, 0x3b, 0x254, 0x74, +0x62, 0x3b, 0x6e, 0x76, 0x62, 0x3b, 0x64, 0x73, 0x62, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x79, +0x61, 0x6d, 0x62, 0x6f, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x62, 0x61, 0x6c, 0xe9, +0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x73, 0xe1, 0x74, 0x6f, 0x3b, 0x73, 0xe1, 0x6e, +0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0xed, 0x6e, 0x65, 0x69, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, +0x20, 0x6d, 0xed, 0x74, 0xe1, 0x6e, 0x6f, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0x6f, 0x74, +0xf3, 0x62, 0xe1, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6e, 0x73, 0x61, 0x6d, 0x62, 0x6f, 0x3b, +0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x6d, 0x77, 0x61, 0x6d, 0x62, 0x65, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, +0xe1, 0x20, 0x79, 0x61, 0x20, 0x6c, 0x69, 0x62, 0x77, 0x61, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, +0x7a, 0xf3, 0x6d, 0x69, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x7a, 0xf3, 0x6d, 0x69, 0x20, 0x6e, +0x61, 0x20, 0x6d, 0x254, 0x30c, 0x6b, 0x254, 0x301, 0x3b, 0x73, 0xe1, 0x6e, 0x7a, 0xe1, 0x20, 0x79, 0x61, 0x20, 0x7a, 0xf3, +0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0xed, 0x62, 0x61, 0x6c, 0xe9, 0x3b, 0x79, 0x3b, 0x66, 0x3b, 0x6d, 0x3b, 0x61, +0x3b, 0x6d, 0x3b, 0x79, 0x3b, 0x79, 0x3b, 0x61, 0x3b, 0x73, 0x3b, 0x254, 0x3b, 0x6e, 0x3b, 0x64, 0x3b, 0x73, 0x61, 0x75, +0x73, 0x2e, 0x3b, 0x76, 0x61, 0x73, 0x2e, 0x3b, 0x6b, 0x6f, 0x76, 0x2e, 0x3b, 0x62, 0x61, 0x6c, 0x2e, 0x3b, 0x67, 0x65, +0x67, 0x2e, 0x3b, 0x62, 0x69, 0x72, 0x17e, 0x2e, 0x3b, 0x6c, 0x69, 0x65, 0x70, 0x2e, 0x3b, 0x72, 0x75, 0x67, 0x70, 0x2e, +0x3b, 0x72, 0x75, 0x67, 0x73, 0x2e, 0x3b, 0x73, 0x70, 0x61, 0x6c, 0x2e, 0x3b, 0x6c, 0x61, 0x70, 0x6b, 0x72, 0x2e, 0x3b, +0x67, 0x72, 0x75, 0x6f, 0x64, 0x2e, 0x3b, 0x73, 0x61, 0x75, 0x73, 0x69, 0x73, 0x3b, 0x76, 0x61, 0x73, 0x61, 0x72, 0x69, +0x73, 0x3b, 0x6b, 0x6f, 0x76, 0x61, 0x73, 0x3b, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x64, 0x69, 0x73, 0x3b, 0x67, 0x65, 0x67, +0x75, 0x17e, 0x117, 0x3b, 0x62, 0x69, 0x72, 0x17e, 0x65, 0x6c, 0x69, 0x73, 0x3b, 0x6c, 0x69, 0x65, 0x70, 0x61, 0x3b, 0x72, +0x75, 0x67, 0x70, 0x6a, 0x16b, 0x74, 0x69, 0x73, 0x3b, 0x72, 0x75, 0x67, 0x73, 0x117, 0x6a, 0x69, 0x73, 0x3b, 0x73, 0x70, +0x61, 0x6c, 0x69, 0x73, 0x3b, 0x6c, 0x61, 0x70, 0x6b, 0x72, 0x69, 0x74, 0x69, 0x73, 0x3b, 0x67, 0x72, 0x75, 0x6f, 0x64, +0x69, 0x73, 0x3b, 0x53, 0x3b, 0x56, 0x3b, 0x4b, 0x3b, 0x42, 0x3b, 0x47, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x52, 0x3b, 0x52, +0x3b, 0x53, 0x3b, 0x4c, 0x3b, 0x47, 0x3b, 0x73, 0x61, 0x75, 0x73, 0x69, 0x6f, 0x3b, 0x76, 0x61, 0x73, 0x61, 0x72, 0x69, +0x6f, 0x3b, 0x6b, 0x6f, 0x76, 0x6f, 0x3b, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x64, 0x17e, 0x69, 0x6f, 0x3b, 0x67, 0x65, 0x67, +0x75, 0x17e, 0x117, 0x73, 0x3b, 0x62, 0x69, 0x72, 0x17e, 0x65, 0x6c, 0x69, 0x6f, 0x3b, 0x6c, 0x69, 0x65, 0x70, 0x6f, 0x73, +0x3b, 0x72, 0x75, 0x67, 0x70, 0x6a, 0x16b, 0x10d, 0x69, 0x6f, 0x3b, 0x72, 0x75, 0x67, 0x73, 0x117, 0x6a, 0x6f, 0x3b, 0x73, +0x70, 0x61, 0x6c, 0x69, 0x6f, 0x3b, 0x6c, 0x61, 0x70, 0x6b, 0x72, 0x69, 0x10d, 0x69, 0x6f, 0x3b, 0x67, 0x72, 0x75, 0x6f, +0x64, 0x17e, 0x69, 0x6f, 0x3b, 0x458, 0x430, 0x43d, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x2e, 0x3b, +0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x2e, 0x3b, 0x458, 0x443, 0x43b, 0x2e, 0x3b, 0x430, +0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x435, 0x43c, 0x2e, +0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x458, 0x430, 0x43d, 0x443, 0x430, 0x440, 0x438, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x443, 0x430, +0x440, 0x438, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x438, 0x43b, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, +0x43d, 0x438, 0x3b, 0x458, 0x443, 0x43b, 0x438, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x435, +0x43c, 0x432, 0x440, 0x438, 0x3b, 0x43e, 0x43a, 0x442, 0x43e, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x43d, 0x43e, 0x435, 0x43c, 0x432, 0x440, +0x438, 0x3b, 0x434, 0x435, 0x43a, 0x435, 0x43c, 0x432, 0x440, 0x438, 0x3b, 0x458, 0x3b, 0x444, 0x3b, 0x43c, 0x3b, 0x430, 0x3b, 0x43c, +0x3b, 0x458, 0x3b, 0x458, 0x3b, 0x430, 0x3b, 0x441, 0x3b, 0x43e, 0x3b, 0x43d, 0x3b, 0x434, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, +0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x79, 0x3b, 0x4a, 0x6f, 0x6e, 0x3b, 0x4a, +0x6f, 0x6c, 0x3b, 0x41, 0x6f, 0x67, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, +0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x6f, 0x61, 0x72, 0x79, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x6f, 0x61, 0x72, 0x79, 0x3b, +0x4d, 0x61, 0x72, 0x74, 0x73, 0x61, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x79, 0x3b, 0x4d, 0x65, 0x79, 0x3b, 0x4a, 0x6f, +0x6e, 0x61, 0x3b, 0x4a, 0x6f, 0x6c, 0x61, 0x79, 0x3b, 0x41, 0x6f, 0x67, 0x6f, 0x73, 0x69, 0x74, 0x72, 0x61, 0x3b, 0x53, +0x65, 0x70, 0x74, 0x61, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x61, 0x3b, 0x4e, 0x6f, 0x76, +0x61, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x44, 0x65, 0x73, 0x61, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, +0x65, 0x62, 0x3b, 0x4d, 0x61, 0x63, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, +0x75, 0x6c, 0x3b, 0x4f, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, +0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, +0x4d, 0x61, 0x63, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, +0x6c, 0x61, 0x69, 0x3b, 0x4f, 0x67, 0x6f, 0x73, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, +0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x69, 0x73, 0x65, +0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4f, +0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0xd1c, 0xd28, 0xd41, 0x3b, 0xd2b, 0xd46, 0xd2c, 0xd4d, 0xd30, 0xd41, 0x3b, +0xd2e, 0xd3e, 0xd7c, 0x3b, 0xd0f, 0xd2a, 0xd4d, 0xd30, 0xd3f, 0x3b, 0xd2e, 0xd47, 0xd2f, 0xd4d, 0x3b, 0xd1c, 0xd42, 0xd7a, 0x3b, 0xd1c, +0xd42, 0xd32, 0xd48, 0x3b, 0xd13, 0xd17, 0x3b, 0xd38, 0xd46, 0xd2a, 0xd4d, 0xd31, 0xd4d, 0xd31, 0xd02, 0x3b, 0xd12, 0xd15, 0xd4d, 0xd1f, +0xd4b, 0x3b, 0xd28, 0xd35, 0xd02, 0x3b, 0xd21, 0xd3f, 0xd38, 0xd02, 0x3b, 0xd1c, 0xd28, 0xd41, 0xd35, 0xd30, 0xd3f, 0x3b, 0xd2b, 0xd46, +0xd2c, 0xd4d, 0xd30, 0xd41, 0xd35, 0xd30, 0xd3f, 0x3b, 0xd2e, 0xd3e, 0xd7c, 0xd1a, 0xd4d, 0xd1a, 0xd4d, 0x3b, 0xd0f, 0xd2a, 0xd4d, 0xd30, +0xd3f, 0xd7d, 0x3b, 0xd2e, 0xd47, 0xd2f, 0xd4d, 0x3b, 0xd1c, 0xd42, 0xd7a, 0x3b, 0xd1c, 0xd42, 0xd32, 0xd48, 0x3b, 0xd13, 0xd17, 0xd38, +0xd4d, 0xd31, 0xd4d, 0xd31, 0xd4d, 0x3b, 0xd38, 0xd46, 0xd2a, 0xd4d, 0xd31, 0xd4d, 0xd31, 0xd02, 0xd2c, 0xd7c, 0x3b, 0xd12, 0xd15, 0xd4d, +0x200c, 0xd1f, 0xd4b, 0xd2c, 0xd7c, 0x3b, 0xd28, 0xd35, 0xd02, 0xd2c, 0xd7c, 0x3b, 0xd21, 0xd3f, 0xd38, 0xd02, 0xd2c, 0xd7c, 0x3b, 0xd1c, +0x3b, 0xd2b, 0xd46, 0x3b, 0xd2e, 0xd3e, 0x3b, 0xd0f, 0x3b, 0xd2e, 0xd46, 0x3b, 0xd1c, 0xd42, 0xd7a, 0x3b, 0xd1c, 0xd42, 0x3b, 0xd13, +0x3b, 0xd38, 0xd46, 0x3b, 0xd12, 0x3b, 0xd28, 0x3b, 0xd21, 0xd3f, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x72, 0x61, 0x3b, 0x4d, +0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x6a, 0x3b, 0x120, 0x75, 0x6e, 0x3b, 0x4c, 0x75, 0x6c, 0x3b, 0x41, +0x77, 0x77, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x74, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x10b, 0x3b, 0x4a, +0x61, 0x6e, 0x6e, 0x61, 0x72, 0x3b, 0x46, 0x72, 0x61, 0x72, 0x3b, 0x4d, 0x61, 0x72, 0x7a, 0x75, 0x3b, 0x41, 0x70, 0x72, +0x69, 0x6c, 0x3b, 0x4d, 0x65, 0x6a, 0x6a, 0x75, 0x3b, 0x120, 0x75, 0x6e, 0x6a, 0x75, 0x3b, 0x4c, 0x75, 0x6c, 0x6a, 0x75, +0x3b, 0x41, 0x77, 0x77, 0x69, 0x73, 0x73, 0x75, 0x3b, 0x53, 0x65, 0x74, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x75, 0x3b, 0x4f, +0x74, 0x74, 0x75, 0x62, 0x72, 0x75, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x75, 0x3b, 0x44, 0x69, 0x10b, 0x65, +0x6d, 0x62, 0x72, 0x75, 0x3b, 0x4a, 0x6e, 0x3b, 0x46, 0x72, 0x3b, 0x4d, 0x7a, 0x3b, 0x41, 0x70, 0x3b, 0x4d, 0x6a, 0x3b, +0x120, 0x6e, 0x3b, 0x4c, 0x6a, 0x3b, 0x41, 0x77, 0x3b, 0x53, 0x74, 0x3b, 0x4f, 0x62, 0x3b, 0x4e, 0x76, 0x3b, 0x44, 0x10b, +0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x120, 0x3b, 0x4c, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, +0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4b, 0x6f, 0x68, 0x69, 0x3b, 0x48, 0x75, 0x69, 0x3b, 0x50, 0x6f, 0x75, 0x3b, 0x50, 0x61, +0x65, 0x3b, 0x48, 0x61, 0x72, 0x61, 0x3b, 0x50, 0x69, 0x70, 0x69, 0x3b, 0x48, 0x14d, 0x6e, 0x67, 0x6f, 0x3b, 0x48, 0x65, +0x72, 0x65, 0x3b, 0x4d, 0x61, 0x68, 0x75, 0x3b, 0x4e, 0x75, 0x6b, 0x75, 0x3b, 0x52, 0x61, 0x6e, 0x67, 0x69, 0x3b, 0x48, +0x61, 0x6b, 0x69, 0x3b, 0x4b, 0x6f, 0x68, 0x69, 0x74, 0x101, 0x74, 0x65, 0x61, 0x3b, 0x48, 0x75, 0x69, 0x74, 0x61, 0x6e, +0x67, 0x75, 0x72, 0x75, 0x3b, 0x50, 0x6f, 0x75, 0x74, 0x16b, 0x74, 0x65, 0x72, 0x61, 0x6e, 0x67, 0x69, 0x3b, 0x50, 0x61, +0x65, 0x6e, 0x67, 0x61, 0x77, 0x68, 0x101, 0x77, 0x68, 0x101, 0x3b, 0x48, 0x61, 0x72, 0x61, 0x74, 0x75, 0x61, 0x3b, 0x50, +0x69, 0x70, 0x69, 0x72, 0x69, 0x3b, 0x48, 0x14d, 0x6e, 0x67, 0x6f, 0x6e, 0x67, 0x6f, 0x69, 0x3b, 0x48, 0x65, 0x72, 0x65, +0x74, 0x75, 0x72, 0x69, 0x6b, 0x14d, 0x6b, 0x101, 0x3b, 0x4d, 0x61, 0x68, 0x75, 0x72, 0x75, 0x3b, 0x57, 0x68, 0x69, 0x72, +0x69, 0x6e, 0x67, 0x61, 0x2d, 0x101, 0x2d, 0x6e, 0x75, 0x6b, 0x75, 0x3b, 0x57, 0x68, 0x69, 0x72, 0x69, 0x6e, 0x67, 0x61, +0x2d, 0x101, 0x2d, 0x72, 0x61, 0x6e, 0x67, 0x69, 0x3b, 0x48, 0x61, 0x6b, 0x69, 0x68, 0x65, 0x61, 0x3b, 0x4b, 0x3b, 0x48, +0x3b, 0x50, 0x3b, 0x50, 0x3b, 0x48, 0x3b, 0x50, 0x3b, 0x48, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x52, 0x3b, 0x48, +0x3b, 0x91c, 0x93e, 0x928, 0x947, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x90f, +0x92a, 0x94d, 0x930, 0x93f, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x948, 0x3b, 0x911, 0x917, 0x3b, +0x938, 0x92a, 0x94d, 0x91f, 0x947, 0x902, 0x3b, 0x911, 0x915, 0x94d, 0x91f, 0x94b, 0x3b, 0x928, 0x94b, 0x935, 0x94d, 0x939, 0x947, 0x902, +0x3b, 0x921, 0x93f, 0x938, 0x947, 0x902, 0x3b, 0x91c, 0x93e, 0x928, 0x947, 0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, +0x930, 0x941, 0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x90f, 0x92a, 0x94d, 0x930, 0x93f, 0x932, 0x3b, +0x92e, 0x947, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x948, 0x3b, 0x911, 0x917, 0x938, 0x94d, 0x91f, 0x3b, 0x938, 0x92a, +0x94d, 0x91f, 0x947, 0x902, 0x92c, 0x930, 0x3b, 0x911, 0x915, 0x94d, 0x91f, 0x94b, 0x92c, 0x930, 0x3b, 0x928, 0x94b, 0x935, 0x94d, 0x939, +0x947, 0x902, 0x92c, 0x930, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x902, 0x92c, 0x930, 0x3b, 0x91c, 0x93e, 0x3b, 0x92b, 0x947, 0x3b, 0x92e, +0x93e, 0x3b, 0x90f, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x942, 0x3b, 0x91c, 0x941, 0x3b, 0x911, 0x3b, 0x938, 0x3b, 0x911, 0x3b, 0x928, +0x94b, 0x3b, 0x921, 0x93f, 0x3b, 0x31, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x32, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, +0x3b, 0x33, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x34, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x35, 0x2d, 0x440, +0x20, 0x441, 0x430, 0x440, 0x3b, 0x36, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x37, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, +0x3b, 0x38, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x39, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x31, 0x30, 0x2d, +0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x31, 0x31, 0x2d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x31, 0x32, 0x2d, 0x440, 0x20, +0x441, 0x430, 0x440, 0x3b, 0x41d, 0x44d, 0x433, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x425, 0x43e, +0x451, 0x440, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x413, 0x443, 0x440, 0x430, 0x432, 0x434, 0x443, +0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x414, 0x4e9, 0x440, 0x4e9, 0x432, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, +0x20, 0x441, 0x430, 0x440, 0x3b, 0x422, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x417, +0x443, 0x440, 0x433, 0x430, 0x430, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x414, 0x43e, 0x43b, 0x43e, +0x43e, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x41d, 0x430, 0x439, 0x43c, 0x434, 0x443, 0x433, 0x430, +0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x415, 0x441, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, +0x410, 0x440, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x410, 0x440, 0x432, 0x430, 0x43d, +0x20, 0x43d, 0x44d, 0x433, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x410, 0x440, 0x432, 0x430, 0x43d, +0x20, 0x445, 0x43e, 0x451, 0x440, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x49, 0x3b, 0x49, 0x49, +0x3b, 0x49, 0x49, 0x49, 0x3b, 0x49, 0x56, 0x3b, 0x56, 0x3b, 0x56, 0x49, 0x3b, 0x56, 0x49, 0x49, 0x3b, 0x56, 0x49, 0x49, +0x49, 0x3b, 0x49, 0x58, 0x3b, 0x58, 0x3b, 0x58, 0x49, 0x3b, 0x58, 0x49, 0x49, 0x3b, 0x43d, 0x44d, 0x433, 0x434, 0x4af, 0x433, +0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x445, 0x43e, 0x451, 0x440, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, +0x430, 0x440, 0x3b, 0x433, 0x443, 0x440, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x434, +0x4e9, 0x440, 0x4e9, 0x432, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x442, 0x430, 0x432, 0x434, 0x443, +0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x437, 0x443, 0x440, 0x433, 0x430, 0x430, 0x434, 0x443, 0x433, 0x430, 0x430, +0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x434, 0x43e, 0x43b, 0x43e, 0x43e, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, +0x440, 0x3b, 0x43d, 0x430, 0x439, 0x43c, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x435, 0x441, 0x434, +0x4af, 0x433, 0x44d, 0x44d, 0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x430, 0x440, 0x430, 0x432, 0x434, 0x443, 0x433, 0x430, 0x430, 0x440, +0x20, 0x441, 0x430, 0x440, 0x3b, 0x430, 0x440, 0x432, 0x430, 0x43d, 0x20, 0x43d, 0x44d, 0x433, 0x434, 0x4af, 0x433, 0x44d, 0x44d, 0x440, +0x20, 0x441, 0x430, 0x440, 0x3b, 0x430, 0x440, 0x432, 0x430, 0x43d, 0x20, 0x445, 0x43e, 0x451, 0x440, 0x434, 0x443, 0x433, 0x430, 0x430, +0x440, 0x20, 0x441, 0x430, 0x440, 0x3b, 0x91c, 0x928, 0x935, 0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x905, 0x930, +0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x93f, 0x932, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x941, +0x928, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x908, 0x3b, 0x905, 0x917, 0x938, 0x94d, 0x91f, 0x3b, 0x938, 0x947, 0x92a, 0x94d, 0x91f, 0x947, +0x92e, 0x94d, 0x92c, 0x930, 0x3b, 0x905, 0x915, 0x94d, 0x91f, 0x94b, 0x92c, 0x930, 0x3b, 0x928, 0x94b, 0x92d, 0x947, 0x92e, 0x94d, 0x92c, +0x930, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x92e, 0x94d, 0x92c, 0x930, 0x3b, 0x91c, 0x928, 0x3b, 0x92b, 0x947, 0x947, 0x92c, 0x3b, 0x92e, +0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x941, 0x928, 0x3b, 0x91c, 0x941, 0x932, +0x3b, 0x905, 0x917, 0x3b, 0x938, 0x947, 0x92a, 0x3b, 0x905, 0x915, 0x94d, 0x91f, 0x94b, 0x3b, 0x928, 0x94b, 0x92d, 0x947, 0x3b, 0x921, +0x93f, 0x938, 0x947, 0x3b, 0x91c, 0x928, 0x3b, 0x92b, 0x947, 0x92c, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, +0x930, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x941, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x3b, 0x905, 0x917, 0x3b, 0x938, 0x947, 0x92a, 0x3b, +0x905, 0x915, 0x94d, 0x91f, 0x94b, 0x3b, 0x928, 0x94b, 0x92d, 0x947, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x3b, 0x6a, 0x61, 0x6e, 0x75, +0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x69, +0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, +0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, +0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0xb1c, +0xb3e, 0xb28, 0xb41, 0xb06, 0xb30, 0xb40, 0x3b, 0xb2b, 0xb47, 0xb2c, 0xb43, 0xb06, 0xb30, 0xb40, 0x3b, 0xb2e, 0xb3e, 0xb30, 0xb4d, 0xb1a, +0xb4d, 0xb1a, 0x3b, 0xb05, 0xb2a, 0xb4d, 0xb30, 0xb47, 0xb32, 0x3b, 0xb2e, 0xb07, 0x3b, 0xb1c, 0xb41, 0xb28, 0x3b, 0xb1c, 0xb41, 0xb32, +0xb3e, 0xb07, 0x3b, 0xb05, 0xb17, 0xb37, 0xb4d, 0xb1f, 0x3b, 0xb38, 0xb47, 0xb2a, 0xb4d, 0xb1f, 0xb47, 0xb2e, 0xb4d, 0xb2c, 0xb30, 0x3b, +0xb05, 0xb15, 0xb4d, 0xb1f, 0xb4b, 0xb2c, 0xb30, 0x3b, 0xb28, 0xb2d, 0xb47, 0xb2e, 0xb4d, 0xb2c, 0xb30, 0x3b, 0xb21, 0xb3f, 0xb38, 0xb47, +0xb2e, 0xb4d, 0xb2c, 0xb30, 0x3b, 0xb1c, 0xb3e, 0x3b, 0xb2b, 0xb47, 0x3b, 0xb2e, 0xb3e, 0x3b, 0xb05, 0x3b, 0xb2e, 0xb07, 0x3b, 0xb1c, +0xb41, 0x3b, 0xb1c, 0xb41, 0x3b, 0xb05, 0x3b, 0xb38, 0xb47, 0x3b, 0xb05, 0x3b, 0xb28, 0x3b, 0xb21, 0xb3f, 0x3b, 0x62c, 0x646, 0x648, +0x631, 0x64a, 0x3b, 0x641, 0x628, 0x631, 0x648, 0x631, 0x64a, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, +0x3b, 0x645, 0x6cd, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x6cc, 0x3b, 0x627, 0x6ab, 0x633, 0x62a, 0x3b, 0x633, +0x67e, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, +0x633, 0x645, 0x628, 0x631, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x64a, 0x3b, 0x641, 0x6d0, 0x628, 0x631, 0x648, 0x631, 0x64a, 0x3b, 0x645, +0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cd, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, +0x627, 0x6cc, 0x3b, 0x627, 0x6ab, 0x633, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, +0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x64a, 0x3b, 0x641, 0x628, 0x631, 0x648, 0x631, 0x64a, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cd, -0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x6cc, 0x3b, 0x627, 0x6ab, 0x633, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x645, -0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, -0x631, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x64a, 0x3b, 0x641, 0x6d0, 0x628, 0x631, 0x648, 0x631, 0x64a, 0x3b, 0x645, 0x627, 0x631, 0x686, -0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cd, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x6cc, 0x3b, -0x627, 0x6ab, 0x633, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, -0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x64a, 0x3b, 0x641, 0x628, 0x631, -0x648, 0x631, 0x64a, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cd, 0x3b, 0x62c, 0x648, -0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x6cc, 0x3b, 0x627, 0x6ab, 0x633, 0x62a, 0x3b, 0x633, 0x6d0, 0x67e, 0x62a, 0x645, 0x628, 0x631, -0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, -0x62c, 0x3b, 0x641, 0x3b, 0x645, 0x3b, 0x627, 0x3b, 0x645, 0x3b, 0x62c, 0x3b, 0x62c, 0x3b, 0x627, 0x3b, 0x633, 0x3b, 0x627, 0x3b, -0x646, 0x3b, 0x62f, 0x3b, 0x698, 0x627, 0x646, 0x648, 0x6cc, 0x647, 0x3b, 0x641, 0x648, 0x631, 0x6cc, 0x647, 0x3b, 0x645, 0x627, 0x631, -0x633, 0x3b, 0x622, 0x648, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x647, 0x3b, 0x698, 0x648, 0x626, 0x646, 0x3b, 0x698, 0x648, 0x626, 0x6cc, -0x647, 0x3b, 0x627, 0x648, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x628, 0x631, 0x3b, -0x646, 0x648, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x698, 0x3b, 0x641, 0x3b, 0x645, 0x3b, -0x622, 0x3b, 0x645, 0x3b, 0x698, 0x3b, 0x698, 0x3b, 0x627, 0x3b, 0x633, 0x3b, 0x627, 0x3b, 0x646, 0x3b, 0x62f, 0x3b, 0x698, 0x627, -0x646, 0x648, 0x6cc, 0x647, 0x654, 0x3b, 0x641, 0x648, 0x631, 0x6cc, 0x647, 0x654, 0x3b, 0x645, 0x627, 0x631, 0x633, 0x3b, 0x622, 0x648, -0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x647, 0x654, 0x3b, 0x698, 0x648, 0x626, 0x646, 0x3b, 0x698, 0x648, 0x626, 0x6cc, 0x647, 0x654, 0x3b, -0x627, 0x648, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x628, 0x631, 0x3b, 0x646, 0x648, -0x627, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x6cc, 0x3b, 0x641, 0x628, -0x631, 0x648, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cc, 0x3b, 0x62c, -0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x645, 0x628, 0x631, -0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, -0x62c, 0x646, 0x648, 0x3b, 0x641, 0x628, 0x631, 0x648, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, -0x644, 0x3b, 0x645, 0x6cc, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x67e, -0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, -0x645, 0x3b, 0x73, 0x74, 0x79, 0x3b, 0x6c, 0x75, 0x74, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6b, 0x77, 0x69, 0x3b, 0x6d, 0x61, -0x6a, 0x3b, 0x63, 0x7a, 0x65, 0x3b, 0x6c, 0x69, 0x70, 0x3b, 0x73, 0x69, 0x65, 0x3b, 0x77, 0x72, 0x7a, 0x3b, 0x70, 0x61, -0x17a, 0x3b, 0x6c, 0x69, 0x73, 0x3b, 0x67, 0x72, 0x75, 0x3b, 0x73, 0x74, 0x79, 0x63, 0x7a, 0x65, 0x144, 0x3b, 0x6c, 0x75, -0x74, 0x79, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x65, 0x63, 0x3b, 0x6b, 0x77, 0x69, 0x65, 0x63, 0x69, 0x65, 0x144, 0x3b, 0x6d, -0x61, 0x6a, 0x3b, 0x63, 0x7a, 0x65, 0x72, 0x77, 0x69, 0x65, 0x63, 0x3b, 0x6c, 0x69, 0x70, 0x69, 0x65, 0x63, 0x3b, 0x73, -0x69, 0x65, 0x72, 0x70, 0x69, 0x65, 0x144, 0x3b, 0x77, 0x72, 0x7a, 0x65, 0x73, 0x69, 0x65, 0x144, 0x3b, 0x70, 0x61, 0x17a, -0x64, 0x7a, 0x69, 0x65, 0x72, 0x6e, 0x69, 0x6b, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, 0x3b, 0x67, 0x72, -0x75, 0x64, 0x7a, 0x69, 0x65, 0x144, 0x3b, 0x53, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x43, 0x3b, 0x4c, -0x3b, 0x53, 0x3b, 0x57, 0x3b, 0x50, 0x3b, 0x4c, 0x3b, 0x47, 0x3b, 0x73, 0x74, 0x79, 0x63, 0x7a, 0x6e, 0x69, 0x61, 0x3b, -0x6c, 0x75, 0x74, 0x65, 0x67, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x63, 0x61, 0x3b, 0x6b, 0x77, 0x69, 0x65, 0x74, 0x6e, 0x69, -0x61, 0x3b, 0x6d, 0x61, 0x6a, 0x61, 0x3b, 0x63, 0x7a, 0x65, 0x72, 0x77, 0x63, 0x61, 0x3b, 0x6c, 0x69, 0x70, 0x63, 0x61, -0x3b, 0x73, 0x69, 0x65, 0x72, 0x70, 0x6e, 0x69, 0x61, 0x3b, 0x77, 0x72, 0x7a, 0x65, 0x15b, 0x6e, 0x69, 0x61, 0x3b, 0x70, -0x61, 0x17a, 0x64, 0x7a, 0x69, 0x65, 0x72, 0x6e, 0x69, 0x6b, 0x61, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, -0x61, 0x3b, 0x67, 0x72, 0x75, 0x64, 0x6e, 0x69, 0x61, 0x3b, 0x73, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6b, 0x3b, 0x6d, 0x3b, -0x63, 0x3b, 0x6c, 0x3b, 0x73, 0x3b, 0x77, 0x3b, 0x70, 0x3b, 0x6c, 0x3b, 0x67, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, -0x65, 0x76, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x2e, 0x3b, 0x6a, -0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x6f, 0x2e, 0x3b, 0x73, 0x65, 0x74, 0x2e, 0x3b, 0x6f, -0x75, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x7a, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x65, 0x69, 0x72, -0x6f, 0x3b, 0x66, 0x65, 0x76, 0x65, 0x72, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0xe7, 0x6f, 0x3b, 0x61, 0x62, -0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x68, 0x6f, 0x3b, 0x6a, 0x75, 0x6c, 0x68, 0x6f, -0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x6f, 0x75, 0x74, -0x75, 0x62, 0x72, 0x6f, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x64, 0x65, 0x7a, 0x65, 0x6d, 0x62, -0x72, 0x6f, 0x3b, 0xa1c, 0xa28, 0x3b, 0xa2b, 0xa3c, 0xa30, 0x3b, 0xa2e, 0xa3e, 0xa30, 0xa1a, 0x3b, 0xa05, 0xa2a, 0xa4d, 0xa30, 0xa48, -0x3b, 0xa2e, 0xa08, 0x3b, 0xa1c, 0xa42, 0xa28, 0x3b, 0xa1c, 0xa41, 0xa32, 0xa3e, 0x3b, 0xa05, 0xa17, 0x3b, 0xa38, 0xa24, 0xa70, 0x3b, -0xa05, 0xa15, 0xa24, 0xa42, 0x3b, 0xa28, 0xa35, 0xa70, 0x3b, 0xa26, 0xa38, 0xa70, 0x3b, 0xa1c, 0xa28, 0xa35, 0xa30, 0xa40, 0x3b, 0xa2b, -0xa3c, 0xa30, 0xa35, 0xa30, 0xa40, 0x3b, 0xa2e, 0xa3e, 0xa30, 0xa1a, 0x3b, 0xa05, 0xa2a, 0xa4d, 0xa30, 0xa48, 0xa32, 0x3b, 0xa2e, 0xa08, -0x3b, 0xa1c, 0xa42, 0xa28, 0x3b, 0xa1c, 0xa41, 0xa32, 0xa3e, 0xa08, 0x3b, 0xa05, 0xa17, 0xa38, 0xa24, 0x3b, 0xa38, 0xa24, 0xa70, 0xa2c, -0xa30, 0x3b, 0xa05, 0xa15, 0xa24, 0xa42, 0xa2c, 0xa30, 0x3b, 0xa28, 0xa35, 0xa70, 0xa2c, 0xa30, 0x3b, 0xa26, 0xa38, 0xa70, 0xa2c, 0xa30, -0x3b, 0xa1c, 0x3b, 0xa2b, 0xa3c, 0x3b, 0xa2e, 0xa3e, 0x3b, 0xa05, 0x3b, 0xa2e, 0x3b, 0xa1c, 0xa42, 0x3b, 0xa1c, 0xa41, 0x3b, 0xa05, -0x3b, 0xa38, 0x3b, 0xa05, 0x3b, 0xa28, 0x3b, 0xa26, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x6cc, 0x3b, 0x641, 0x631, 0x648, 0x631, 0x6cc, -0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x626, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, -0x648, 0x644, 0x627, 0x626, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, -0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x45, 0x6e, 0x65, 0x3b, +0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x6cc, 0x3b, 0x627, 0x6ab, 0x633, 0x62a, 0x3b, 0x633, 0x6d0, 0x67e, 0x62a, +0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, +0x628, 0x631, 0x3b, 0x62c, 0x3b, 0x641, 0x3b, 0x645, 0x3b, 0x627, 0x3b, 0x645, 0x3b, 0x62c, 0x3b, 0x62c, 0x3b, 0x627, 0x3b, 0x633, +0x3b, 0x627, 0x3b, 0x646, 0x3b, 0x62f, 0x3b, 0x698, 0x627, 0x646, 0x648, 0x6cc, 0x647, 0x3b, 0x641, 0x648, 0x631, 0x6cc, 0x647, 0x3b, +0x645, 0x627, 0x631, 0x633, 0x3b, 0x622, 0x648, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x647, 0x3b, 0x698, 0x648, 0x626, 0x646, 0x3b, 0x698, +0x648, 0x626, 0x6cc, 0x647, 0x3b, 0x627, 0x648, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, +0x628, 0x631, 0x3b, 0x646, 0x648, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x698, 0x3b, 0x641, +0x3b, 0x645, 0x3b, 0x622, 0x3b, 0x645, 0x3b, 0x698, 0x3b, 0x698, 0x3b, 0x627, 0x3b, 0x633, 0x3b, 0x627, 0x3b, 0x646, 0x3b, 0x62f, +0x3b, 0x698, 0x627, 0x646, 0x648, 0x6cc, 0x647, 0x654, 0x3b, 0x641, 0x648, 0x631, 0x6cc, 0x647, 0x654, 0x3b, 0x645, 0x627, 0x631, 0x633, +0x3b, 0x622, 0x648, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x647, 0x654, 0x3b, 0x698, 0x648, 0x626, 0x646, 0x3b, 0x698, 0x648, 0x626, 0x6cc, +0x647, 0x654, 0x3b, 0x627, 0x648, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x628, 0x631, +0x3b, 0x646, 0x648, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x627, 0x645, 0x628, 0x631, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x6cc, +0x3b, 0x641, 0x628, 0x631, 0x648, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, +0x6cc, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x67e, 0x62a, +0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, +0x628, 0x631, 0x3b, 0x62c, 0x646, 0x648, 0x3b, 0x641, 0x628, 0x631, 0x648, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, +0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x6cc, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x3b, 0x627, 0x6af, 0x633, 0x62a, +0x3b, 0x633, 0x67e, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, +0x3b, 0x62f, 0x633, 0x645, 0x3b, 0x73, 0x74, 0x79, 0x3b, 0x6c, 0x75, 0x74, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x6b, 0x77, 0x69, +0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x63, 0x7a, 0x65, 0x3b, 0x6c, 0x69, 0x70, 0x3b, 0x73, 0x69, 0x65, 0x3b, 0x77, 0x72, 0x7a, +0x3b, 0x70, 0x61, 0x17a, 0x3b, 0x6c, 0x69, 0x73, 0x3b, 0x67, 0x72, 0x75, 0x3b, 0x73, 0x74, 0x79, 0x63, 0x7a, 0x65, 0x144, +0x3b, 0x6c, 0x75, 0x74, 0x79, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x65, 0x63, 0x3b, 0x6b, 0x77, 0x69, 0x65, 0x63, 0x69, 0x65, +0x144, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x63, 0x7a, 0x65, 0x72, 0x77, 0x69, 0x65, 0x63, 0x3b, 0x6c, 0x69, 0x70, 0x69, 0x65, +0x63, 0x3b, 0x73, 0x69, 0x65, 0x72, 0x70, 0x69, 0x65, 0x144, 0x3b, 0x77, 0x72, 0x7a, 0x65, 0x73, 0x69, 0x65, 0x144, 0x3b, +0x70, 0x61, 0x17a, 0x64, 0x7a, 0x69, 0x65, 0x72, 0x6e, 0x69, 0x6b, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, 0x70, 0x61, 0x64, +0x3b, 0x67, 0x72, 0x75, 0x64, 0x7a, 0x69, 0x65, 0x144, 0x3b, 0x53, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, +0x43, 0x3b, 0x4c, 0x3b, 0x53, 0x3b, 0x57, 0x3b, 0x50, 0x3b, 0x4c, 0x3b, 0x47, 0x3b, 0x73, 0x74, 0x79, 0x63, 0x7a, 0x6e, +0x69, 0x61, 0x3b, 0x6c, 0x75, 0x74, 0x65, 0x67, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x63, 0x61, 0x3b, 0x6b, 0x77, 0x69, 0x65, +0x74, 0x6e, 0x69, 0x61, 0x3b, 0x6d, 0x61, 0x6a, 0x61, 0x3b, 0x63, 0x7a, 0x65, 0x72, 0x77, 0x63, 0x61, 0x3b, 0x6c, 0x69, +0x70, 0x63, 0x61, 0x3b, 0x73, 0x69, 0x65, 0x72, 0x70, 0x6e, 0x69, 0x61, 0x3b, 0x77, 0x72, 0x7a, 0x65, 0x15b, 0x6e, 0x69, +0x61, 0x3b, 0x70, 0x61, 0x17a, 0x64, 0x7a, 0x69, 0x65, 0x72, 0x6e, 0x69, 0x6b, 0x61, 0x3b, 0x6c, 0x69, 0x73, 0x74, 0x6f, +0x70, 0x61, 0x64, 0x61, 0x3b, 0x67, 0x72, 0x75, 0x64, 0x6e, 0x69, 0x61, 0x3b, 0x73, 0x3b, 0x6c, 0x3b, 0x6d, 0x3b, 0x6b, +0x3b, 0x6d, 0x3b, 0x63, 0x3b, 0x6c, 0x3b, 0x73, 0x3b, 0x77, 0x3b, 0x70, 0x3b, 0x6c, 0x3b, 0x67, 0x3b, 0x6a, 0x61, 0x6e, +0x2e, 0x3b, 0x66, 0x65, 0x76, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, +0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x6f, 0x2e, 0x3b, 0x73, 0x65, 0x74, +0x2e, 0x3b, 0x6f, 0x75, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x7a, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, +0x65, 0x69, 0x72, 0x6f, 0x3b, 0x66, 0x65, 0x76, 0x65, 0x72, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0xe7, 0x6f, +0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x68, 0x6f, 0x3b, 0x6a, 0x75, +0x6c, 0x68, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, +0x6f, 0x75, 0x74, 0x75, 0x62, 0x72, 0x6f, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x64, 0x65, 0x7a, +0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0xa1c, 0xa28, 0x3b, 0xa2b, 0xa3c, 0xa30, 0x3b, 0xa2e, 0xa3e, 0xa30, 0xa1a, 0x3b, 0xa05, 0xa2a, +0xa4d, 0xa30, 0xa48, 0x3b, 0xa2e, 0xa08, 0x3b, 0xa1c, 0xa42, 0xa28, 0x3b, 0xa1c, 0xa41, 0xa32, 0xa3e, 0x3b, 0xa05, 0xa17, 0x3b, 0xa38, +0xa24, 0xa70, 0x3b, 0xa05, 0xa15, 0xa24, 0xa42, 0x3b, 0xa28, 0xa35, 0xa70, 0x3b, 0xa26, 0xa38, 0xa70, 0x3b, 0xa1c, 0xa28, 0xa35, 0xa30, +0xa40, 0x3b, 0xa2b, 0xa3c, 0xa30, 0xa35, 0xa30, 0xa40, 0x3b, 0xa2e, 0xa3e, 0xa30, 0xa1a, 0x3b, 0xa05, 0xa2a, 0xa4d, 0xa30, 0xa48, 0xa32, +0x3b, 0xa2e, 0xa08, 0x3b, 0xa1c, 0xa42, 0xa28, 0x3b, 0xa1c, 0xa41, 0xa32, 0xa3e, 0xa08, 0x3b, 0xa05, 0xa17, 0xa38, 0xa24, 0x3b, 0xa38, +0xa24, 0xa70, 0xa2c, 0xa30, 0x3b, 0xa05, 0xa15, 0xa24, 0xa42, 0xa2c, 0xa30, 0x3b, 0xa28, 0xa35, 0xa70, 0xa2c, 0xa30, 0x3b, 0xa26, 0xa38, +0xa70, 0xa2c, 0xa30, 0x3b, 0xa1c, 0x3b, 0xa2b, 0xa3c, 0x3b, 0xa2e, 0xa3e, 0x3b, 0xa05, 0x3b, 0xa2e, 0x3b, 0xa1c, 0xa42, 0x3b, 0xa1c, +0xa41, 0x3b, 0xa05, 0x3b, 0xa38, 0x3b, 0xa05, 0x3b, 0xa28, 0x3b, 0xa26, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x6cc, 0x3b, 0x641, 0x631, +0x648, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x626, 0x3b, 0x62c, 0x648, +0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x626, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x62a, 0x645, 0x628, 0x631, 0x3b, +0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x45, +0x6e, 0x65, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x4a, +0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x63, 0x74, 0x3b, 0x4e, +0x6f, 0x76, 0x3b, 0x44, 0x69, 0x63, 0x3b, 0x45, 0x6e, 0x65, 0x72, 0x6f, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x65, 0x72, 0x6f, +0x3b, 0x4d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x6f, 0x3b, 0x4a, 0x75, +0x6e, 0x69, 0x6f, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x6f, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x53, 0x65, 0x74, +0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x4f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x4e, 0x6f, 0x76, 0x69, 0x65, +0x6d, 0x62, 0x72, 0x65, 0x3b, 0x44, 0x69, 0x63, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x73, 0x63, 0x68, 0x61, 0x6e, +0x2e, 0x3b, 0x66, 0x61, 0x76, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x76, 0x72, 0x2e, 0x3b, 0x6d, 0x61, +0x74, 0x67, 0x3b, 0x7a, 0x65, 0x72, 0x63, 0x6c, 0x2e, 0x3b, 0x66, 0x61, 0x6e, 0x2e, 0x3b, 0x61, 0x76, 0x75, 0x73, 0x74, +0x3b, 0x73, 0x65, 0x74, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, +0x2e, 0x3b, 0x73, 0x63, 0x68, 0x61, 0x6e, 0x65, 0x72, 0x3b, 0x66, 0x61, 0x76, 0x72, 0x65, 0x72, 0x3b, 0x6d, 0x61, 0x72, +0x73, 0x3b, 0x61, 0x76, 0x72, 0x69, 0x67, 0x6c, 0x3b, 0x6d, 0x61, 0x74, 0x67, 0x3b, 0x7a, 0x65, 0x72, 0x63, 0x6c, 0x61, +0x64, 0x75, 0x72, 0x3b, 0x66, 0x61, 0x6e, 0x61, 0x64, 0x75, 0x72, 0x3b, 0x61, 0x76, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, +0x74, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x63, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, +0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x53, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, +0x41, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x46, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x64, 0x61, +0x20, 0x73, 0x63, 0x68, 0x61, 0x6e, 0x65, 0x72, 0x3b, 0x64, 0x61, 0x20, 0x66, 0x61, 0x76, 0x72, 0x65, 0x72, 0x3b, 0x64, +0x61, 0x20, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x64, 0x2019, 0x61, 0x76, 0x72, 0x69, 0x67, 0x6c, 0x3b, 0x64, 0x61, 0x20, 0x6d, +0x61, 0x74, 0x67, 0x3b, 0x64, 0x61, 0x20, 0x7a, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x64, 0x75, 0x72, 0x3b, 0x64, 0x61, 0x20, +0x66, 0x61, 0x6e, 0x61, 0x64, 0x75, 0x72, 0x3b, 0x64, 0x2019, 0x61, 0x76, 0x75, 0x73, 0x74, 0x3b, 0x64, 0x61, 0x20, 0x73, +0x65, 0x74, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x2019, 0x6f, 0x63, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x64, +0x61, 0x20, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x61, 0x20, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, +0x65, 0x72, 0x3b, 0x69, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, +0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x69, 0x75, 0x6e, 0x2e, 0x3b, 0x69, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, +0x2e, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, +0x63, 0x2e, 0x3b, 0x69, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x65, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, +0x65, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x69, 0x65, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x69, 0x65, 0x3b, 0x6d, 0x61, 0x69, +0x3b, 0x69, 0x75, 0x6e, 0x69, 0x65, 0x3b, 0x69, 0x75, 0x6c, 0x69, 0x65, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, +0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x65, 0x3b, 0x6f, 0x63, 0x74, 0x6f, 0x6d, 0x62, 0x72, 0x69, 0x65, +0x3b, 0x6e, 0x6f, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x65, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x65, +0x3b, 0x49, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, +0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x442, +0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x44c, 0x3b, 0x438, 0x44e, 0x43b, 0x44c, 0x3b, +0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, +0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x2e, 0x3b, 0x43c, 0x430, +0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x44f, 0x3b, 0x438, 0x44e, 0x43d, 0x2e, 0x3b, 0x438, 0x44e, 0x43b, +0x2e, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, +0x44f, 0x431, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, 0x44f, 0x3b, 0x444, 0x435, 0x432, 0x440, +0x430, 0x43b, 0x44f, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x430, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x44f, 0x3b, 0x43c, 0x430, 0x44f, +0x3b, 0x438, 0x44e, 0x43d, 0x44f, 0x3b, 0x438, 0x44e, 0x43b, 0x44f, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x430, 0x3b, 0x441, +0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44f, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44f, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, +0x440, 0x44f, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44f, 0x3b, 0x4e, 0x79, 0x65, 0x3b, 0x46, 0x75, 0x6c, 0x3b, 0x4d, +0x62, 0xe4, 0x3b, 0x4e, 0x67, 0x75, 0x3b, 0x42, 0xea, 0x6c, 0x3b, 0x46, 0xf6, 0x6e, 0x3b, 0x4c, 0x65, 0x6e, 0x3b, 0x4b, +0xfc, 0x6b, 0x3b, 0x4d, 0x76, 0x75, 0x3b, 0x4e, 0x67, 0x62, 0x3b, 0x4e, 0x61, 0x62, 0x3b, 0x4b, 0x61, 0x6b, 0x3b, 0x4e, +0x79, 0x65, 0x6e, 0x79, 0x65, 0x3b, 0x46, 0x75, 0x6c, 0x75, 0x6e, 0x64, 0xef, 0x67, 0x69, 0x3b, 0x4d, 0x62, 0xe4, 0x6e, +0x67, 0xfc, 0x3b, 0x4e, 0x67, 0x75, 0x62, 0xf9, 0x65, 0x3b, 0x42, 0xea, 0x6c, 0xe4, 0x77, 0xfc, 0x3b, 0x46, 0xf6, 0x6e, +0x64, 0x6f, 0x3b, 0x4c, 0x65, 0x6e, 0x67, 0x75, 0x61, 0x3b, 0x4b, 0xfc, 0x6b, 0xfc, 0x72, 0xfc, 0x3b, 0x4d, 0x76, 0x75, +0x6b, 0x61, 0x3b, 0x4e, 0x67, 0x62, 0x65, 0x72, 0x65, 0x72, 0x65, 0x3b, 0x4e, 0x61, 0x62, 0xe4, 0x6e, 0x64, 0xfc, 0x72, +0x75, 0x3b, 0x4b, 0x61, 0x6b, 0x61, 0x75, 0x6b, 0x61, 0x3b, 0x4e, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x42, 0x3b, +0x46, 0x3b, 0x4c, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4b, 0x3b, 0x91c, 0x928, 0x935, 0x930, 0x940, 0x3a, +0x3b, 0x92b, 0x930, 0x935, 0x930, 0x940, 0x3a, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x948, +0x932, 0x3a, 0x3b, 0x92e, 0x908, 0x3b, 0x91c, 0x942, 0x928, 0x3a, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x908, 0x3a, 0x3b, 0x905, 0x917, +0x938, 0x94d, 0x924, 0x3a, 0x3b, 0x938, 0x93f, 0x924, 0x902, 0x92c, 0x930, 0x3a, 0x3b, 0x905, 0x915, 0x94d, 0x924, 0x942, 0x92c, 0x930, +0x3a, 0x3b, 0x928, 0x935, 0x902, 0x92c, 0x930, 0x3a, 0x3b, 0x926, 0x93f, 0x938, 0x902, 0x92c, 0x930, 0x3a, 0x3b, 0x91c, 0x928, 0x935, +0x930, 0x940, 0x92e, 0x93e, 0x938, 0x903, 0x3b, 0x92b, 0x930, 0x935, 0x930, 0x940, 0x92e, 0x93e, 0x938, 0x903, 0x3b, 0x92e, 0x93e, 0x930, +0x94d, 0x91a, 0x92e, 0x93e, 0x938, 0x903, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x948, 0x932, 0x92e, 0x93e, 0x938, 0x903, 0x3b, 0x92e, 0x908, +0x92e, 0x93e, 0x938, 0x903, 0x3b, 0x91c, 0x942, 0x928, 0x92e, 0x93e, 0x938, 0x903, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x908, 0x92e, 0x93e, +0x938, 0x903, 0x3b, 0x905, 0x917, 0x938, 0x94d, 0x924, 0x92e, 0x93e, 0x938, 0x903, 0x3b, 0x938, 0x93f, 0x924, 0x902, 0x92c, 0x930, 0x92e, +0x93e, 0x938, 0x903, 0x3b, 0x905, 0x915, 0x94d, 0x924, 0x942, 0x92c, 0x930, 0x92e, 0x93e, 0x938, 0x903, 0x3b, 0x928, 0x935, 0x902, 0x92c, +0x930, 0x92e, 0x93e, 0x938, 0x903, 0x3b, 0x926, 0x93f, 0x938, 0x902, 0x92c, 0x930, 0x92e, 0x93e, 0x938, 0x903, 0x3b, 0x91c, 0x3b, 0x92b, +0x3b, 0x92e, 0x93e, 0x3b, 0x905, 0x3b, 0x92e, 0x3b, 0x91c, 0x942, 0x3b, 0x91c, 0x941, 0x3b, 0x905, 0x3b, 0x938, 0x93f, 0x3b, 0x905, +0x3b, 0x928, 0x3b, 0x926, 0x93f, 0x3b, 0x458, 0x430, 0x43d, 0x3b, 0x444, 0x435, 0x431, 0x3b, 0x43c, 0x430, 0x440, 0x3b, 0x430, 0x43f, +0x440, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x3b, 0x458, 0x443, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, 0x435, +0x43f, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x432, 0x3b, 0x434, 0x435, 0x446, 0x3b, 0x458, 0x430, 0x43d, 0x443, 0x430, 0x440, +0x3b, 0x444, 0x435, 0x431, 0x440, 0x443, 0x430, 0x440, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x438, 0x43b, 0x3b, +0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x3b, 0x458, 0x443, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, +0x435, 0x43f, 0x442, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x43e, 0x43a, 0x442, 0x43e, 0x431, 0x430, 0x440, 0x3b, 0x43d, 0x43e, 0x432, +0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x434, 0x435, 0x446, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, +0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, +0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, +0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, +0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, +0x3b, 0x61, 0x76, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x6f, 0x6b, +0x74, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, +0x62, 0x61, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, +0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x3b, 0x73, 0x65, 0x70, +0x74, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x458, 0x430, 0x43d, 0x3b, 0x444, 0x435, +0x431, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x3b, 0x458, +0x443, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x432, 0x3b, +0x434, 0x435, 0x446, 0x3b, 0x42f, 0x43d, 0x432, 0x2e, 0x3b, 0x424, 0x435, 0x432, 0x440, 0x2e, 0x3b, 0x41c, 0x430, 0x440, 0x442, 0x2e, +0x3b, 0x410, 0x43f, 0x440, 0x2e, 0x3b, 0x41c, 0x430, 0x439, 0x3b, 0x418, 0x44e, 0x43d, 0x44c, 0x3b, 0x418, 0x44e, 0x43b, 0x44c, 0x3b, +0x410, 0x432, 0x433, 0x2e, 0x3b, 0x421, 0x435, 0x43d, 0x442, 0x2e, 0x3b, 0x41e, 0x43a, 0x442, 0x2e, 0x3b, 0x41d, 0x43e, 0x44f, 0x431, +0x2e, 0x3b, 0x414, 0x435, 0x43a, 0x2e, 0x3b, 0x42f, 0x43d, 0x432, 0x430, 0x440, 0x44c, 0x3b, 0x424, 0x435, 0x432, 0x440, 0x430, 0x43b, +0x44c, 0x3b, 0x41c, 0x430, 0x440, 0x442, 0x44a, 0x438, 0x3b, 0x410, 0x43f, 0x440, 0x435, 0x43b, 0x44c, 0x3b, 0x41c, 0x430, 0x439, 0x3b, +0x418, 0x44e, 0x43d, 0x44c, 0x3b, 0x418, 0x44e, 0x43b, 0x44c, 0x3b, 0x410, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x421, 0x435, 0x43d, +0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x41e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x41d, 0x43e, 0x44f, 0x431, 0x440, 0x44c, +0x3b, 0x414, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44c, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x2e, 0x3b, 0x43c, +0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x439, 0x44b, 0x3b, 0x438, 0x44e, 0x43d, 0x44b, 0x3b, 0x438, +0x44e, 0x43b, 0x44b, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, +0x43e, 0x44f, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, 0x44b, 0x3b, 0x444, 0x435, 0x432, 0x440, +0x430, 0x43b, 0x44b, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x44a, 0x438, 0x439, 0x44b, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x44b, 0x3b, +0x43c, 0x430, 0x439, 0x44b, 0x3b, 0x438, 0x44e, 0x43d, 0x44b, 0x3b, 0x438, 0x44e, 0x43b, 0x44b, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, +0x442, 0x44b, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44b, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44b, 0x3b, +0x43d, 0x43e, 0x44f, 0x431, 0x440, 0x44b, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44b, 0x3b, 0x4e, 0x64, 0x69, 0x3b, 0x4b, +0x75, 0x6b, 0x3b, 0x4b, 0x75, 0x72, 0x3b, 0x4b, 0x75, 0x62, 0x3b, 0x43, 0x68, 0x76, 0x3b, 0x43, 0x68, 0x6b, 0x3b, 0x43, +0x68, 0x67, 0x3b, 0x4e, 0x79, 0x61, 0x3b, 0x47, 0x75, 0x6e, 0x3b, 0x47, 0x75, 0x6d, 0x3b, 0x4d, 0x62, 0x75, 0x3b, 0x5a, +0x76, 0x69, 0x3b, 0x4e, 0x64, 0x69, 0x72, 0x61, 0x3b, 0x4b, 0x75, 0x6b, 0x61, 0x64, 0x7a, 0x69, 0x3b, 0x4b, 0x75, 0x72, +0x75, 0x6d, 0x65, 0x3b, 0x4b, 0x75, 0x62, 0x76, 0x75, 0x6d, 0x62, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x76, 0x61, 0x62, 0x76, +0x75, 0x3b, 0x43, 0x68, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x6b, 0x75, 0x6e, 0x67, 0x75, 0x72, 0x75, +0x3b, 0x4e, 0x79, 0x61, 0x6d, 0x61, 0x76, 0x68, 0x75, 0x76, 0x68, 0x75, 0x3b, 0x47, 0x75, 0x6e, 0x79, 0x61, 0x6e, 0x61, +0x3b, 0x47, 0x75, 0x6d, 0x69, 0x67, 0x75, 0x72, 0x75, 0x3b, 0x4d, 0x62, 0x75, 0x64, 0x7a, 0x69, 0x3b, 0x5a, 0x76, 0x69, +0x74, 0x61, 0x3b, 0x4e, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x43, 0x3b, 0x4e, 0x3b, 0x47, +0x3b, 0x47, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x64a, 0x3b, 0x641, 0x64a, 0x628, 0x631, 0x648, 0x631, 0x64a, +0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x64a, 0x644, 0x3b, 0x645, 0x626, 0x64a, 0x3b, 0x62c, 0x648, 0x646, 0x3b, +0x62c, 0x648, 0x644, 0x627, 0x621, 0x650, 0x3b, 0x622, 0x6af, 0x633, 0x67d, 0x3b, 0x633, 0x64a, 0x67e, 0x67d, 0x645, 0x628, 0x631, 0x3b, +0x622, 0x6aa, 0x67d, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x68a, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x91c, +0x928, 0x3b, 0x92b, 0x930, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x948, 0x3b, 0x92e, 0x908, 0x3b, +0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x3b, 0x905, 0x917, 0x3b, 0x938, 0x93f, 0x924, 0x902, 0x3b, 0x905, 0x915, 0x94d, +0x91f, 0x942, 0x3b, 0x928, 0x935, 0x902, 0x3b, 0x926, 0x93f, 0x938, 0x902, 0x3b, 0x91c, 0x928, 0x935, 0x930, 0x940, 0x3b, 0x92b, 0x930, +0x935, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x941, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x948, 0x932, 0x3b, 0x92e, 0x908, +0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x908, 0x3b, 0x905, 0x917, 0x938, 0x94d, 0x924, 0x3b, 0x938, 0x93f, 0x924, +0x902, 0x92c, 0x930, 0x3b, 0x905, 0x915, 0x94d, 0x91f, 0x942, 0x92c, 0x930, 0x3b, 0x928, 0x935, 0x902, 0x92c, 0x930, 0x3b, 0x926, 0x93f, +0x938, 0x902, 0x92c, 0x930, 0x3b, 0x91c, 0x3b, 0x92b, 0x93c, 0x3b, 0x92e, 0x3b, 0x905, 0x3b, 0x92e, 0x3b, 0x91c, 0x942, 0x3b, 0x91c, +0x941, 0x3b, 0x905, 0x3b, 0x938, 0x93f, 0x3b, 0x905, 0x3b, 0x928, 0x3b, 0x926, 0x3b, 0x91c, 0x928, 0x3b, 0x92b, 0x930, 0x3b, 0x92e, +0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x948, 0x3b, 0x92e, 0x908, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, +0x3b, 0x905, 0x917, 0x3b, 0x938, 0x93f, 0x924, 0x902, 0x3b, 0x905, 0x915, 0x94d, 0x91f, 0x942, 0x3b, 0x928, 0x935, 0x902, 0x3b, 0x926, +0x93f, 0x938, 0x902, 0x3b, 0xda2, 0xdb1, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0x3b, 0xdb8, 0xdcf, 0xdbb, 0xdca, 0x3b, 0xd85, 0xdb4, 0xdca, 0x200d, +0xdbb, 0xdda, 0xdbd, 0xdca, 0x3b, 0xdb8, 0xdd0, 0xdba, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdb1, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdbd, 0xdd2, 0x3b, +0xd85, 0xd9c, 0xddd, 0x3b, 0xdc3, 0xdd0, 0xdb4, 0xdca, 0x3b, 0xd94, 0xd9a, 0xdca, 0x3b, 0xdb1, 0xddc, 0xdc0, 0xdd0, 0x3b, 0xdaf, 0xdd9, +0xdc3, 0xdd0, 0x3b, 0xda2, 0xdb1, 0xdc0, 0xdcf, 0xdbb, 0xdd2, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0xdbb, 0xdc0, 0xdcf, 0xdbb, 0xdd2, 0x3b, 0xdb8, +0xdcf, 0xdbb, 0xdca, 0xdad, 0xdd4, 0x3b, 0xd85, 0xdb4, 0xdca, 0x200d, 0xdbb, 0xdda, 0xdbd, 0xdca, 0x3b, 0xdb8, 0xdd0, 0xdba, 0xdd2, 0x3b, +0xda2, 0xdd6, 0xdb1, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdbd, 0xdd2, 0x3b, 0xd85, 0xd9c, 0xddd, 0xdc3, 0xdca, 0xdad, 0xdd4, 0x3b, 0xdc3, 0xdd0, +0xdb4, 0xdca, 0xdad, 0xdd0, 0xdb8, 0xdca, 0xdb6, 0xdbb, 0xdca, 0x3b, 0xd94, 0xd9a, 0xdca, 0xdad, 0xddd, 0xdb6, 0xdbb, 0xdca, 0x3b, 0xdb1, +0xddc, 0xdc0, 0xdd0, 0xdb8, 0xdca, 0xdb6, 0xdbb, 0xdca, 0x3b, 0xdaf, 0xdd9, 0xdc3, 0xdd0, 0xdb8, 0xdca, 0xdb6, 0xdbb, 0xdca, 0x3b, 0xda2, +0x3b, 0xdb4, 0xdd9, 0x3b, 0xdb8, 0xdcf, 0x3b, 0xd85, 0x3b, 0xdb8, 0xdd0, 0x3b, 0xda2, 0xdd6, 0x3b, 0xda2, 0xdd6, 0x3b, 0xd85, 0x3b, +0xdc3, 0xdd0, 0x3b, 0xd94, 0x3b, 0xdb1, 0xdd9, 0x3b, 0xdaf, 0xdd9, 0x3b, 0xda2, 0xdb1, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0x3b, 0xdb8, 0xdcf, +0xdbb, 0xdca, 0xdad, 0xdd4, 0x3b, 0xd85, 0xdb4, 0xdca, 0x200d, 0xdbb, 0xdda, 0xdbd, 0xdca, 0x3b, 0xdb8, 0xdd0, 0xdba, 0xdd2, 0x3b, 0xda2, +0xdd6, 0xdb1, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdbd, 0xdd2, 0x3b, 0xd85, 0xd9c, 0xddd, 0x3b, 0xdc3, 0xdd0, 0xdb4, 0xdca, 0x3b, 0xd94, 0xd9a, +0xdca, 0x3b, 0xdb1, 0xddc, 0xdc0, 0xdd0, 0x3b, 0xdaf, 0xdd9, 0xdc3, 0xdd0, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, +0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0xe1, 0x6a, 0x3b, 0x6a, 0xfa, 0x6e, 0x3b, 0x6a, 0xfa, 0x6c, 0x3b, +0x61, 0x75, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, +0x6a, 0x61, 0x6e, 0x75, 0xe1, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0xe1, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x65, 0x63, +0x3b, 0x61, 0x70, 0x72, 0xed, 0x6c, 0x3b, 0x6d, 0xe1, 0x6a, 0x3b, 0x6a, 0xfa, 0x6e, 0x3b, 0x6a, 0xfa, 0x6c, 0x3b, 0x61, +0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0xf3, +0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, +0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0xe1, 0x72, 0x61, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0xe1, 0x72, 0x61, 0x3b, 0x6d, +0x61, 0x72, 0x63, 0x61, 0x3b, 0x61, 0x70, 0x72, 0xed, 0x6c, 0x61, 0x3b, 0x6d, 0xe1, 0x6a, 0x61, 0x3b, 0x6a, 0xfa, 0x6e, +0x61, 0x3b, 0x6a, 0xfa, 0x6c, 0x61, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x61, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, +0x6d, 0x62, 0x72, 0x61, 0x3b, 0x6f, 0x6b, 0x74, 0xf3, 0x62, 0x72, 0x61, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, +0x61, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, +0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, +0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x76, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, +0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, +0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x65, 0x63, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x6a, +0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6a, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6a, 0x3b, 0x61, 0x76, 0x67, 0x75, 0x73, 0x74, 0x3b, +0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, +0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, -0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x63, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, -0x44, 0x69, 0x63, 0x3b, 0x45, 0x6e, 0x65, 0x72, 0x6f, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x65, 0x72, 0x6f, 0x3b, 0x4d, 0x61, -0x72, 0x7a, 0x6f, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x6f, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x6f, -0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x6f, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x69, 0x65, 0x6d, -0x62, 0x72, 0x65, 0x3b, 0x4f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x4e, 0x6f, 0x76, 0x69, 0x65, 0x6d, 0x62, 0x72, -0x65, 0x3b, 0x44, 0x69, 0x63, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x73, 0x63, 0x68, 0x61, 0x6e, 0x2e, 0x3b, 0x66, -0x61, 0x76, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x76, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x74, 0x67, 0x3b, -0x7a, 0x65, 0x72, 0x63, 0x6c, 0x2e, 0x3b, 0x66, 0x61, 0x6e, 0x2e, 0x3b, 0x61, 0x76, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, -0x74, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x73, -0x63, 0x68, 0x61, 0x6e, 0x65, 0x72, 0x3b, 0x66, 0x61, 0x76, 0x72, 0x65, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, -0x76, 0x72, 0x69, 0x67, 0x6c, 0x3b, 0x6d, 0x61, 0x74, 0x67, 0x3b, 0x7a, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x64, 0x75, 0x72, -0x3b, 0x66, 0x61, 0x6e, 0x61, 0x64, 0x75, 0x72, 0x3b, 0x61, 0x76, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x74, 0x74, 0x65, -0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x63, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, -0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x53, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, -0x3b, 0x5a, 0x3b, 0x46, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x64, 0x61, 0x20, 0x73, 0x63, -0x68, 0x61, 0x6e, 0x65, 0x72, 0x3b, 0x64, 0x61, 0x20, 0x66, 0x61, 0x76, 0x72, 0x65, 0x72, 0x3b, 0x64, 0x61, 0x20, 0x6d, -0x61, 0x72, 0x73, 0x3b, 0x64, 0x2019, 0x61, 0x76, 0x72, 0x69, 0x67, 0x6c, 0x3b, 0x64, 0x61, 0x20, 0x6d, 0x61, 0x74, 0x67, -0x3b, 0x64, 0x61, 0x20, 0x7a, 0x65, 0x72, 0x63, 0x6c, 0x61, 0x64, 0x75, 0x72, 0x3b, 0x64, 0x61, 0x20, 0x66, 0x61, 0x6e, -0x61, 0x64, 0x75, 0x72, 0x3b, 0x64, 0x2019, 0x61, 0x76, 0x75, 0x73, 0x74, 0x3b, 0x64, 0x61, 0x20, 0x73, 0x65, 0x74, 0x74, -0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x2019, 0x6f, 0x63, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x61, 0x20, 0x6e, -0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x61, 0x20, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, -0x69, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, -0x6d, 0x61, 0x69, 0x3b, 0x69, 0x75, 0x6e, 0x2e, 0x3b, 0x69, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, -0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, -0x69, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x65, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x65, 0x3b, 0x6d, -0x61, 0x72, 0x74, 0x69, 0x65, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x69, 0x65, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x69, 0x75, -0x6e, 0x69, 0x65, 0x3b, 0x69, 0x75, 0x6c, 0x69, 0x65, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, -0x74, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x65, 0x3b, 0x6f, 0x63, 0x74, 0x6f, 0x6d, 0x62, 0x72, 0x69, 0x65, 0x3b, 0x6e, 0x6f, -0x69, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x65, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x69, 0x65, 0x3b, 0x49, 0x3b, -0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, -0x44, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, +0x4c, 0x75, 0x6c, 0x3b, 0x4f, 0x67, 0x73, 0x3b, 0x53, 0x65, 0x62, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x66, 0x3b, +0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x6e, 0x61, 0x61, 0x79, 0x6f, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x61, 0x61, 0x79, +0x6f, 0x3b, 0x4d, 0x61, 0x61, 0x72, 0x73, 0x6f, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x3b, +0x4a, 0x75, 0x75, 0x6e, 0x3b, 0x4c, 0x75, 0x75, 0x6c, 0x69, 0x79, 0x6f, 0x3b, 0x4f, 0x67, 0x6f, 0x73, 0x74, 0x3b, 0x53, +0x65, 0x62, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x4e, 0x6f, +0x66, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, +0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4c, 0x3b, 0x4f, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, +0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4b, 0x6f, 0x6f, 0x62, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, +0x4c, 0x61, 0x62, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x53, 0x61, 0x64, 0x64, 0x65, 0x78, 0x61, +0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x41, 0x66, 0x72, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, +0x61, 0x20, 0x53, 0x68, 0x61, 0x6e, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4c, 0x69, 0x78, 0x61, +0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x54, 0x6f, 0x64, 0x6f, 0x62, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, +0x73, 0x68, 0x61, 0x20, 0x53, 0x69, 0x64, 0x65, 0x65, 0x64, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, +0x53, 0x61, 0x67, 0x61, 0x61, 0x6c, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x54, 0x6f, 0x62, 0x6e, +0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4b, 0x6f, 0x77, 0x20, 0x69, 0x79, 0x6f, 0x20, 0x54, 0x6f, +0x62, 0x6e, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4c, 0x61, 0x62, 0x61, 0x20, 0x69, 0x79, 0x6f, +0x20, 0x54, 0x6f, 0x62, 0x6e, 0x61, 0x61, 0x64, 0x3b, 0x65, 0x6e, 0x65, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, +0x3b, 0x61, 0x62, 0x72, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x67, 0x6f, +0x3b, 0x73, 0x65, 0x70, 0x74, 0x3b, 0x6f, 0x63, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x69, 0x63, 0x3b, 0x65, 0x6e, +0x65, 0x72, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x65, 0x72, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x61, 0x62, +0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6f, +0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, +0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x69, 0x63, +0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x45, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, +0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x65, 0x6e, 0x65, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, +0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x79, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, +0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x6f, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, +0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x69, 0x63, 0x2e, 0x3b, 0x65, 0x6e, 0x65, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, +0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x79, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, +0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x6f, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, +0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x69, 0x63, 0x2e, 0x3b, 0x45, 0x6e, 0x65, 0x2e, 0x3b, 0x46, 0x65, 0x62, +0x2e, 0x3b, 0x4d, 0x61, 0x72, 0x2e, 0x3b, 0x41, 0x62, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x79, 0x2e, 0x3b, 0x4a, 0x75, 0x6e, +0x2e, 0x3b, 0x4a, 0x75, 0x6c, 0x2e, 0x3b, 0x41, 0x67, 0x6f, 0x2e, 0x3b, 0x53, 0x65, 0x74, 0x2e, 0x3b, 0x4f, 0x63, 0x74, +0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x69, 0x63, 0x2e, 0x3b, 0x65, 0x6e, 0x65, 0x2e, 0x3b, 0x66, 0x65, 0x62, +0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x79, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, +0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x6f, 0x2e, 0x3b, 0x73, 0x65, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, +0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x69, 0x63, 0x2e, 0x3b, 0x65, 0x6e, 0x65, 0x72, 0x6f, 0x3b, 0x66, 0x65, +0x62, 0x72, 0x65, 0x72, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, +0x79, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, +0x6f, 0x3b, 0x73, 0x65, 0x74, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, +0x6e, 0x6f, 0x76, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x69, 0x63, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, +0x4a, 0x61, 0x6e, 0x3b, 0x50, 0xe9, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0xe9, 0x69, 0x3b, +0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x73, 0x3b, 0x53, 0xe9, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, +0x4e, 0x6f, 0x70, 0x3b, 0x44, 0xe9, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x50, 0xe9, 0x62, 0x72, +0x75, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x72, 0x65, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0xe9, 0x69, +0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x67, 0x75, 0x73, 0x74, 0x75, 0x73, 0x3b, 0x53, +0xe9, 0x70, 0x74, 0xe9, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x70, +0xe9, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0xe9, 0x73, 0xe9, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x3b, 0x50, 0x3b, 0x4d, +0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4a, +0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x63, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, +0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, +0x6f, 0x76, 0x3b, 0x44, 0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, +0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x69, 0x3b, 0x4d, 0x65, 0x69, +0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x69, 0x3b, 0x53, +0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, +0x62, 0x61, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, +0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, +0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, +0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x66, 0x65, +0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, +0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x69, 0x3b, +0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, +0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x42f, 0x43d, 0x432, 0x430, +0x440, 0x3b, 0x424, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x3b, 0x41c, 0x430, 0x440, 0x442, 0x3b, 0x410, 0x43f, 0x440, 0x435, 0x43b, 0x3b, +0x41c, 0x430, 0x439, 0x3b, 0x418, 0x44e, 0x43d, 0x3b, 0x418, 0x44e, 0x43b, 0x3b, 0x410, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x421, +0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x3b, 0x41e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x3b, 0x41d, 0x43e, 0x44f, 0x431, 0x440, 0x3b, +0x414, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x3b, 0xb9c, 0xba9, 0x2e, 0x3b, 0xbaa, 0xbbf, 0xbaa, 0xbcd, 0x2e, 0x3b, 0xbae, 0xbbe, 0xbb0, +0xbcd, 0x2e, 0x3b, 0xb8f, 0xbaa, 0xbcd, 0x2e, 0x3b, 0xbae, 0xbc7, 0x3b, 0xb9c, 0xbc2, 0xba9, 0xbcd, 0x3b, 0xb9c, 0xbc2, 0xbb2, 0xbc8, +0x3b, 0xb86, 0xb95, 0x2e, 0x3b, 0xb9a, 0xbc6, 0xbaa, 0xbcd, 0x2e, 0x3b, 0xb85, 0xb95, 0xbcd, 0x2e, 0x3b, 0xba8, 0xbb5, 0x2e, 0x3b, +0xb9f, 0xbbf, 0xb9a, 0x2e, 0x3b, 0xb9c, 0xba9, 0xbb5, 0xbb0, 0xbbf, 0x3b, 0xbaa, 0xbbf, 0xbaa, 0xbcd, 0xbb0, 0xbb5, 0xbb0, 0xbbf, 0x3b, +0xbae, 0xbbe, 0xbb0, 0xbcd, 0xb9a, 0xbcd, 0x3b, 0xb8f, 0xbaa, 0xbcd, 0xbb0, 0xbb2, 0xbcd, 0x3b, 0xbae, 0xbc7, 0x3b, 0xb9c, 0xbc2, 0xba9, +0xbcd, 0x3b, 0xb9c, 0xbc2, 0xbb2, 0xbc8, 0x3b, 0xb86, 0xb95, 0xbb8, 0xbcd, 0xb9f, 0xbcd, 0x3b, 0xb9a, 0xbc6, 0xbaa, 0xbcd, 0xb9f, 0xbae, +0xbcd, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xb85, 0xb95, 0xbcd, 0xb9f, 0xbcb, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xba8, 0xbb5, 0xbae, 0xbcd, 0xbaa, 0xbb0, +0xbcd, 0x3b, 0xb9f, 0xbbf, 0xb9a, 0xbae, 0xbcd, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xb9c, 0x3b, 0xbaa, 0xbbf, 0x3b, 0xbae, 0xbbe, 0x3b, 0xb8f, +0x3b, 0xbae, 0xbc7, 0x3b, 0xb9c, 0xbc2, 0x3b, 0xb9c, 0xbc2, 0x3b, 0xb86, 0x3b, 0xb9a, 0xbc6, 0x3b, 0xb85, 0x3b, 0xba8, 0x3b, 0xb9f, +0xbbf, 0x3b, 0x433, 0x44b, 0x439, 0x43d, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x44c, 0x3b, 0x438, 0x44e, 0x43b, 0x44c, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x2e, 0x3b, 0x434, -0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x2e, 0x3b, -0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x44f, 0x3b, 0x438, 0x44e, 0x43d, 0x2e, 0x3b, 0x438, 0x44e, 0x43b, 0x2e, 0x3b, 0x430, -0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x2e, -0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, 0x44f, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x44f, -0x3b, 0x43c, 0x430, 0x440, 0x442, 0x430, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x44f, 0x3b, 0x43c, 0x430, 0x44f, 0x3b, 0x438, 0x44e, -0x43d, 0x44f, 0x3b, 0x438, 0x44e, 0x43b, 0x44f, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x430, 0x3b, 0x441, 0x435, 0x43d, 0x442, -0x44f, 0x431, 0x440, 0x44f, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44f, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x440, 0x44f, 0x3b, -0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44f, 0x3b, 0x4e, 0x79, 0x65, 0x3b, 0x46, 0x75, 0x6c, 0x3b, 0x4d, 0x62, 0xe4, 0x3b, -0x4e, 0x67, 0x75, 0x3b, 0x42, 0xea, 0x6c, 0x3b, 0x46, 0xf6, 0x6e, 0x3b, 0x4c, 0x65, 0x6e, 0x3b, 0x4b, 0xfc, 0x6b, 0x3b, -0x4d, 0x76, 0x75, 0x3b, 0x4e, 0x67, 0x62, 0x3b, 0x4e, 0x61, 0x62, 0x3b, 0x4b, 0x61, 0x6b, 0x3b, 0x4e, 0x79, 0x65, 0x6e, -0x79, 0x65, 0x3b, 0x46, 0x75, 0x6c, 0x75, 0x6e, 0x64, 0xef, 0x67, 0x69, 0x3b, 0x4d, 0x62, 0xe4, 0x6e, 0x67, 0xfc, 0x3b, -0x4e, 0x67, 0x75, 0x62, 0xf9, 0x65, 0x3b, 0x42, 0xea, 0x6c, 0xe4, 0x77, 0xfc, 0x3b, 0x46, 0xf6, 0x6e, 0x64, 0x6f, 0x3b, -0x4c, 0x65, 0x6e, 0x67, 0x75, 0x61, 0x3b, 0x4b, 0xfc, 0x6b, 0xfc, 0x72, 0xfc, 0x3b, 0x4d, 0x76, 0x75, 0x6b, 0x61, 0x3b, -0x4e, 0x67, 0x62, 0x65, 0x72, 0x65, 0x72, 0x65, 0x3b, 0x4e, 0x61, 0x62, 0xe4, 0x6e, 0x64, 0xfc, 0x72, 0x75, 0x3b, 0x4b, -0x61, 0x6b, 0x61, 0x75, 0x6b, 0x61, 0x3b, 0x4e, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x42, 0x3b, 0x46, 0x3b, 0x4c, -0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4b, 0x3b, 0x458, 0x430, 0x43d, 0x3b, 0x444, 0x435, 0x431, 0x3b, 0x43c, -0x430, 0x440, 0x3b, 0x430, 0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x3b, 0x458, 0x443, 0x43b, 0x3b, 0x430, -0x432, 0x433, 0x3b, 0x441, 0x435, 0x43f, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x432, 0x3b, 0x434, 0x435, 0x446, 0x3b, 0x458, -0x430, 0x43d, 0x443, 0x430, 0x440, 0x3b, 0x444, 0x435, 0x431, 0x440, 0x443, 0x430, 0x440, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, -0x43f, 0x440, 0x438, 0x43b, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x3b, 0x458, 0x443, 0x43b, 0x3b, 0x430, 0x432, 0x433, -0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x43e, 0x43a, 0x442, 0x43e, 0x431, 0x430, -0x440, 0x3b, 0x43d, 0x43e, 0x432, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x434, 0x435, 0x446, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, -0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, -0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, -0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, -0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, -0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, -0x61, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, -0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, -0x74, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x76, -0x67, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x458, -0x430, 0x43d, 0x3b, 0x444, 0x435, 0x431, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x458, 0x3b, -0x458, 0x443, 0x43d, 0x3b, 0x458, 0x443, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x3b, 0x43e, 0x43a, 0x442, -0x3b, 0x43d, 0x43e, 0x432, 0x3b, 0x434, 0x435, 0x446, 0x3b, 0x42f, 0x43d, 0x432, 0x2e, 0x3b, 0x424, 0x435, 0x432, 0x440, 0x2e, 0x3b, -0x41c, 0x430, 0x440, 0x442, 0x2e, 0x3b, 0x410, 0x43f, 0x440, 0x2e, 0x3b, 0x41c, 0x430, 0x439, 0x3b, 0x418, 0x44e, 0x43d, 0x44c, 0x3b, -0x418, 0x44e, 0x43b, 0x44c, 0x3b, 0x410, 0x432, 0x433, 0x2e, 0x3b, 0x421, 0x435, 0x43d, 0x442, 0x2e, 0x3b, 0x41e, 0x43a, 0x442, 0x2e, -0x3b, 0x41d, 0x43e, 0x44f, 0x431, 0x2e, 0x3b, 0x414, 0x435, 0x43a, 0x2e, 0x3b, 0x42f, 0x43d, 0x432, 0x430, 0x440, 0x44c, 0x3b, 0x424, -0x435, 0x432, 0x440, 0x430, 0x43b, 0x44c, 0x3b, 0x41c, 0x430, 0x440, 0x442, 0x44a, 0x438, 0x3b, 0x410, 0x43f, 0x440, 0x435, 0x43b, 0x44c, -0x3b, 0x41c, 0x430, 0x439, 0x3b, 0x418, 0x44e, 0x43d, 0x44c, 0x3b, 0x418, 0x44e, 0x43b, 0x44c, 0x3b, 0x410, 0x432, 0x433, 0x443, 0x441, -0x442, 0x3b, 0x421, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x41e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x41d, -0x43e, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x414, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44c, 0x3b, 0x44f, 0x43d, 0x432, 0x2e, 0x3b, 0x444, -0x435, 0x432, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, 0x430, 0x439, 0x44b, 0x3b, 0x438, -0x44e, 0x43d, 0x44b, 0x3b, 0x438, 0x44e, 0x43b, 0x44b, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, 0x43d, 0x2e, 0x3b, 0x43e, -0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x44f, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, 0x44b, -0x3b, 0x444, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x44b, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x44a, 0x438, 0x439, 0x44b, 0x3b, 0x430, 0x43f, -0x440, 0x435, 0x43b, 0x44b, 0x3b, 0x43c, 0x430, 0x439, 0x44b, 0x3b, 0x438, 0x44e, 0x43d, 0x44b, 0x3b, 0x438, 0x44e, 0x43b, 0x44b, 0x3b, -0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x44b, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44b, 0x3b, 0x43e, 0x43a, 0x442, -0x44f, 0x431, 0x440, 0x44b, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x440, 0x44b, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44b, 0x3b, -0x4e, 0x64, 0x69, 0x3b, 0x4b, 0x75, 0x6b, 0x3b, 0x4b, 0x75, 0x72, 0x3b, 0x4b, 0x75, 0x62, 0x3b, 0x43, 0x68, 0x76, 0x3b, -0x43, 0x68, 0x6b, 0x3b, 0x43, 0x68, 0x67, 0x3b, 0x4e, 0x79, 0x61, 0x3b, 0x47, 0x75, 0x6e, 0x3b, 0x47, 0x75, 0x6d, 0x3b, -0x4d, 0x62, 0x75, 0x3b, 0x5a, 0x76, 0x69, 0x3b, 0x4e, 0x64, 0x69, 0x72, 0x61, 0x3b, 0x4b, 0x75, 0x6b, 0x61, 0x64, 0x7a, -0x69, 0x3b, 0x4b, 0x75, 0x72, 0x75, 0x6d, 0x65, 0x3b, 0x4b, 0x75, 0x62, 0x76, 0x75, 0x6d, 0x62, 0x69, 0x3b, 0x43, 0x68, -0x69, 0x76, 0x61, 0x62, 0x76, 0x75, 0x3b, 0x43, 0x68, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x43, 0x68, 0x69, 0x6b, 0x75, -0x6e, 0x67, 0x75, 0x72, 0x75, 0x3b, 0x4e, 0x79, 0x61, 0x6d, 0x61, 0x76, 0x68, 0x75, 0x76, 0x68, 0x75, 0x3b, 0x47, 0x75, -0x6e, 0x79, 0x61, 0x6e, 0x61, 0x3b, 0x47, 0x75, 0x6d, 0x69, 0x67, 0x75, 0x72, 0x75, 0x3b, 0x4d, 0x62, 0x75, 0x64, 0x7a, -0x69, 0x3b, 0x5a, 0x76, 0x69, 0x74, 0x61, 0x3b, 0x4e, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x43, 0x3b, 0x43, 0x3b, -0x43, 0x3b, 0x4e, 0x3b, 0x47, 0x3b, 0x47, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x64a, 0x3b, 0x641, 0x64a, -0x628, 0x631, 0x648, 0x631, 0x64a, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x64a, 0x644, 0x3b, 0x645, 0x626, 0x64a, -0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x621, 0x650, 0x3b, 0x622, 0x6af, 0x633, 0x67d, 0x3b, 0x633, 0x64a, 0x67e, -0x67d, 0x645, 0x628, 0x631, 0x3b, 0x622, 0x6aa, 0x67d, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, 0x68a, 0x633, -0x645, 0x628, 0x631, 0x3b, 0x91c, 0x928, 0x3b, 0x92b, 0x930, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, -0x948, 0x3b, 0x92e, 0x908, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x3b, 0x905, 0x917, 0x3b, 0x938, 0x93f, 0x924, -0x902, 0x3b, 0x905, 0x915, 0x94d, 0x91f, 0x942, 0x3b, 0x928, 0x935, 0x902, 0x3b, 0x926, 0x93f, 0x938, 0x902, 0x3b, 0x91c, 0x928, 0x935, -0x930, 0x940, 0x3b, 0x92b, 0x930, 0x935, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x941, 0x3b, 0x905, 0x92a, 0x94d, 0x930, -0x948, 0x932, 0x3b, 0x92e, 0x908, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x908, 0x3b, 0x905, 0x917, 0x938, 0x94d, -0x924, 0x3b, 0x938, 0x93f, 0x924, 0x902, 0x92c, 0x930, 0x3b, 0x905, 0x915, 0x94d, 0x91f, 0x942, 0x92c, 0x930, 0x3b, 0x928, 0x935, 0x902, -0x92c, 0x930, 0x3b, 0x926, 0x93f, 0x938, 0x902, 0x92c, 0x930, 0x3b, 0x91c, 0x3b, 0x92b, 0x93c, 0x3b, 0x92e, 0x3b, 0x905, 0x3b, 0x92e, -0x3b, 0x91c, 0x942, 0x3b, 0x91c, 0x941, 0x3b, 0x905, 0x3b, 0x938, 0x93f, 0x3b, 0x905, 0x3b, 0x928, 0x3b, 0x926, 0x3b, 0x91c, 0x928, -0x3b, 0x92b, 0x930, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x948, 0x3b, 0x92e, 0x908, 0x3b, 0x91c, -0x942, 0x928, 0x3b, 0x91c, 0x941, 0x3b, 0x905, 0x917, 0x3b, 0x938, 0x93f, 0x924, 0x902, 0x3b, 0x905, 0x915, 0x94d, 0x91f, 0x942, 0x3b, -0x928, 0x935, 0x902, 0x3b, 0x926, 0x93f, 0x938, 0x902, 0x3b, 0xda2, 0xdb1, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0x3b, 0xdb8, 0xdcf, 0xdbb, 0xdca, -0x3b, 0xd85, 0xdb4, 0xdca, 0x200d, 0xdbb, 0xdda, 0xdbd, 0xdca, 0x3b, 0xdb8, 0xdd0, 0xdba, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdb1, 0xdd2, 0x3b, -0xda2, 0xdd6, 0xdbd, 0xdd2, 0x3b, 0xd85, 0xd9c, 0xddd, 0x3b, 0xdc3, 0xdd0, 0xdb4, 0xdca, 0x3b, 0xd94, 0xd9a, 0xdca, 0x3b, 0xdb1, 0xddc, -0xdc0, 0xdd0, 0x3b, 0xdaf, 0xdd9, 0xdc3, 0xdd0, 0x3b, 0xda2, 0xdb1, 0xdc0, 0xdcf, 0xdbb, 0xdd2, 0x3b, 0xdb4, 0xdd9, 0xdb6, 0xdbb, 0xdc0, -0xdcf, 0xdbb, 0xdd2, 0x3b, 0xdb8, 0xdcf, 0xdbb, 0xdca, 0xdad, 0xdd4, 0x3b, 0xd85, 0xdb4, 0xdca, 0x200d, 0xdbb, 0xdda, 0xdbd, 0xdca, 0x3b, -0xdb8, 0xdd0, 0xdba, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdb1, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdbd, 0xdd2, 0x3b, 0xd85, 0xd9c, 0xddd, 0xdc3, 0xdca, -0xdad, 0xdd4, 0x3b, 0xdc3, 0xdd0, 0xdb4, 0xdca, 0xdad, 0xdd0, 0xdb8, 0xdca, 0xdb6, 0xdbb, 0xdca, 0x3b, 0xd94, 0xd9a, 0xdca, 0xdad, 0xddd, -0xdb6, 0xdbb, 0xdca, 0x3b, 0xdb1, 0xddc, 0xdc0, 0xdd0, 0xdb8, 0xdca, 0xdb6, 0xdbb, 0xdca, 0x3b, 0xdaf, 0xdd9, 0xdc3, 0xdd0, 0xdb8, 0xdca, -0xdb6, 0xdbb, 0xdca, 0x3b, 0xda2, 0x3b, 0xdb4, 0xdd9, 0x3b, 0xdb8, 0xdcf, 0x3b, 0xd85, 0x3b, 0xdb8, 0xdd0, 0x3b, 0xda2, 0xdd6, 0x3b, -0xda2, 0xdd6, 0x3b, 0xd85, 0x3b, 0xdc3, 0xdd0, 0x3b, 0xd94, 0x3b, 0xdb1, 0xdd9, 0x3b, 0xdaf, 0xdd9, 0x3b, 0xda2, 0xdb1, 0x3b, 0xdb4, -0xdd9, 0xdb6, 0x3b, 0xdb8, 0xdcf, 0xdbb, 0xdca, 0xdad, 0xdd4, 0x3b, 0xd85, 0xdb4, 0xdca, 0x200d, 0xdbb, 0xdda, 0xdbd, 0xdca, 0x3b, 0xdb8, -0xdd0, 0xdba, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdb1, 0xdd2, 0x3b, 0xda2, 0xdd6, 0xdbd, 0xdd2, 0x3b, 0xd85, 0xd9c, 0xddd, 0x3b, 0xdc3, 0xdd0, -0xdb4, 0xdca, 0x3b, 0xd94, 0xd9a, 0xdca, 0x3b, 0xdb1, 0xddc, 0xdc0, 0xdd0, 0x3b, 0xdaf, 0xdd9, 0xdc3, 0xdd0, 0x3b, 0x6a, 0x61, 0x6e, -0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0xe1, 0x6a, 0x3b, 0x6a, 0xfa, 0x6e, -0x3b, 0x6a, 0xfa, 0x6c, 0x3b, 0x61, 0x75, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, -0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0xe1, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0xe1, 0x72, 0x3b, -0x6d, 0x61, 0x72, 0x65, 0x63, 0x3b, 0x61, 0x70, 0x72, 0xed, 0x6c, 0x3b, 0x6d, 0xe1, 0x6a, 0x3b, 0x6a, 0xfa, 0x6e, 0x3b, -0x6a, 0xfa, 0x6c, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, -0x3b, 0x6f, 0x6b, 0x74, 0xf3, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, -0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0xe1, 0x72, 0x61, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, -0xe1, 0x72, 0x61, 0x3b, 0x6d, 0x61, 0x72, 0x63, 0x61, 0x3b, 0x61, 0x70, 0x72, 0xed, 0x6c, 0x61, 0x3b, 0x6d, 0xe1, 0x6a, -0x61, 0x3b, 0x6a, 0xfa, 0x6e, 0x61, 0x3b, 0x6a, 0xfa, 0x6c, 0x61, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x61, 0x3b, -0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x6f, 0x6b, 0x74, 0xf3, 0x62, 0x72, 0x61, 0x3b, 0x6e, 0x6f, -0x76, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, -0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, -0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x76, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, -0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, -0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x65, 0x63, 0x3b, 0x61, 0x70, 0x72, 0x69, -0x6c, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6a, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6a, 0x3b, 0x61, 0x76, -0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, -0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, -0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x79, -0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4c, 0x75, 0x6c, 0x3b, 0x4f, 0x67, 0x73, 0x3b, 0x53, 0x65, 0x62, 0x3b, 0x4f, 0x6b, 0x74, -0x3b, 0x4e, 0x6f, 0x66, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x6e, 0x61, 0x61, 0x79, 0x6f, 0x3b, 0x46, 0x65, -0x62, 0x72, 0x61, 0x61, 0x79, 0x6f, 0x3b, 0x4d, 0x61, 0x61, 0x72, 0x73, 0x6f, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x69, 0x6c, -0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x4a, 0x75, 0x75, 0x6e, 0x3b, 0x4c, 0x75, 0x75, 0x6c, 0x69, 0x79, 0x6f, 0x3b, 0x4f, 0x67, -0x6f, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x62, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x6f, 0x62, -0x61, 0x72, 0x3b, 0x4e, 0x6f, 0x66, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x72, -0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4c, 0x3b, 0x4f, 0x3b, 0x53, 0x3b, 0x4f, -0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4b, 0x6f, 0x6f, 0x62, 0x61, 0x61, 0x64, 0x3b, 0x42, -0x69, 0x73, 0x68, 0x61, 0x20, 0x4c, 0x61, 0x62, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x53, 0x61, -0x64, 0x64, 0x65, 0x78, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x41, 0x66, 0x72, 0x61, 0x61, 0x64, -0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x53, 0x68, 0x61, 0x6e, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, -0x20, 0x4c, 0x69, 0x78, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x54, 0x6f, 0x64, 0x6f, 0x62, 0x61, -0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x53, 0x69, 0x64, 0x65, 0x65, 0x64, 0x61, 0x61, 0x64, 0x3b, 0x42, -0x69, 0x73, 0x68, 0x61, 0x20, 0x53, 0x61, 0x67, 0x61, 0x61, 0x6c, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, -0x20, 0x54, 0x6f, 0x62, 0x6e, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4b, 0x6f, 0x77, 0x20, 0x69, -0x79, 0x6f, 0x20, 0x54, 0x6f, 0x62, 0x6e, 0x61, 0x61, 0x64, 0x3b, 0x42, 0x69, 0x73, 0x68, 0x61, 0x20, 0x4c, 0x61, 0x62, -0x61, 0x20, 0x69, 0x79, 0x6f, 0x20, 0x54, 0x6f, 0x62, 0x6e, 0x61, 0x61, 0x64, 0x3b, 0x65, 0x6e, 0x65, 0x2e, 0x3b, 0x66, -0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x2e, 0x3b, 0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x79, 0x2e, 0x3b, 0x6a, -0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x6f, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x2e, 0x3b, -0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x69, 0x63, 0x2e, 0x3b, 0x65, 0x6e, 0x65, 0x72, 0x6f, -0x3b, 0x66, 0x65, 0x62, 0x72, 0x65, 0x72, 0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, -0x3b, 0x6d, 0x61, 0x79, 0x6f, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6f, 0x3b, 0x61, 0x67, -0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x63, 0x74, 0x75, -0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x69, 0x63, 0x69, 0x65, 0x6d, -0x62, 0x72, 0x65, 0x3b, 0x45, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, -0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x65, 0x6e, 0x65, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, -0x72, 0x2e, 0x3b, 0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x79, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, -0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x6f, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, -0x76, 0x2e, 0x3b, 0x64, 0x69, 0x63, 0x2e, 0x3b, 0x45, 0x6e, 0x65, 0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, 0x4d, 0x61, -0x72, 0x2e, 0x3b, 0x41, 0x62, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x79, 0x2e, 0x3b, 0x4a, 0x75, 0x6e, 0x2e, 0x3b, 0x4a, 0x75, -0x6c, 0x2e, 0x3b, 0x41, 0x67, 0x6f, 0x2e, 0x3b, 0x53, 0x65, 0x74, 0x2e, 0x3b, 0x4f, 0x63, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, -0x76, 0x2e, 0x3b, 0x44, 0x69, 0x63, 0x2e, 0x3b, 0x65, 0x6e, 0x65, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, -0x72, 0x2e, 0x3b, 0x61, 0x62, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x79, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, -0x6c, 0x2e, 0x3b, 0x61, 0x67, 0x6f, 0x2e, 0x3b, 0x73, 0x65, 0x74, 0x2e, 0x3b, 0x6f, 0x63, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, -0x76, 0x2e, 0x3b, 0x64, 0x69, 0x63, 0x2e, 0x3b, 0x65, 0x6e, 0x65, 0x72, 0x6f, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x65, 0x72, -0x6f, 0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x6f, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x6f, 0x3b, 0x6a, -0x75, 0x6e, 0x69, 0x6f, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6f, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x73, 0x65, -0x74, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x63, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x6e, 0x6f, 0x76, 0x69, -0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x69, 0x63, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, -0x50, 0xe9, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0xe9, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, -0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x73, 0x3b, 0x53, 0xe9, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x70, 0x3b, -0x44, 0xe9, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x50, 0xe9, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, -0x3b, 0x4d, 0x61, 0x72, 0x65, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0xe9, 0x69, 0x3b, 0x4a, 0x75, 0x6e, -0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x67, 0x75, 0x73, 0x74, 0x75, 0x73, 0x3b, 0x53, 0xe9, 0x70, 0x74, 0xe9, -0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x70, 0xe9, 0x6d, 0x62, 0x65, -0x72, 0x3b, 0x44, 0xe9, 0x73, 0xe9, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x3b, 0x50, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, -0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, -0x65, 0x62, 0x3b, 0x4d, 0x61, 0x63, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, +0x435, 0x43a, 0x2e, 0x3b, 0x433, 0x44b, 0x439, 0x43d, 0x432, 0x430, 0x440, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x44c, 0x3b, +0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x44c, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x44c, +0x3b, 0x438, 0x44e, 0x43b, 0x44c, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, +0x44c, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x434, 0x435, 0x43a, +0x430, 0x431, 0x440, 0x44c, 0x3b, 0xc1c, 0xc28, 0x3b, 0xc2b, 0xc3f, 0xc2c, 0xc4d, 0xc30, 0x3b, 0xc2e, 0xc3e, 0xc30, 0xc4d, 0xc1a, 0xc3f, +0x3b, 0xc0f, 0xc2a, 0xc4d, 0xc30, 0xc3f, 0x3b, 0xc2e, 0xc47, 0x3b, 0xc1c, 0xc42, 0xc28, 0xc4d, 0x3b, 0xc1c, 0xc41, 0xc32, 0xc48, 0x3b, +0xc06, 0xc17, 0x3b, 0xc38, 0xc46, 0xc2a, 0xc4d, 0xc1f, 0xc46, 0xc02, 0x3b, 0xc05, 0xc15, 0xc4d, 0xc1f, 0xc4b, 0x3b, 0xc28, 0xc35, 0xc02, +0x3b, 0xc21, 0xc3f, 0xc38, 0xc46, 0xc02, 0x3b, 0xc1c, 0xc28, 0xc35, 0xc30, 0xc3f, 0x3b, 0xc2b, 0xc3f, 0xc2c, 0xc4d, 0xc30, 0xc35, 0xc30, +0xc3f, 0x3b, 0xc2e, 0xc3e, 0xc30, 0xc4d, 0xc1a, 0xc3f, 0x3b, 0xc0f, 0xc2a, 0xc4d, 0xc30, 0xc3f, 0xc32, 0xc4d, 0x3b, 0xc2e, 0xc47, 0x3b, +0xc1c, 0xc42, 0xc28, 0xc4d, 0x3b, 0xc1c, 0xc41, 0xc32, 0xc48, 0x3b, 0xc06, 0xc17, 0xc38, 0xc4d, 0xc1f, 0xc41, 0x3b, 0xc38, 0xc46, 0xc2a, +0xc4d, 0xc1f, 0xc46, 0xc02, 0xc2c, 0xc30, 0xc4d, 0x3b, 0xc05, 0xc15, 0xc4d, 0xc1f, 0xc4b, 0xc2c, 0xc30, 0xc4d, 0x3b, 0xc28, 0xc35, 0xc02, +0xc2c, 0xc30, 0xc4d, 0x3b, 0xc21, 0xc3f, 0xc38, 0xc46, 0xc02, 0xc2c, 0xc30, 0xc4d, 0x3b, 0xc1c, 0x3b, 0xc2b, 0xc3f, 0x3b, 0xc2e, 0xc3e, +0x3b, 0xc0f, 0x3b, 0xc2e, 0xc47, 0x3b, 0xc1c, 0xc42, 0x3b, 0xc1c, 0xc41, 0x3b, 0xc06, 0x3b, 0xc38, 0xc46, 0x3b, 0xc05, 0x3b, 0xc28, +0x3b, 0xc21, 0xc3f, 0x3b, 0xe21, 0x2e, 0xe04, 0x2e, 0x3b, 0xe01, 0x2e, 0xe1e, 0x2e, 0x3b, 0xe21, 0xe35, 0x2e, 0xe04, 0x2e, 0x3b, +0xe40, 0xe21, 0x2e, 0xe22, 0x2e, 0x3b, 0xe1e, 0x2e, 0xe04, 0x2e, 0x3b, 0xe21, 0xe34, 0x2e, 0xe22, 0x2e, 0x3b, 0xe01, 0x2e, 0xe04, +0x2e, 0x3b, 0xe2a, 0x2e, 0xe04, 0x2e, 0x3b, 0xe01, 0x2e, 0xe22, 0x2e, 0x3b, 0xe15, 0x2e, 0xe04, 0x2e, 0x3b, 0xe1e, 0x2e, 0xe22, +0x2e, 0x3b, 0xe18, 0x2e, 0xe04, 0x2e, 0x3b, 0xe21, 0xe01, 0xe23, 0xe32, 0xe04, 0xe21, 0x3b, 0xe01, 0xe38, 0xe21, 0xe20, 0xe32, 0xe1e, +0xe31, 0xe19, 0xe18, 0xe4c, 0x3b, 0xe21, 0xe35, 0xe19, 0xe32, 0xe04, 0xe21, 0x3b, 0xe40, 0xe21, 0xe29, 0xe32, 0xe22, 0xe19, 0x3b, 0xe1e, +0xe24, 0xe29, 0xe20, 0xe32, 0xe04, 0xe21, 0x3b, 0xe21, 0xe34, 0xe16, 0xe38, 0xe19, 0xe32, 0xe22, 0xe19, 0x3b, 0xe01, 0xe23, 0xe01, 0xe0e, +0xe32, 0xe04, 0xe21, 0x3b, 0xe2a, 0xe34, 0xe07, 0xe2b, 0xe32, 0xe04, 0xe21, 0x3b, 0xe01, 0xe31, 0xe19, 0xe22, 0xe32, 0xe22, 0xe19, 0x3b, +0xe15, 0xe38, 0xe25, 0xe32, 0xe04, 0xe21, 0x3b, 0xe1e, 0xe24, 0xe28, 0xe08, 0xe34, 0xe01, 0xe32, 0xe22, 0xe19, 0x3b, 0xe18, 0xe31, 0xe19, +0xe27, 0xe32, 0xe04, 0xe21, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xf44, 0xf0b, 0xf54, 0xf7c, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, +0xf56, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf42, 0xf66, 0xf74, 0xf58, 0xf0b, +0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf5e, 0xf72, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, +0xf63, 0xf94, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xfb2, 0xf74, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, +0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf51, 0xf74, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf62, 0xf92, +0xfb1, 0xf51, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xf42, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, +0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, +0xf45, 0xf72, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, +0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xf44, 0xf0b, 0xf54, 0xf7c, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, +0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf42, 0xf66, 0xf74, 0xf58, 0xf0b, 0xf54, 0x3b, 0xf5f, +0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf5e, 0xf72, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf63, 0xf94, 0xf0b, 0xf54, 0x3b, +0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xfb2, 0xf74, 0xf42, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf51, 0xf74, +0xf53, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf62, 0xf92, 0xfb1, 0xf51, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, +0xf56, 0xf0b, 0xf51, 0xf42, 0xf74, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf54, 0x3b, 0xf5f, +0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf45, 0xf72, 0xf42, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, +0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0x3b, 0x1325, 0x122a, 0x3b, 0x1208, 0x12ab, 0x3b, 0x1218, 0x130b, 0x3b, +0x121a, 0x12eb, 0x3b, 0x130d, 0x1295, 0x3b, 0x1230, 0x1290, 0x3b, 0x1213, 0x121d, 0x3b, 0x1290, 0x1213, 0x3b, 0x1218, 0x1235, 0x3b, 0x1325, 0x1245, +0x3b, 0x1215, 0x12f3, 0x3b, 0x1273, 0x1215, 0x3b, 0x1325, 0x122a, 0x3b, 0x1208, 0x12ab, 0x1272, 0x1275, 0x3b, 0x1218, 0x130b, 0x1262, 0x1275, 0x3b, +0x121a, 0x12eb, 0x12dd, 0x12eb, 0x3b, 0x130d, 0x1295, 0x1266, 0x1275, 0x3b, 0x1230, 0x1290, 0x3b, 0x1213, 0x121d, 0x1208, 0x3b, 0x1290, 0x1213, 0x1230, +0x3b, 0x1218, 0x1235, 0x12a8, 0x1228, 0x121d, 0x3b, 0x1325, 0x1245, 0x121d, 0x1272, 0x3b, 0x1215, 0x12f3, 0x122d, 0x3b, 0x1273, 0x1215, 0x1233, 0x1235, +0x3b, 0x1325, 0x3b, 0x1208, 0x3b, 0x1218, 0x3b, 0x121a, 0x3b, 0x130d, 0x3b, 0x1230, 0x3b, 0x1213, 0x3b, 0x1290, 0x3b, 0x1218, 0x3b, 0x1325, +0x3b, 0x1215, 0x3b, 0x1273, 0x3b, 0x53, 0x101, 0x6e, 0x3b, 0x46, 0x113, 0x70, 0x3b, 0x4d, 0x61, 0x2bb, 0x61, 0x3b, 0x2bb, 0x45, +0x70, 0x65, 0x3b, 0x4d, 0x113, 0x3b, 0x53, 0x75, 0x6e, 0x3b, 0x53, 0x69, 0x75, 0x3b, 0x2bb, 0x41, 0x6f, 0x6b, 0x3b, 0x53, +0x65, 0x70, 0x3b, 0x2bb, 0x4f, 0x6b, 0x61, 0x3b, 0x4e, 0x14d, 0x76, 0x3b, 0x54, 0x12b, 0x73, 0x3b, 0x53, 0x101, 0x6e, 0x75, +0x61, 0x6c, 0x69, 0x3b, 0x46, 0x113, 0x70, 0x75, 0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x61, 0x2bb, 0x61, 0x73, 0x69, 0x3b, 0x2bb, +0x45, 0x70, 0x65, 0x6c, 0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x113, 0x3b, 0x53, 0x75, 0x6e, 0x65, 0x3b, 0x53, 0x69, 0x75, 0x6c, +0x61, 0x69, 0x3b, 0x2bb, 0x41, 0x6f, 0x6b, 0x6f, 0x73, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x69, 0x74, 0x65, 0x6d, 0x61, 0x3b, +0x2bb, 0x4f, 0x6b, 0x61, 0x74, 0x6f, 0x70, 0x61, 0x3b, 0x4e, 0x14d, 0x76, 0x65, 0x6d, 0x61, 0x3b, 0x54, 0x12b, 0x73, 0x65, +0x6d, 0x61, 0x3b, 0x53, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x41, 0x3b, 0x53, +0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x4f, 0x63, 0x61, 0x3b, 0x15e, 0x75, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4e, +0x69, 0x73, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x48, 0x61, 0x7a, 0x3b, 0x54, 0x65, 0x6d, 0x3b, 0x41, 0x11f, 0x75, 0x3b, 0x45, +0x79, 0x6c, 0x3b, 0x45, 0x6b, 0x69, 0x3b, 0x4b, 0x61, 0x73, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x4f, 0x63, 0x61, 0x6b, 0x3b, +0x15e, 0x75, 0x62, 0x61, 0x74, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x3b, 0x4e, 0x69, 0x73, 0x61, 0x6e, 0x3b, 0x4d, 0x61, 0x79, +0x131, 0x73, 0x3b, 0x48, 0x61, 0x7a, 0x69, 0x72, 0x61, 0x6e, 0x3b, 0x54, 0x65, 0x6d, 0x6d, 0x75, 0x7a, 0x3b, 0x41, 0x11f, +0x75, 0x73, 0x74, 0x6f, 0x73, 0x3b, 0x45, 0x79, 0x6c, 0xfc, 0x6c, 0x3b, 0x45, 0x6b, 0x69, 0x6d, 0x3b, 0x4b, 0x61, 0x73, +0x131, 0x6d, 0x3b, 0x41, 0x72, 0x61, 0x6c, 0x131, 0x6b, 0x3b, 0x4f, 0x3b, 0x15e, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x4d, 0x3b, +0x48, 0x3b, 0x54, 0x3b, 0x41, 0x3b, 0x45, 0x3b, 0x45, 0x3b, 0x4b, 0x3b, 0x41, 0x3b, 0xdd, 0x61, 0x6e, 0x3b, 0x46, 0x65, +0x77, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0xfd, 0x3b, 0x49, 0xfd, 0x75, 0x6e, 0x3b, 0x49, +0xfd, 0x75, 0x6c, 0x3b, 0x41, 0x77, 0x67, 0x3b, 0x53, 0x65, 0x6e, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0xfd, 0x3b, +0x44, 0x65, 0x6b, 0x3b, 0xdd, 0x61, 0x6e, 0x77, 0x61, 0x72, 0x3b, 0x46, 0x65, 0x77, 0x72, 0x61, 0x6c, 0x3b, 0x4d, 0x61, +0x72, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x4d, 0x61, 0xfd, 0x3b, 0x49, 0xfd, 0x75, 0x6e, 0x3b, 0x49, 0xfd, +0x75, 0x6c, 0x3b, 0x41, 0x77, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x6e, 0x74, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x4f, +0x6b, 0x74, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x4e, 0x6f, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x44, 0x65, 0x6b, 0x61, 0x62, 0x72, +0x3b, 0xdd, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, +0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0xfd, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x77, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, +0x72, 0x3b, 0x6d, 0x61, 0xfd, 0x3b, 0x69, 0xfd, 0x75, 0x6e, 0x3b, 0x69, 0xfd, 0x75, 0x6c, 0x3b, 0x61, 0x77, 0x67, 0x3b, +0x73, 0x65, 0x6e, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0xfd, 0x3b, 0x64, 0x65, 0x6b, 0x3b, 0xfd, 0x61, 0x6e, 0x77, +0x61, 0x72, 0x3b, 0x66, 0x65, 0x77, 0x72, 0x61, 0x6c, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x65, 0x6c, +0x3b, 0x6d, 0x61, 0xfd, 0x3b, 0x69, 0xfd, 0x75, 0x6e, 0x3b, 0x69, 0xfd, 0x75, 0x6c, 0x3b, 0x61, 0x77, 0x67, 0x75, 0x73, +0x74, 0x3b, 0x73, 0x65, 0x6e, 0x74, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x6e, +0x6f, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x64, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, 0x64a, 0x627, 0x646, 0x6cb, 0x627, 0x631, 0x3b, +0x641, 0x6d0, 0x6cb, 0x631, 0x627, 0x644, 0x3b, 0x645, 0x627, 0x631, 0x62a, 0x3b, 0x626, 0x627, 0x67e, 0x631, 0x6d0, 0x644, 0x3b, 0x645, +0x627, 0x64a, 0x3b, 0x626, 0x649, 0x64a, 0x6c7, 0x646, 0x3b, 0x626, 0x649, 0x64a, 0x6c7, 0x644, 0x3b, 0x626, 0x627, 0x6cb, 0x63a, 0x6c7, +0x633, 0x62a, 0x3b, 0x633, 0x6d0, 0x646, 0x62a, 0x6d5, 0x628, 0x649, 0x631, 0x3b, 0x626, 0x6c6, 0x643, 0x62a, 0x6d5, 0x628, 0x649, 0x631, +0x3b, 0x646, 0x648, 0x64a, 0x627, 0x628, 0x649, 0x631, 0x3b, 0x62f, 0x6d0, 0x643, 0x627, 0x628, 0x649, 0x631, 0x3b, 0x441, 0x456, 0x447, +0x3b, 0x43b, 0x44e, 0x442, 0x3b, 0x431, 0x435, 0x440, 0x3b, 0x43a, 0x432, 0x456, 0x3b, 0x442, 0x440, 0x430, 0x3b, 0x447, 0x435, 0x440, +0x3b, 0x43b, 0x438, 0x43f, 0x3b, 0x441, 0x435, 0x440, 0x3b, 0x432, 0x435, 0x440, 0x3b, 0x436, 0x43e, 0x432, 0x3b, 0x43b, 0x438, 0x441, +0x3b, 0x433, 0x440, 0x443, 0x3b, 0x441, 0x456, 0x447, 0x435, 0x43d, 0x44c, 0x3b, 0x43b, 0x44e, 0x442, 0x438, 0x439, 0x3b, 0x431, 0x435, +0x440, 0x435, 0x437, 0x435, 0x43d, 0x44c, 0x3b, 0x43a, 0x432, 0x456, 0x442, 0x435, 0x43d, 0x44c, 0x3b, 0x442, 0x440, 0x430, 0x432, 0x435, +0x43d, 0x44c, 0x3b, 0x447, 0x435, 0x440, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x43b, 0x438, 0x43f, 0x435, 0x43d, 0x44c, 0x3b, 0x441, 0x435, +0x440, 0x43f, 0x435, 0x43d, 0x44c, 0x3b, 0x432, 0x435, 0x440, 0x435, 0x441, 0x435, 0x43d, 0x44c, 0x3b, 0x436, 0x43e, 0x432, 0x442, 0x435, +0x43d, 0x44c, 0x3b, 0x43b, 0x438, 0x441, 0x442, 0x43e, 0x43f, 0x430, 0x434, 0x3b, 0x433, 0x440, 0x443, 0x434, 0x435, 0x43d, 0x44c, 0x3b, +0x421, 0x3b, 0x41b, 0x3b, 0x411, 0x3b, 0x41a, 0x3b, 0x422, 0x3b, 0x427, 0x3b, 0x41b, 0x3b, 0x421, 0x3b, 0x412, 0x3b, 0x416, 0x3b, +0x41b, 0x3b, 0x413, 0x3b, 0x441, 0x456, 0x447, 0x2e, 0x3b, 0x43b, 0x44e, 0x442, 0x2e, 0x3b, 0x431, 0x435, 0x440, 0x2e, 0x3b, 0x43a, +0x432, 0x456, 0x442, 0x2e, 0x3b, 0x442, 0x440, 0x430, 0x432, 0x2e, 0x3b, 0x447, 0x435, 0x440, 0x432, 0x2e, 0x3b, 0x43b, 0x438, 0x43f, +0x2e, 0x3b, 0x441, 0x435, 0x440, 0x43f, 0x2e, 0x3b, 0x432, 0x435, 0x440, 0x2e, 0x3b, 0x436, 0x43e, 0x432, 0x442, 0x2e, 0x3b, 0x43b, +0x438, 0x441, 0x442, 0x2e, 0x3b, 0x433, 0x440, 0x443, 0x434, 0x2e, 0x3b, 0x441, 0x456, 0x447, 0x43d, 0x44f, 0x3b, 0x43b, 0x44e, 0x442, +0x43e, 0x433, 0x43e, 0x3b, 0x431, 0x435, 0x440, 0x435, 0x437, 0x43d, 0x44f, 0x3b, 0x43a, 0x432, 0x456, 0x442, 0x43d, 0x44f, 0x3b, 0x442, +0x440, 0x430, 0x432, 0x43d, 0x44f, 0x3b, 0x447, 0x435, 0x440, 0x432, 0x43d, 0x44f, 0x3b, 0x43b, 0x438, 0x43f, 0x43d, 0x44f, 0x3b, 0x441, +0x435, 0x440, 0x43f, 0x43d, 0x44f, 0x3b, 0x432, 0x435, 0x440, 0x435, 0x441, 0x43d, 0x44f, 0x3b, 0x436, 0x43e, 0x432, 0x442, 0x43d, 0x44f, +0x3b, 0x43b, 0x438, 0x441, 0x442, 0x43e, 0x43f, 0x430, 0x434, 0x430, 0x3b, 0x433, 0x440, 0x443, 0x434, 0x43d, 0x44f, 0x3b, 0x441, 0x3b, +0x43b, 0x3b, 0x431, 0x3b, 0x43a, 0x3b, 0x442, 0x3b, 0x447, 0x3b, 0x43b, 0x3b, 0x441, 0x3b, 0x432, 0x3b, 0x436, 0x3b, 0x43b, 0x3b, +0x433, 0x3b, 0x62c, 0x646, 0x648, 0x631, 0x6cc, 0x3b, 0x641, 0x631, 0x648, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, +0x67e, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x626, 0x6cc, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x626, 0x6cc, 0x3b, +0x627, 0x6af, 0x633, 0x62a, 0x3b, 0x633, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, +0x645, 0x628, 0x631, 0x3b, 0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x59, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x76, 0x3b, 0x4d, 0x61, +0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x49, 0x79, 0x6e, 0x3b, 0x49, 0x79, 0x6c, 0x3b, 0x41, 0x76, +0x67, 0x3b, 0x53, 0x65, 0x6e, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x79, 0x3b, 0x44, 0x65, 0x6b, 0x3b, 0x59, 0x61, +0x6e, 0x76, 0x61, 0x72, 0x3b, 0x46, 0x65, 0x76, 0x72, 0x61, 0x6c, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x3b, 0x41, 0x70, 0x72, +0x65, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x49, 0x79, 0x75, 0x6e, 0x3b, 0x49, 0x79, 0x75, 0x6c, 0x3b, 0x41, 0x76, 0x67, +0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x6e, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x4e, +0x6f, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x44, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, 0x59, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, +0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x79, 0x61, 0x6e, +0x3b, 0x66, 0x65, 0x76, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x69, 0x79, 0x6e, +0x3b, 0x69, 0x79, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x3b, 0x73, 0x65, 0x6e, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x79, +0x3b, 0x64, 0x65, 0x6b, 0x3b, 0x79, 0x61, 0x6e, 0x76, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x76, 0x72, 0x61, 0x6c, 0x3b, 0x6d, +0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x69, 0x79, 0x75, 0x6e, 0x3b, 0x69, +0x79, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x6f, +0x6b, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x6e, 0x6f, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x64, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, +0x62c, 0x646, 0x648, 0x3b, 0x641, 0x628, 0x631, 0x3b, 0x645, 0x627, 0x631, 0x3b, 0x627, 0x67e, 0x631, 0x3b, 0x645, 0x6cc, 0x3b, 0x62c, +0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x3b, 0x627, 0x6af, 0x633, 0x3b, 0x633, 0x67e, 0x62a, 0x3b, 0x627, 0x6a9, 0x62a, 0x3b, 0x646, +0x648, 0x645, 0x3b, 0x62f, 0x633, 0x645, 0x3b, 0x44f, 0x43d, 0x432, 0x3b, 0x444, 0x435, 0x432, 0x3b, 0x43c, 0x430, 0x440, 0x3b, 0x430, +0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x3b, 0x438, 0x44e, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, +0x435, 0x43d, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x44f, 0x3b, 0x434, 0x435, 0x43a, 0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, +0x3b, 0x444, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x3b, 0x43c, +0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x3b, 0x438, 0x44e, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, +0x43d, 0x442, 0x44f, 0x431, 0x440, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x440, 0x3b, 0x434, +0x435, 0x43a, 0x430, 0x431, 0x440, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x31, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x32, 0x3b, 0x54, 0x68, +0x67, 0x20, 0x33, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x34, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x35, 0x3b, 0x54, 0x68, 0x67, 0x20, +0x36, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x37, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x38, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x39, 0x3b, +0x54, 0x68, 0x67, 0x20, 0x31, 0x30, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x31, 0x31, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x31, 0x32, +0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x32, 0x3b, 0x54, 0x68, 0xe1, +0x6e, 0x67, 0x20, 0x33, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x34, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x35, +0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x36, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x37, 0x3b, 0x54, 0x68, 0xe1, +0x6e, 0x67, 0x20, 0x38, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x39, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, +0x30, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x31, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x32, 0x3b, +0x74, 0x68, 0x67, 0x20, 0x31, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x32, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x33, 0x3b, 0x74, 0x68, +0x67, 0x20, 0x34, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x35, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x36, 0x3b, 0x74, 0x68, 0x67, 0x20, +0x37, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x38, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x39, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x31, 0x30, +0x3b, 0x74, 0x68, 0x67, 0x20, 0x31, 0x31, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x31, 0x32, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, +0x20, 0x31, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x32, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x33, 0x3b, 0x74, +0x68, 0xe1, 0x6e, 0x67, 0x20, 0x34, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x35, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, +0x20, 0x36, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x37, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x38, 0x3b, 0x74, +0x68, 0xe1, 0x6e, 0x67, 0x20, 0x39, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x30, 0x3b, 0x74, 0x68, 0xe1, 0x6e, +0x67, 0x20, 0x31, 0x31, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x32, 0x3b, 0x49, 0x6f, 0x6e, 0x3b, 0x43, 0x68, +0x77, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x45, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4d, 0x65, 0x68, 0x3b, 0x47, 0x6f, +0x72, 0x3b, 0x41, 0x77, 0x73, 0x74, 0x3b, 0x4d, 0x65, 0x64, 0x69, 0x3b, 0x48, 0x79, 0x64, 0x3b, 0x54, 0x61, 0x63, 0x68, +0x3b, 0x52, 0x68, 0x61, 0x67, 0x3b, 0x49, 0x6f, 0x6e, 0x61, 0x77, 0x72, 0x3b, 0x43, 0x68, 0x77, 0x65, 0x66, 0x72, 0x6f, +0x72, 0x3b, 0x4d, 0x61, 0x77, 0x72, 0x74, 0x68, 0x3b, 0x45, 0x62, 0x72, 0x69, 0x6c, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x3b, +0x4d, 0x65, 0x68, 0x65, 0x66, 0x69, 0x6e, 0x3b, 0x47, 0x6f, 0x72, 0x66, 0x66, 0x65, 0x6e, 0x6e, 0x61, 0x66, 0x3b, 0x41, +0x77, 0x73, 0x74, 0x3b, 0x4d, 0x65, 0x64, 0x69, 0x3b, 0x48, 0x79, 0x64, 0x72, 0x65, 0x66, 0x3b, 0x54, 0x61, 0x63, 0x68, +0x77, 0x65, 0x64, 0x64, 0x3b, 0x52, 0x68, 0x61, 0x67, 0x66, 0x79, 0x72, 0x3b, 0x49, 0x3b, 0x43, 0x68, 0x3b, 0x4d, 0x3b, +0x45, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x52, 0x68, 0x3b, 0x49, +0x6f, 0x6e, 0x3b, 0x43, 0x68, 0x77, 0x65, 0x66, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x45, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x69, +0x3b, 0x4d, 0x65, 0x68, 0x3b, 0x47, 0x6f, 0x72, 0x66, 0x66, 0x3b, 0x41, 0x77, 0x73, 0x74, 0x3b, 0x4d, 0x65, 0x64, 0x69, +0x3b, 0x48, 0x79, 0x64, 0x3b, 0x54, 0x61, 0x63, 0x68, 0x3b, 0x52, 0x68, 0x61, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x3b, 0x46, +0x65, 0x77, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x77, 0x72, 0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x53, 0x75, 0x77, 0x3b, 0x53, +0x75, 0x6c, 0x3b, 0x55, 0x74, 0x3b, 0x53, 0xe0, 0x74, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x77, 0x3b, 0x44, 0x65, +0x73, 0x3b, 0x53, 0x61, 0x6d, 0x77, 0x69, 0x79, 0x65, 0x65, 0x3b, 0x46, 0x65, 0x77, 0x72, 0x69, 0x79, 0x65, 0x65, 0x3b, +0x4d, 0x61, 0x72, 0x73, 0x3b, 0x41, 0x77, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x53, 0x75, 0x77, 0x65, 0x3b, +0x53, 0x75, 0x6c, 0x65, 0x74, 0x3b, 0x55, 0x74, 0x3b, 0x53, 0xe0, 0x74, 0x74, 0x75, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4f, +0x6b, 0x74, 0x6f, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x4e, 0x6f, 0x77, 0xe0, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x44, 0x65, 0x73, +0xe0, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x74, 0x3b, 0x45, 0x70, +0x72, 0x3b, 0x4d, 0x65, 0x79, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x61, 0x3b, 0x53, 0x65, +0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x79, 0x75, 0x77, +0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x77, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x74, 0x73, 0x68, 0x69, +0x3b, 0x45, 0x70, 0x72, 0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x65, 0x79, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, +0x6c, 0x61, 0x79, 0x69, 0x3b, 0x41, 0x67, 0x61, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, +0x3b, 0x4f, 0x6b, 0x74, 0x68, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, +0x65, 0x6d, 0x62, 0x61, 0x3b, 0x5d9, 0x5d0, 0x5b7, 0x5e0, 0x3b, 0x5e4, 0x5bf, 0x5e2, 0x5d1, 0x3b, 0x5de, 0x5e2, 0x5e8, 0x5e5, 0x3b, +0x5d0, 0x5b7, 0x5e4, 0x5bc, 0x5e8, 0x3b, 0x5de, 0x5d9, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dc, 0x5d9, 0x3b, +0x5d0, 0x5d5, 0x5d9, 0x5d2, 0x3b, 0x5e1, 0x5e2, 0x5e4, 0x5bc, 0x3b, 0x5d0, 0x5e7, 0x5d8, 0x3b, 0x5e0, 0x5d0, 0x5d5, 0x5d5, 0x3b, 0x5d3, +0x5e2, 0x5e6, 0x3b, 0x5d9, 0x5d0, 0x5b7, 0x5e0, 0x5d5, 0x5d0, 0x5b7, 0x5e8, 0x3b, 0x5e4, 0x5bf, 0x5e2, 0x5d1, 0x5e8, 0x5d5, 0x5d0, 0x5b7, +0x5e8, 0x3b, 0x5de, 0x5e2, 0x5e8, 0x5e5, 0x3b, 0x5d0, 0x5b7, 0x5e4, 0x5bc, 0x5e8, 0x5d9, 0x5dc, 0x3b, 0x5de, 0x5d9, 0x5d9, 0x3b, 0x5d9, +0x5d5, 0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dc, 0x5d9, 0x3b, 0x5d0, 0x5d5, 0x5d9, 0x5d2, 0x5d5, 0x5e1, 0x5d8, 0x3b, 0x5e1, 0x5e2, 0x5e4, +0x5bc, 0x5d8, 0x5e2, 0x5de, 0x5d1, 0x5e2, 0x5e8, 0x3b, 0x5d0, 0x5e7, 0x5d8, 0x5d0, 0x5d1, 0x5e2, 0x5e8, 0x3b, 0x5e0, 0x5d0, 0x5d5, 0x5d5, +0x5e2, 0x5de, 0x5d1, 0x5e2, 0x5e8, 0x3b, 0x5d3, 0x5e2, 0x5e6, 0x5e2, 0x5de, 0x5d1, 0x5e2, 0x5e8, 0x3b, 0x1e62, 0x1eb9, 0x301, 0x3b, 0xc8, +0x72, 0x3b, 0x1eb8, 0x72, 0x3b, 0xcc, 0x67, 0x3b, 0x1eb8, 0x300, 0x62, 0x3b, 0xd2, 0x6b, 0x3b, 0x41, 0x67, 0x3b, 0xd2, 0x67, +0x3b, 0x4f, 0x77, 0x3b, 0x1ecc, 0x300, 0x77, 0x3b, 0x42, 0xe9, 0x3b, 0x1ecc, 0x300, 0x70, 0x3b, 0x1e62, 0x1eb9, 0x301, 0x72, 0x1eb9, +0x301, 0x3b, 0xc8, 0x72, 0xe8, 0x6c, 0xe8, 0x3b, 0x1eb8, 0x72, 0x1eb9, 0x300, 0x6e, 0xe0, 0x3b, 0xcc, 0x67, 0x62, 0xe9, 0x3b, +0x1eb8, 0x300, 0x62, 0x69, 0x62, 0x69, 0x3b, 0xd2, 0x6b, 0xfa, 0x64, 0x75, 0x3b, 0x41, 0x67, 0x1eb9, 0x6d, 0x1ecd, 0x3b, 0xd2, +0x67, 0xfa, 0x6e, 0x3b, 0x4f, 0x77, 0x65, 0x77, 0x65, 0x3b, 0x1ecc, 0x300, 0x77, 0xe0, 0x72, 0xe0, 0x3b, 0x42, 0xe9, 0x6c, +0xfa, 0x3b, 0x1ecc, 0x300, 0x70, 0x1eb9, 0x300, 0x3b, 0x53, 0x3b, 0xc8, 0x3b, 0x1eb8, 0x3b, 0xcc, 0x3b, 0x1eb8, 0x300, 0x3b, 0xd2, +0x3b, 0x41, 0x3b, 0xd2, 0x3b, 0x4f, 0x3b, 0x1ecc, 0x300, 0x3b, 0x42, 0x3b, 0x1ecc, 0x300, 0x3b, 0x1e62, 0x1eb9, 0x301, 0x72, 0x3b, +0xc8, 0x72, 0xe8, 0x6c, 0x3b, 0x1eb8, 0x72, 0x1eb9, 0x300, 0x6e, 0x3b, 0xcc, 0x67, 0x62, 0x3b, 0x1eb8, 0x300, 0x62, 0x69, 0x3b, +0xd2, 0x6b, 0xfa, 0x3b, 0x41, 0x67, 0x1eb9, 0x3b, 0xd2, 0x67, 0xfa, 0x3b, 0x4f, 0x77, 0x65, 0x3b, 0x1ecc, 0x300, 0x77, 0xe0, +0x3b, 0x42, 0xe9, 0x6c, 0x3b, 0x1ecc, 0x300, 0x70, 0x1eb9, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1e62, 0x1eb9, 0x301, 0x72, 0x1eb9, 0x301, +0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xc8, 0x72, 0xe8, 0x6c, 0xe8, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1eb8, 0x72, 0x1eb9, 0x300, 0x6e, +0xe0, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xcc, 0x67, 0x62, 0xe9, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1eb8, 0x300, 0x62, 0x69, 0x62, +0x69, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xd2, 0x6b, 0xfa, 0x64, 0x75, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x41, 0x67, 0x1eb9, 0x6d, +0x1ecd, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xd2, 0x67, 0xfa, 0x6e, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x4f, 0x77, 0x65, 0x77, 0x65, +0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1ecc, 0x300, 0x77, 0xe0, 0x72, 0xe0, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x42, 0xe9, 0x6c, 0xfa, +0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1ecc, 0x300, 0x70, 0x1eb9, 0x300, 0x3b, 0x53, 0x68, 0x25b, 0x301, 0x3b, 0xc8, 0x72, 0x3b, 0x190, +0x72, 0x3b, 0xcc, 0x67, 0x3b, 0x190, 0x300, 0x62, 0x3b, 0xd2, 0x6b, 0x3b, 0x41, 0x67, 0x3b, 0xd2, 0x67, 0x3b, 0x4f, 0x77, +0x3b, 0x186, 0x300, 0x77, 0x3b, 0x42, 0xe9, 0x3b, 0x186, 0x300, 0x70, 0x3b, 0x53, 0x68, 0x25b, 0x301, 0x72, 0x25b, 0x301, 0x3b, +0xc8, 0x72, 0xe8, 0x6c, 0xe8, 0x3b, 0x190, 0x72, 0x25b, 0x300, 0x6e, 0xe0, 0x3b, 0xcc, 0x67, 0x62, 0xe9, 0x3b, 0x190, 0x300, +0x62, 0x69, 0x62, 0x69, 0x3b, 0xd2, 0x6b, 0xfa, 0x64, 0x75, 0x3b, 0x41, 0x67, 0x25b, 0x6d, 0x254, 0x3b, 0xd2, 0x67, 0xfa, +0x6e, 0x3b, 0x4f, 0x77, 0x65, 0x77, 0x65, 0x3b, 0x186, 0x300, 0x77, 0xe0, 0x72, 0xe0, 0x3b, 0x42, 0xe9, 0x6c, 0xfa, 0x3b, +0x186, 0x300, 0x70, 0x25b, 0x300, 0x3b, 0x53, 0x3b, 0xc8, 0x3b, 0x190, 0x3b, 0xcc, 0x3b, 0x190, 0x300, 0x3b, 0xd2, 0x3b, 0x41, +0x3b, 0xd2, 0x3b, 0x4f, 0x3b, 0x186, 0x300, 0x3b, 0x42, 0x3b, 0x186, 0x300, 0x3b, 0x53, 0x68, 0x25b, 0x301, 0x72, 0x3b, 0xc8, +0x72, 0xe8, 0x6c, 0x3b, 0x190, 0x72, 0x25b, 0x300, 0x6e, 0x3b, 0xcc, 0x67, 0x62, 0x3b, 0x190, 0x300, 0x62, 0x69, 0x3b, 0xd2, +0x6b, 0xfa, 0x3b, 0x41, 0x67, 0x25b, 0x3b, 0xd2, 0x67, 0xfa, 0x3b, 0x4f, 0x77, 0x65, 0x3b, 0x186, 0x300, 0x77, 0xe0, 0x3b, +0x42, 0xe9, 0x6c, 0x3b, 0x186, 0x300, 0x70, 0x25b, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x53, 0x68, 0x25b, 0x301, 0x72, 0x25b, +0x301, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0xc8, 0x72, 0xe8, 0x6c, 0xe8, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x190, 0x72, +0x25b, 0x300, 0x6e, 0xe0, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0xcc, 0x67, 0x62, 0xe9, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, +0x190, 0x300, 0x62, 0x69, 0x62, 0x69, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0xd2, 0x6b, 0xfa, 0x64, 0x75, 0x3b, 0x4f, 0x73, +0x68, 0xf9, 0x20, 0x41, 0x67, 0x25b, 0x6d, 0x254, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0xd2, 0x67, 0xfa, 0x6e, 0x3b, 0x4f, +0x73, 0x68, 0xf9, 0x20, 0x4f, 0x77, 0x65, 0x77, 0x65, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x186, 0x300, 0x77, 0xe0, 0x72, +0xe0, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x42, 0xe9, 0x6c, 0xfa, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x186, 0x300, 0x70, +0x25b, 0x300, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x73, 0x3b, 0x45, 0x70, 0x68, 0x3b, 0x4d, +0x65, 0x79, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x61, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, +0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x77, 0x61, 0x72, 0x69, 0x3b, +0x46, 0x65, 0x62, 0x72, 0x75, 0x77, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x73, 0x68, 0x69, 0x3b, 0x45, 0x70, 0x68, 0x72, +0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x65, 0x79, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x79, 0x69, +0x3b, 0x41, 0x67, 0x61, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x68, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, +0x74, 0x68, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d, 0x62, +0x61, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x53, 0x3b, +0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x73, +0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, +0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, +0x64, 0x65, 0x73, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, +0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x75, 0x67, 0x3b, 0x73, 0x65, 0x70, +0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, +0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, +0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, +0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x6e, 0x6f, +0x76, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x458, 0x430, 0x43d, 0x3b, +0x444, 0x435, 0x431, 0x3b, 0x43c, 0x430, 0x440, 0x3b, 0x430, 0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x3b, +0x458, 0x443, 0x43b, 0x3b, 0x430, 0x443, 0x433, 0x3b, 0x441, 0x435, 0x43f, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x432, 0x3b, +0x434, 0x435, 0x446, 0x3b, 0x458, 0x430, 0x43d, 0x443, 0x430, 0x440, 0x3b, 0x444, 0x435, 0x431, 0x440, 0x443, 0x430, 0x440, 0x3b, 0x43c, +0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x438, 0x43b, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x438, 0x3b, 0x458, +0x443, 0x43b, 0x438, 0x3b, 0x430, 0x443, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x435, 0x43c, 0x431, 0x430, 0x440, +0x3b, 0x43e, 0x43a, 0x442, 0x43e, 0x431, 0x430, 0x440, 0x3b, 0x43d, 0x43e, 0x432, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x434, 0x435, +0x446, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x4a, 0x2d, 0x67, 0x75, 0x65, 0x72, 0x3b, 0x54, 0x2d, 0x61, 0x72, 0x72, 0x65, +0x65, 0x3b, 0x4d, 0x61, 0x79, 0x72, 0x6e, 0x74, 0x3b, 0x41, 0x76, 0x72, 0x72, 0x69, 0x6c, 0x3b, 0x42, 0x6f, 0x61, 0x6c, +0x64, 0x79, 0x6e, 0x3b, 0x4d, 0x2d, 0x73, 0x6f, 0x75, 0x72, 0x65, 0x65, 0x3b, 0x4a, 0x2d, 0x73, 0x6f, 0x75, 0x72, 0x65, +0x65, 0x3b, 0x4c, 0x75, 0x61, 0x6e, 0x69, 0x73, 0x74, 0x79, 0x6e, 0x3b, 0x4d, 0x2d, 0x66, 0x6f, 0x75, 0x79, 0x69, 0x72, +0x3b, 0x4a, 0x2d, 0x66, 0x6f, 0x75, 0x79, 0x69, 0x72, 0x3b, 0x4d, 0x2d, 0x48, 0x6f, 0x75, 0x6e, 0x65, 0x79, 0x3b, 0x4d, +0x2d, 0x4e, 0x6f, 0x6c, 0x6c, 0x69, 0x63, 0x6b, 0x3b, 0x4a, 0x65, 0x72, 0x72, 0x65, 0x79, 0x2d, 0x67, 0x65, 0x75, 0x72, +0x65, 0x65, 0x3b, 0x54, 0x6f, 0x73, 0x68, 0x69, 0x61, 0x67, 0x68, 0x74, 0x2d, 0x61, 0x72, 0x72, 0x65, 0x65, 0x3b, 0x4d, +0x61, 0x79, 0x72, 0x6e, 0x74, 0x3b, 0x41, 0x76, 0x65, 0x72, 0x69, 0x6c, 0x3b, 0x42, 0x6f, 0x61, 0x6c, 0x64, 0x79, 0x6e, +0x3b, 0x4d, 0x65, 0x61, 0x6e, 0x2d, 0x73, 0x6f, 0x75, 0x72, 0x65, 0x65, 0x3b, 0x4a, 0x65, 0x72, 0x72, 0x65, 0x79, 0x2d, +0x73, 0x6f, 0x75, 0x72, 0x65, 0x65, 0x3b, 0x4c, 0x75, 0x61, 0x6e, 0x69, 0x73, 0x74, 0x79, 0x6e, 0x3b, 0x4d, 0x65, 0x61, +0x6e, 0x2d, 0x66, 0x6f, 0x75, 0x79, 0x69, 0x72, 0x3b, 0x4a, 0x65, 0x72, 0x72, 0x65, 0x79, 0x2d, 0x66, 0x6f, 0x75, 0x79, +0x69, 0x72, 0x3b, 0x4d, 0x65, 0x65, 0x20, 0x48, 0x6f, 0x75, 0x6e, 0x65, 0x79, 0x3b, 0x4d, 0x65, 0x65, 0x20, 0x6e, 0x79, +0x20, 0x4e, 0x6f, 0x6c, 0x6c, 0x69, 0x63, 0x6b, 0x3b, 0x47, 0x65, 0x6e, 0x3b, 0x48, 0x77, 0x65, 0x3b, 0x4d, 0x65, 0x75, +0x3b, 0x45, 0x62, 0x72, 0x3b, 0x4d, 0x65, 0x3b, 0x4d, 0x65, 0x74, 0x3b, 0x47, 0x6f, 0x72, 0x3b, 0x45, 0x73, 0x74, 0x3b, +0x47, 0x77, 0x6e, 0x3b, 0x48, 0x65, 0x64, 0x3b, 0x44, 0x75, 0x3b, 0x4b, 0x65, 0x76, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x47, +0x65, 0x6e, 0x76, 0x65, 0x72, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x48, 0x77, 0x65, 0x76, 0x72, 0x65, 0x72, 0x3b, 0x6d, 0x69, +0x73, 0x20, 0x4d, 0x65, 0x75, 0x72, 0x74, 0x68, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x45, 0x62, 0x72, 0x65, 0x6c, 0x3b, 0x6d, +0x69, 0x73, 0x20, 0x4d, 0x65, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x4d, 0x65, 0x74, 0x68, 0x65, 0x76, 0x65, 0x6e, 0x3b, 0x6d, +0x69, 0x73, 0x20, 0x47, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x72, 0x65, 0x6e, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x45, 0x73, 0x74, +0x3b, 0x6d, 0x69, 0x73, 0x20, 0x47, 0x77, 0x79, 0x6e, 0x6e, 0x67, 0x61, 0x6c, 0x61, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x48, +0x65, 0x64, 0x72, 0x61, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x44, 0x75, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x4b, 0x65, 0x76, 0x61, +0x72, 0x64, 0x68, 0x75, 0x3b, 0x53, 0x2d, 0x186, 0x3b, 0x4b, 0x2d, 0x186, 0x3b, 0x45, 0x2d, 0x186, 0x3b, 0x45, 0x2d, 0x4f, +0x3b, 0x45, 0x2d, 0x4b, 0x3b, 0x4f, 0x2d, 0x41, 0x3b, 0x41, 0x2d, 0x4b, 0x3b, 0x44, 0x2d, 0x186, 0x3b, 0x46, 0x2d, 0x190, +0x3b, 0x186, 0x2d, 0x41, 0x3b, 0x186, 0x2d, 0x4f, 0x3b, 0x4d, 0x2d, 0x186, 0x3b, 0x53, 0x61, 0x6e, 0x64, 0x61, 0x2d, 0x186, +0x70, 0x25b, 0x70, 0x254, 0x6e, 0x3b, 0x4b, 0x77, 0x61, 0x6b, 0x77, 0x61, 0x72, 0x2d, 0x186, 0x67, 0x79, 0x65, 0x66, 0x75, +0x6f, 0x3b, 0x45, 0x62, 0x254, 0x77, 0x2d, 0x186, 0x62, 0x65, 0x6e, 0x65, 0x6d, 0x3b, 0x45, 0x62, 0x254, 0x62, 0x69, 0x72, +0x61, 0x2d, 0x4f, 0x66, 0x6f, 0x72, 0x69, 0x73, 0x75, 0x6f, 0x3b, 0x45, 0x73, 0x75, 0x73, 0x6f, 0x77, 0x20, 0x41, 0x6b, +0x65, 0x74, 0x73, 0x65, 0x61, 0x62, 0x61, 0x2d, 0x4b, 0x254, 0x74, 0x254, 0x6e, 0x69, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x62, +0x69, 0x72, 0x61, 0x64, 0x65, 0x2d, 0x41, 0x79, 0x25b, 0x77, 0x6f, 0x68, 0x6f, 0x6d, 0x75, 0x6d, 0x75, 0x3b, 0x41, 0x79, +0x25b, 0x77, 0x6f, 0x68, 0x6f, 0x2d, 0x4b, 0x69, 0x74, 0x61, 0x77, 0x6f, 0x6e, 0x73, 0x61, 0x3b, 0x44, 0x69, 0x66, 0x75, +0x75, 0x2d, 0x186, 0x73, 0x61, 0x6e, 0x64, 0x61, 0x61, 0x3b, 0x46, 0x61, 0x6e, 0x6b, 0x77, 0x61, 0x2d, 0x190, 0x62, 0x254, +0x3b, 0x186, 0x62, 0x25b, 0x73, 0x25b, 0x2d, 0x41, 0x68, 0x69, 0x6e, 0x69, 0x6d, 0x65, 0x3b, 0x186, 0x62, 0x65, 0x72, 0x25b, +0x66, 0x25b, 0x77, 0x2d, 0x4f, 0x62, 0x75, 0x62, 0x75, 0x6f, 0x3b, 0x4d, 0x75, 0x6d, 0x75, 0x2d, 0x186, 0x70, 0x25b, 0x6e, +0x69, 0x6d, 0x62, 0x61, 0x3b, 0x91c, 0x93e, 0x928, 0x947, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x3b, 0x92e, 0x93e, 0x930, +0x94d, 0x91a, 0x3b, 0x90f, 0x92a, 0x94d, 0x930, 0x940, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x3b, +0x911, 0x917, 0x3b, 0x938, 0x92a, 0x94d, 0x91f, 0x947, 0x902, 0x3b, 0x911, 0x915, 0x94d, 0x91f, 0x94b, 0x3b, 0x928, 0x94b, 0x3b, 0x921, +0x93f, 0x938, 0x947, 0x3b, 0x91c, 0x93e, 0x928, 0x947, 0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x935, +0x93e, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x90f, 0x92a, 0x94d, 0x930, 0x940, 0x932, 0x3b, 0x92e, 0x947, 0x3b, +0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x92f, 0x3b, 0x911, 0x917, 0x938, 0x94d, 0x91f, 0x3b, 0x938, 0x92a, 0x94d, 0x91f, 0x947, +0x902, 0x92c, 0x930, 0x3b, 0x911, 0x915, 0x94d, 0x91f, 0x94b, 0x92c, 0x930, 0x3b, 0x928, 0x94b, 0x935, 0x94d, 0x939, 0x947, 0x902, 0x92c, +0x930, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x902, 0x92c, 0x930, 0x3b, 0x4a, 0x65, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, +0x61, 0x3b, 0x45, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x4a, 0x75, 0x75, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x1ecc, 0x67, +0x1ecd, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x1ecc, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0x65, +0x6e, 0x1ee5, 0x77, 0x61, 0x72, 0x1ecb, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x1ee5, 0x77, 0x61, 0x72, 0x1ecb, 0x3b, 0x4d, 0x61, 0x61, +0x63, 0x68, 0x1ecb, 0x3b, 0x45, 0x70, 0x72, 0x65, 0x65, 0x6c, 0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x4a, 0x75, 0x75, 0x6e, 0x3b, +0x4a, 0x75, 0x6c, 0x61, 0x1ecb, 0x3b, 0x1ecc, 0x67, 0x1ecd, 0x1ecd, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, +0x61, 0x3b, 0x1ecc, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, +0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x1ecc, +0x3b, 0x53, 0x3b, 0x1ecc, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4d, 0x62, 0x65, 0x3b, 0x4b, 0x65, 0x6c, 0x3b, 0x4b, 0x74, 0x169, +0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x4b, 0x74, 0x6e, 0x3b, 0x54, 0x68, 0x61, 0x3b, 0x4d, 0x6f, 0x6f, 0x3b, 0x4e, 0x79, 0x61, +0x3b, 0x4b, 0x6e, 0x64, 0x3b, 0x128, 0x6b, 0x75, 0x3b, 0x128, 0x6b, 0x6d, 0x3b, 0x128, 0x6b, 0x6c, 0x3b, 0x4d, 0x77, 0x61, +0x69, 0x20, 0x77, 0x61, 0x20, 0x6d, 0x62, 0x65, 0x65, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x65, +0x6c, 0x129, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x61, 0x74, 0x169, 0x3b, 0x4d, 0x77, +0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, +0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x74, 0x68, +0x61, 0x74, 0x169, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6d, 0x75, 0x6f, 0x6e, 0x7a, 0x61, 0x3b, 0x4d, +0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6e, 0x79, 0x61, 0x61, 0x6e, 0x79, 0x61, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, +0x77, 0x61, 0x20, 0x6b, 0x65, 0x6e, 0x64, 0x61, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x129, 0x6b, 0x75, +0x6d, 0x69, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x129, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, +0x129, 0x6d, 0x77, 0x65, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x129, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, +0x61, 0x20, 0x69, 0x6c, 0x129, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x4d, 0x3b, +0x4e, 0x3b, 0x4b, 0x3b, 0x128, 0x3b, 0x128, 0x3b, 0x128, 0x3b, 0x5a, 0x65, 0x6e, 0x3b, 0x46, 0x65, 0x76, 0x3b, 0x4d, 0x61, +0x72, 0x3b, 0x41, 0x76, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x67, 0x3b, 0x4c, 0x75, 0x69, 0x3b, 0x41, 0x76, +0x6f, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x74, 0x75, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x63, 0x3b, 0x5a, 0x65, +0x6e, 0xe2, 0x72, 0x3b, 0x46, 0x65, 0x76, 0x72, 0xe2, 0x72, 0x3b, 0x4d, 0x61, 0x72, 0xe7, 0x3b, 0x41, 0x76, 0x72, 0xee, +0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x67, 0x6e, 0x3b, 0x4c, 0x75, 0x69, 0x3b, 0x41, 0x76, 0x6f, 0x73, 0x74, +0x3b, 0x53, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4f, 0x74, 0x75, 0x62, 0x61, 0x72, 0x3b, 0x4e, 0x6f, 0x76, +0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x44, 0x69, 0x63, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x5a, 0x3b, 0x46, 0x3b, 0x4d, +0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4c, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x64, +0x7a, 0x76, 0x3b, 0x64, 0x7a, 0x64, 0x3b, 0x74, 0x65, 0x64, 0x3b, 0x61, 0x66, 0x254, 0x3b, 0x64, 0x61, 0x6d, 0x3b, 0x6d, +0x61, 0x73, 0x3b, 0x73, 0x69, 0x61, 0x3b, 0x64, 0x65, 0x61, 0x3b, 0x61, 0x6e, 0x79, 0x3b, 0x6b, 0x65, 0x6c, 0x3b, 0x61, +0x64, 0x65, 0x3b, 0x64, 0x7a, 0x6d, 0x3b, 0x64, 0x7a, 0x6f, 0x76, 0x65, 0x3b, 0x64, 0x7a, 0x6f, 0x64, 0x7a, 0x65, 0x3b, +0x74, 0x65, 0x64, 0x6f, 0x78, 0x65, 0x3b, 0x61, 0x66, 0x254, 0x66, 0x129, 0x65, 0x3b, 0x64, 0x61, 0x6d, 0x61, 0x3b, 0x6d, +0x61, 0x73, 0x61, 0x3b, 0x73, 0x69, 0x61, 0x6d, 0x6c, 0x254, 0x6d, 0x3b, 0x64, 0x65, 0x61, 0x73, 0x69, 0x61, 0x6d, 0x69, +0x6d, 0x65, 0x3b, 0x61, 0x6e, 0x79, 0x254, 0x6e, 0x79, 0x254, 0x3b, 0x6b, 0x65, 0x6c, 0x65, 0x3b, 0x61, 0x64, 0x65, 0x25b, +0x6d, 0x65, 0x6b, 0x70, 0x254, 0x78, 0x65, 0x3b, 0x64, 0x7a, 0x6f, 0x6d, 0x65, 0x3b, 0x64, 0x3b, 0x64, 0x3b, 0x74, 0x3b, +0x61, 0x3b, 0x64, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x64, 0x3b, 0x61, 0x3b, 0x6b, 0x3b, 0x61, 0x3b, 0x64, 0x3b, 0x49, 0x61, +0x6e, 0x2e, 0x3b, 0x50, 0x65, 0x70, 0x2e, 0x3b, 0x4d, 0x61, 0x6c, 0x2e, 0x3b, 0x2bb, 0x41, 0x70, 0x2e, 0x3b, 0x4d, 0x65, +0x69, 0x3b, 0x49, 0x75, 0x6e, 0x2e, 0x3b, 0x49, 0x75, 0x6c, 0x2e, 0x3b, 0x2bb, 0x41, 0x75, 0x2e, 0x3b, 0x4b, 0x65, 0x70, +0x2e, 0x3b, 0x2bb, 0x4f, 0x6b, 0x2e, 0x3b, 0x4e, 0x6f, 0x77, 0x2e, 0x3b, 0x4b, 0x65, 0x6b, 0x2e, 0x3b, 0x49, 0x61, 0x6e, +0x75, 0x61, 0x6c, 0x69, 0x3b, 0x50, 0x65, 0x70, 0x65, 0x6c, 0x75, 0x61, 0x6c, 0x69, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x6b, +0x69, 0x3b, 0x2bb, 0x41, 0x70, 0x65, 0x6c, 0x69, 0x6c, 0x61, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x49, 0x75, 0x6e, 0x65, 0x3b, +0x49, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x2bb, 0x41, 0x75, 0x6b, 0x61, 0x6b, 0x65, 0x3b, 0x4b, 0x65, 0x70, 0x61, 0x6b, 0x65, +0x6d, 0x61, 0x70, 0x61, 0x3b, 0x2bb, 0x4f, 0x6b, 0x61, 0x6b, 0x6f, 0x70, 0x61, 0x3b, 0x4e, 0x6f, 0x77, 0x65, 0x6d, 0x61, +0x70, 0x61, 0x3b, 0x4b, 0x65, 0x6b, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x3b, 0x45, 0x6e, 0x65, 0x3b, 0x50, 0x65, 0x62, 0x3b, +0x4d, 0x61, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x48, 0x75, 0x6e, 0x3b, 0x48, 0x75, 0x6c, 0x3b, +0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x62, 0x3b, 0x44, 0x69, 0x73, 0x3b, +0x45, 0x6e, 0x65, 0x72, 0x6f, 0x3b, 0x50, 0x65, 0x62, 0x72, 0x65, 0x72, 0x6f, 0x3b, 0x4d, 0x61, 0x72, 0x73, 0x6f, 0x3b, +0x41, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x6f, 0x3b, 0x48, 0x75, 0x6e, 0x79, 0x6f, 0x3b, 0x48, 0x75, 0x6c, +0x79, 0x6f, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x79, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, +0x4f, 0x6b, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x4e, 0x6f, 0x62, 0x79, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x44, 0x69, +0x73, 0x79, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x45, 0x3b, 0x50, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x48, 0x75, +0x6e, 0x3b, 0x48, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, +0x62, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, +0x3b, 0x4d, 0xe4, 0x72, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, +0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x75, 0x73, 0x63, 0x68, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x74, 0xe4, +0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0xe4, 0x6d, 0x62, +0x65, 0x72, 0x3b, 0x44, 0x65, 0x7a, 0xe4, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0xa2cd, 0xa1aa, 0x3b, 0xa44d, 0xa1aa, 0x3b, 0xa315, 0xa1aa, +0x3b, 0xa1d6, 0xa1aa, 0x3b, 0xa26c, 0xa1aa, 0x3b, 0xa0d8, 0xa1aa, 0x3b, 0xa3c3, 0xa1aa, 0x3b, 0xa246, 0xa1aa, 0x3b, 0xa22c, 0xa1aa, 0x3b, 0xa2b0, +0xa1aa, 0x3b, 0xa2b0, 0xa2aa, 0xa1aa, 0x3b, 0xa2b0, 0xa44b, 0xa1aa, 0x3b, 0x4a, 0x61, 0x6e, 0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, +0x4d, 0xe4, 0x72, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, +0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x2e, 0x3b, 0x53, 0x65, 0x70, 0x2e, 0x3b, 0x4f, 0x6b, 0x74, 0x2e, 0x3b, 0x4e, +0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x65, 0x7a, 0x2e, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x61, 0x72, 0x3b, 0x46, 0x65, 0x62, +0x72, 0x75, 0x61, 0x61, 0x72, 0x3b, 0x4d, 0xe4, 0x72, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x69, +0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, +0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x76, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, +0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x7a, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x111, 0x111, 0x6a, 0x3b, 0x67, +0x75, 0x6f, 0x76, 0x3b, 0x6e, 0x6a, 0x75, 0x6b, 0x3b, 0x63, 0x75, 0x6f, 0x3b, 0x6d, 0x69, 0x65, 0x73, 0x3b, 0x67, 0x65, +0x61, 0x73, 0x3b, 0x73, 0x75, 0x6f, 0x69, 0x3b, 0x62, 0x6f, 0x72, 0x67, 0x3b, 0x10d, 0x61, 0x6b, 0x10d, 0x3b, 0x67, 0x6f, +0x6c, 0x67, 0x3b, 0x73, 0x6b, 0xe1, 0x62, 0x3b, 0x6a, 0x75, 0x6f, 0x76, 0x3b, 0x6f, 0x111, 0x111, 0x61, 0x6a, 0x61, 0x67, +0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x67, 0x75, 0x6f, 0x76, 0x76, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x6e, +0x6a, 0x75, 0x6b, 0x10d, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x63, 0x75, 0x6f, 0x14b, 0x6f, 0x6d, 0xe1, 0x6e, 0x6e, +0x75, 0x3b, 0x6d, 0x69, 0x65, 0x73, 0x73, 0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x67, 0x65, 0x61, 0x73, 0x73, 0x65, +0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x73, 0x75, 0x6f, 0x69, 0x64, 0x6e, 0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x62, +0x6f, 0x72, 0x67, 0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x10d, 0x61, 0x6b, 0x10d, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, +0x3b, 0x67, 0x6f, 0x6c, 0x67, 0x67, 0x6f, 0x74, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x73, 0x6b, 0xe1, 0x62, 0x6d, 0x61, +0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x6a, 0x75, 0x6f, 0x76, 0x6c, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x4f, 0x3b, +0x47, 0x3b, 0x4e, 0x3b, 0x43, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x53, 0x3b, 0x42, 0x3b, 0x10c, 0x3b, 0x47, 0x3b, 0x53, 0x3b, +0x4a, 0x3b, 0x6f, 0x111, 0x111, 0x6a, 0x3b, 0x67, 0x75, 0x6f, 0x76, 0x3b, 0x6e, 0x6a, 0x75, 0x6b, 0x3b, 0x63, 0x75, 0x6f, +0x14b, 0x3b, 0x6d, 0x69, 0x65, 0x73, 0x3b, 0x67, 0x65, 0x61, 0x73, 0x3b, 0x73, 0x75, 0x6f, 0x69, 0x3b, 0x62, 0x6f, 0x72, +0x67, 0x3b, 0x10d, 0x61, 0x6b, 0x10d, 0x3b, 0x67, 0x6f, 0x6c, 0x67, 0x3b, 0x73, 0x6b, 0xe1, 0x62, 0x3b, 0x6a, 0x75, 0x6f, +0x76, 0x3b, 0x43, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x63, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, +0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x43, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, +0x74, 0x3b, 0x4e, 0x6f, 0x62, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x43, 0x68, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, +0x65, 0x62, 0x75, 0x72, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x3b, 0x41, 0x70, 0x69, 0x72, 0x69, 0x72, +0x69, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x43, 0x68, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x41, 0x67, +0x6f, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x69, 0x74, 0x6f, 0x62, +0x61, 0x3b, 0x4e, 0x6f, 0x62, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x43, 0x3b, +0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x43, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, +0x44, 0x3b, 0x49, 0x6d, 0x62, 0x3b, 0x4b, 0x61, 0x77, 0x3b, 0x4b, 0x61, 0x64, 0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x4b, 0x61, +0x73, 0x3b, 0x4b, 0x61, 0x72, 0x3b, 0x4d, 0x66, 0x75, 0x3b, 0x57, 0x75, 0x6e, 0x3b, 0x49, 0x6b, 0x65, 0x3b, 0x49, 0x6b, +0x75, 0x3b, 0x49, 0x6d, 0x77, 0x3b, 0x49, 0x77, 0x69, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, +0x69, 0x6d, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x77, +0x69, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x64, 0x61, 0x64, 0x75, 0x3b, 0x4d, +0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, +0x68, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x73, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, +0x20, 0x6b, 0x61, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x64, 0x75, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, +0x20, 0x6d, 0x66, 0x75, 0x6e, 0x67, 0x61, 0x64, 0x65, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, +0x77, 0x75, 0x6e, 0x79, 0x61, 0x6e, 0x79, 0x61, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x69, +0x6b, 0x65, 0x6e, 0x64, 0x61, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x75, 0x6d, +0x69, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, +0x20, 0x69, 0x6d, 0x77, 0x65, 0x72, 0x69, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x69, 0x6b, +0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x69, 0x77, 0x69, 0x3b, 0x49, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, +0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x57, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x73, 0x69, 0x69, 0x3b, 0x63, +0x6f, 0x6c, 0x3b, 0x6d, 0x62, 0x6f, 0x3b, 0x73, 0x65, 0x65, 0x3b, 0x64, 0x75, 0x75, 0x3b, 0x6b, 0x6f, 0x72, 0x3b, 0x6d, +0x6f, 0x72, 0x3b, 0x6a, 0x75, 0x6b, 0x3b, 0x73, 0x6c, 0x74, 0x3b, 0x79, 0x61, 0x72, 0x3b, 0x6a, 0x6f, 0x6c, 0x3b, 0x62, +0x6f, 0x77, 0x3b, 0x73, 0x69, 0x69, 0x6c, 0x6f, 0x3b, 0x63, 0x6f, 0x6c, 0x74, 0x65, 0x3b, 0x6d, 0x62, 0x6f, 0x6f, 0x79, +0x3b, 0x73, 0x65, 0x65, 0x257, 0x74, 0x6f, 0x3b, 0x64, 0x75, 0x75, 0x6a, 0x61, 0x6c, 0x3b, 0x6b, 0x6f, 0x72, 0x73, 0x65, +0x3b, 0x6d, 0x6f, 0x72, 0x73, 0x6f, 0x3b, 0x6a, 0x75, 0x6b, 0x6f, 0x3b, 0x73, 0x69, 0x69, 0x6c, 0x74, 0x6f, 0x3b, 0x79, +0x61, 0x72, 0x6b, 0x6f, 0x6d, 0x61, 0x61, 0x3b, 0x6a, 0x6f, 0x6c, 0x61, 0x6c, 0x3b, 0x62, 0x6f, 0x77, 0x74, 0x65, 0x3b, +0x73, 0x3b, 0x63, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x64, 0x3b, 0x6b, 0x3b, 0x6d, 0x3b, 0x6a, 0x3b, 0x73, 0x3b, 0x79, 0x3b, +0x6a, 0x3b, 0x62, 0x3b, 0x4a, 0x45, 0x4e, 0x3b, 0x57, 0x4b, 0x52, 0x3b, 0x57, 0x47, 0x54, 0x3b, 0x57, 0x4b, 0x4e, 0x3b, +0x57, 0x54, 0x4e, 0x3b, 0x57, 0x54, 0x44, 0x3b, 0x57, 0x4d, 0x4a, 0x3b, 0x57, 0x4e, 0x4e, 0x3b, 0x57, 0x4b, 0x44, 0x3b, +0x57, 0x49, 0x4b, 0x3b, 0x57, 0x4d, 0x57, 0x3b, 0x44, 0x49, 0x54, 0x3b, 0x4e, 0x6a, 0x65, 0x6e, 0x75, 0x61, 0x72, 0x129, +0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x65, 0x72, 0x129, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, +0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x74, 0x169, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, +0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x6f, +0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x169, 0x3b, +0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x6d, 0x169, 0x67, 0x77, 0x61, 0x6e, 0x6a, 0x61, 0x3b, 0x4d, 0x77, +0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x6e, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, +0x77, 0x61, 0x20, 0x6b, 0x65, 0x6e, 0x64, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x69, 0x6b, +0x169, 0x6d, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x169, 0x6d, 0x69, 0x20, 0x6e, +0x61, 0x20, 0x169, 0x6d, 0x77, 0x65, 0x3b, 0x4e, 0x64, 0x69, 0x74, 0x68, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x4b, +0x3b, 0x47, 0x3b, 0x4b, 0x3b, 0x47, 0x3b, 0x47, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x44, +0x3b, 0x4f, 0x62, 0x6f, 0x3b, 0x57, 0x61, 0x61, 0x3b, 0x4f, 0x6b, 0x75, 0x3b, 0x4f, 0x6e, 0x67, 0x3b, 0x49, 0x6d, 0x65, +0x3b, 0x49, 0x6c, 0x65, 0x3b, 0x53, 0x61, 0x70, 0x3b, 0x49, 0x73, 0x69, 0x3b, 0x53, 0x61, 0x61, 0x3b, 0x54, 0x6f, 0x6d, +0x3b, 0x54, 0x6f, 0x62, 0x3b, 0x54, 0x6f, 0x77, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x6f, 0x62, 0x6f, +0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x77, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, +0x6c, 0x65, 0x20, 0x6f, 0x6b, 0x75, 0x6e, 0x69, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x6f, 0x6e, 0x67, +0x2019, 0x77, 0x61, 0x6e, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x69, 0x6d, 0x65, 0x74, 0x3b, 0x4c, 0x61, +0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x69, 0x6c, 0x65, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x73, 0x61, +0x70, 0x61, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x69, 0x73, 0x69, 0x65, 0x74, 0x3b, 0x4c, 0x61, 0x70, +0x61, 0x20, 0x6c, 0x65, 0x20, 0x73, 0x61, 0x61, 0x6c, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x74, 0x6f, +0x6d, 0x6f, 0x6e, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x6f, 0x62, +0x6f, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x77, 0x61, 0x61, 0x72, +0x65, 0x3b, 0x4f, 0x3b, 0x57, 0x3b, 0x4f, 0x3b, 0x4f, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x49, 0x3b, 0x53, 0x3b, +0x54, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x76, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x62, +0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x75, 0x67, 0x3b, 0x53, 0x65, +0x74, 0x3b, 0x4f, 0x74, 0x75, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x63, 0x3b, 0x4a, 0x61, 0x6e, 0x65, 0x69, 0x72, +0x6f, 0x3b, 0x46, 0x65, 0x76, 0x72, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x4d, 0x61, 0x72, 0x63, 0x6f, 0x3b, 0x41, 0x62, 0x72, +0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x6f, 0x3b, 0x4a, 0x75, 0x6e, 0x68, 0x6f, 0x3b, 0x4a, 0x75, 0x6c, 0x68, 0x6f, 0x3b, +0x41, 0x75, 0x67, 0x75, 0x73, 0x74, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x4f, 0x74, 0x75, +0x62, 0x72, 0x6f, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x44, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, +0x6f, 0x3b, 0x5a, 0x69, 0x62, 0x3b, 0x4e, 0x68, 0x6c, 0x6f, 0x3b, 0x4d, 0x62, 0x69, 0x3b, 0x4d, 0x61, 0x62, 0x3b, 0x4e, +0x6b, 0x77, 0x3b, 0x4e, 0x68, 0x6c, 0x61, 0x3b, 0x4e, 0x74, 0x75, 0x3b, 0x4e, 0x63, 0x77, 0x3b, 0x4d, 0x70, 0x61, 0x6e, +0x3b, 0x4d, 0x66, 0x75, 0x3b, 0x4c, 0x77, 0x65, 0x3b, 0x4d, 0x70, 0x61, 0x6c, 0x3b, 0x5a, 0x69, 0x62, 0x61, 0x6e, 0x64, +0x6c, 0x65, 0x6c, 0x61, 0x3b, 0x4e, 0x68, 0x6c, 0x6f, 0x6c, 0x61, 0x6e, 0x6a, 0x61, 0x3b, 0x4d, 0x62, 0x69, 0x6d, 0x62, +0x69, 0x74, 0x68, 0x6f, 0x3b, 0x4d, 0x61, 0x62, 0x61, 0x73, 0x61, 0x3b, 0x4e, 0x6b, 0x77, 0x65, 0x6e, 0x6b, 0x77, 0x65, +0x7a, 0x69, 0x3b, 0x4e, 0x68, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x6c, 0x61, 0x3b, 0x4e, 0x74, 0x75, 0x6c, 0x69, 0x6b, 0x61, +0x7a, 0x69, 0x3b, 0x4e, 0x63, 0x77, 0x61, 0x62, 0x61, 0x6b, 0x61, 0x7a, 0x69, 0x3b, 0x4d, 0x70, 0x61, 0x6e, 0x64, 0x75, +0x6c, 0x61, 0x3b, 0x4d, 0x66, 0x75, 0x6d, 0x66, 0x75, 0x3b, 0x4c, 0x77, 0x65, 0x7a, 0x69, 0x3b, 0x4d, 0x70, 0x61, 0x6c, +0x61, 0x6b, 0x61, 0x7a, 0x69, 0x3b, 0x5a, 0x3b, 0x4e, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, +0x4e, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4d, 0x31, 0x3b, 0x4d, 0x32, 0x3b, 0x4d, 0x33, 0x3b, 0x4d, +0x34, 0x3b, 0x4d, 0x35, 0x3b, 0x4d, 0x36, 0x3b, 0x4d, 0x37, 0x3b, 0x4d, 0x38, 0x3b, 0x4d, 0x39, 0x3b, 0x4d, 0x31, 0x30, +0x3b, 0x4d, 0x31, 0x31, 0x3b, 0x4d, 0x31, 0x32, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x77, +0x61, 0x6e, 0x7a, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x69, 0x6c, 0x69, 0x3b, +0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4d, 0x77, 0x65, 0x72, +0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x61, 0x6e, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, +0x74, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x73, 0x69, 0x74, 0x61, 0x3b, 0x4d, +0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x73, 0x61, 0x62, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, +0x61, 0x20, 0x6e, 0x61, 0x6e, 0x65, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x74, 0x69, 0x73, 0x61, +0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x72, +0x69, 0x20, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x6f, 0x6a, 0x61, 0x3b, 0x4d, +0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x62, 0x69, +0x6c, 0x69, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x4e, 0x3b, 0x54, +0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x2d49, 0x2d4f, 0x2d4f, 0x3b, 0x2d31, 0x2d55, 0x2d30, 0x3b, 0x2d4e, 0x2d30, 0x2d55, 0x3b, 0x2d49, +0x2d31, 0x2d54, 0x3b, 0x2d4e, 0x2d30, 0x2d62, 0x3b, 0x2d62, 0x2d53, 0x2d4f, 0x3b, 0x2d62, 0x2d53, 0x2d4d, 0x3b, 0x2d56, 0x2d53, 0x2d5b, 0x3b, 0x2d5b, +0x2d53, 0x2d5c, 0x3b, 0x2d3d, 0x2d5c, 0x2d53, 0x3b, 0x2d4f, 0x2d53, 0x2d61, 0x3b, 0x2d37, 0x2d53, 0x2d4a, 0x3b, 0x2d49, 0x2d4f, 0x2d4f, 0x2d30, 0x2d62, +0x2d54, 0x3b, 0x2d31, 0x2d55, 0x2d30, 0x2d62, 0x2d55, 0x3b, 0x2d4e, 0x2d30, 0x2d55, 0x2d5a, 0x3b, 0x2d49, 0x2d31, 0x2d54, 0x2d49, 0x2d54, 0x3b, 0x2d4e, +0x2d30, 0x2d62, 0x2d62, 0x2d53, 0x3b, 0x2d62, 0x2d53, 0x2d4f, 0x2d62, 0x2d53, 0x3b, 0x2d62, 0x2d53, 0x2d4d, 0x2d62, 0x2d53, 0x2d63, 0x3b, 0x2d56, 0x2d53, +0x2d5b, 0x2d5c, 0x3b, 0x2d5b, 0x2d53, 0x2d5c, 0x2d30, 0x2d4f, 0x2d31, 0x2d49, 0x2d54, 0x3b, 0x2d3d, 0x2d5c, 0x2d53, 0x2d31, 0x2d54, 0x3b, 0x2d4f, 0x2d53, +0x2d61, 0x2d30, 0x2d4f, 0x2d31, 0x2d49, 0x2d54, 0x3b, 0x2d37, 0x2d53, 0x2d4a, 0x2d30, 0x2d4f, 0x2d31, 0x2d49, 0x2d54, 0x3b, 0x2d49, 0x3b, 0x2d31, 0x3b, +0x2d4e, 0x3b, 0x2d49, 0x3b, 0x2d4e, 0x3b, 0x2d62, 0x3b, 0x2d62, 0x3b, 0x2d56, 0x3b, 0x2d5b, 0x3b, 0x2d3d, 0x3b, 0x2d4f, 0x3b, 0x2d37, 0x3b, +0x69, 0x6e, 0x6e, 0x3b, 0x62, 0x1e5b, 0x61, 0x3b, 0x6d, 0x61, 0x1e5b, 0x3b, 0x69, 0x62, 0x72, 0x3b, 0x6d, 0x61, 0x79, 0x3b, +0x79, 0x75, 0x6e, 0x3b, 0x79, 0x75, 0x6c, 0x3b, 0x263, 0x75, 0x63, 0x3b, 0x63, 0x75, 0x74, 0x3b, 0x6b, 0x74, 0x75, 0x3b, +0x6e, 0x75, 0x77, 0x3b, 0x64, 0x75, 0x6a, 0x3b, 0x69, 0x6e, 0x6e, 0x61, 0x79, 0x72, 0x3b, 0x62, 0x1e5b, 0x61, 0x79, 0x1e5b, +0x3b, 0x6d, 0x61, 0x1e5b, 0x1e63, 0x3b, 0x69, 0x62, 0x72, 0x69, 0x72, 0x3b, 0x6d, 0x61, 0x79, 0x79, 0x75, 0x3b, 0x79, 0x75, +0x6e, 0x79, 0x75, 0x3b, 0x79, 0x75, 0x6c, 0x79, 0x75, 0x7a, 0x3b, 0x263, 0x75, 0x63, 0x74, 0x3b, 0x63, 0x75, 0x74, 0x61, +0x6e, 0x62, 0x69, 0x72, 0x3b, 0x6b, 0x74, 0x75, 0x62, 0x72, 0x3b, 0x6e, 0x75, 0x77, 0x61, 0x6e, 0x62, 0x69, 0x72, 0x3b, +0x64, 0x75, 0x6a, 0x61, 0x6e, 0x62, 0x69, 0x72, 0x3b, 0x69, 0x3b, 0x62, 0x3b, 0x6d, 0x3b, 0x69, 0x3b, 0x6d, 0x3b, 0x79, +0x3b, 0x79, 0x3b, 0x263, 0x3b, 0x63, 0x3b, 0x6b, 0x3b, 0x6e, 0x3b, 0x64, 0x3b, 0x59, 0x65, 0x6e, 0x3b, 0x46, 0x75, 0x72, +0x3b, 0x4d, 0x65, 0x263, 0x3b, 0x59, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x59, 0x75, 0x6e, 0x3b, 0x59, 0x75, 0x6c, +0x3b, 0x194, 0x75, 0x63, 0x3b, 0x43, 0x74, 0x65, 0x3b, 0x54, 0x75, 0x62, 0x3b, 0x57, 0x61, 0x6d, 0x3b, 0x44, 0x75, 0x1e7, +0x3b, 0x59, 0x65, 0x6e, 0x6e, 0x61, 0x79, 0x65, 0x72, 0x3b, 0x46, 0x75, 0x1e5b, 0x61, 0x72, 0x3b, 0x4d, 0x65, 0x263, 0x72, +0x65, 0x73, 0x3b, 0x59, 0x65, 0x62, 0x72, 0x69, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x79, 0x75, 0x3b, 0x59, 0x75, 0x6e, 0x79, +0x75, 0x3b, 0x59, 0x75, 0x6c, 0x79, 0x75, 0x3b, 0x194, 0x75, 0x63, 0x74, 0x3b, 0x43, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, +0x3b, 0x54, 0x75, 0x62, 0x65, 0x72, 0x3b, 0x57, 0x61, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x75, 0x1e7, 0x65, 0x6d, 0x62, +0x65, 0x1e5b, 0x3b, 0x59, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x59, 0x3b, 0x4d, 0x3b, 0x59, 0x3b, 0x59, 0x3b, 0x194, 0x3b, 0x43, +0x3b, 0x54, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x59, 0x65, 0x6e, 0x3b, 0x46, 0x75, 0x72, 0x3b, 0x4d, 0x65, 0x263, 0x3b, 0x59, +0x65, 0x62, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x59, 0x75, 0x6e, 0x3b, 0x59, 0x75, 0x6c, 0x3b, 0x194, 0x75, 0x63, 0x3b, 0x43, +0x74, 0x65, 0x3b, 0x54, 0x75, 0x62, 0x3b, 0x4e, 0x75, 0x6e, 0x3b, 0x44, 0x75, 0x1e7, 0x3b, 0x59, 0x65, 0x6e, 0x6e, 0x61, +0x79, 0x65, 0x72, 0x3b, 0x46, 0x75, 0x1e5b, 0x61, 0x72, 0x3b, 0x4d, 0x65, 0x263, 0x72, 0x65, 0x73, 0x3b, 0x59, 0x65, 0x62, +0x72, 0x69, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x79, 0x75, 0x3b, 0x59, 0x75, 0x6e, 0x79, 0x75, 0x3b, 0x59, 0x75, 0x6c, 0x79, +0x75, 0x3b, 0x194, 0x75, 0x63, 0x74, 0x3b, 0x43, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x1e5b, 0x3b, 0x54, 0x75, 0x62, 0x65, 0x1e5b, +0x3b, 0x4e, 0x75, 0x6e, 0x65, 0x6d, 0x62, 0x65, 0x1e5b, 0x3b, 0x44, 0x75, 0x1e7, 0x65, 0x6d, 0x62, 0x65, 0x1e5b, 0x3b, 0x59, +0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x59, 0x3b, 0x4d, 0x3b, 0x59, 0x3b, 0x59, 0x3b, 0x194, 0x3b, 0x43, 0x3b, 0x54, 0x3b, 0x57, +0x3b, 0x44, 0x3b, 0x4b, 0x42, 0x5a, 0x3b, 0x4b, 0x42, 0x52, 0x3b, 0x4b, 0x53, 0x54, 0x3b, 0x4b, 0x4b, 0x4e, 0x3b, 0x4b, +0x54, 0x4e, 0x3b, 0x4b, 0x4d, 0x4b, 0x3b, 0x4b, 0x4d, 0x53, 0x3b, 0x4b, 0x4d, 0x4e, 0x3b, 0x4b, 0x4d, 0x57, 0x3b, 0x4b, +0x4b, 0x4d, 0x3b, 0x4b, 0x4e, 0x4b, 0x3b, 0x4b, 0x4e, 0x42, 0x3b, 0x4f, 0x6b, 0x77, 0x6f, 0x6b, 0x75, 0x62, 0x61, 0x6e, +0x7a, 0x61, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6b, 0x61, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6b, 0x61, +0x73, 0x68, 0x61, 0x74, 0x75, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6b, +0x61, 0x74, 0x61, 0x61, 0x6e, 0x61, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67, 0x61, 0x3b, 0x4f, +0x6b, 0x77, 0x61, 0x6d, 0x75, 0x73, 0x68, 0x61, 0x6e, 0x6a, 0x75, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6d, 0x75, 0x6e, 0x61, +0x61, 0x6e, 0x61, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6d, 0x77, 0x65, 0x6e, 0x64, 0x61, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x69, +0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6b, 0x75, +0x6d, 0x77, 0x65, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x69, 0x62, 0x69, +0x72, 0x69, 0x3b, 0x48, 0x75, 0x74, 0x3b, 0x56, 0x69, 0x6c, 0x3b, 0x44, 0x61, 0x74, 0x3b, 0x54, 0x61, 0x69, 0x3b, 0x48, +0x61, 0x6e, 0x3b, 0x53, 0x69, 0x74, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4e, 0x61, 0x6e, 0x3b, 0x54, 0x69, 0x73, 0x3b, 0x4b, +0x75, 0x6d, 0x3b, 0x4b, 0x6d, 0x6a, 0x3b, 0x4b, 0x6d, 0x62, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, +0x20, 0x67, 0x77, 0x61, 0x20, 0x68, 0x75, 0x74, 0x61, 0x6c, 0x61, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, +0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x77, 0x75, 0x76, 0x69, 0x6c, 0x69, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, +0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x77, 0x75, 0x64, 0x61, 0x74, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, +0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x77, 0x75, 0x74, 0x61, 0x69, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, +0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x77, 0x75, 0x68, 0x61, 0x6e, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, +0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x73, 0x69, 0x74, 0x61, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, +0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x73, 0x61, 0x62, 0x61, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, +0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x6e, 0x61, 0x6e, 0x65, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, +0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x74, 0x69, 0x73, 0x61, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, +0x20, 0x67, 0x77, 0x61, 0x20, 0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, +0x67, 0x77, 0x61, 0x20, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x6f, 0x6a, 0x61, 0x3b, 0x70, 0x61, 0x20, +0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, +0x62, 0x69, 0x6c, 0x69, 0x3b, 0x48, 0x3b, 0x56, 0x3b, 0x44, 0x3b, 0x54, 0x3b, 0x48, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x4e, +0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, +0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x79, 0x69, 0x3b, +0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x79, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x79, 0x61, 0x69, 0x3b, 0x41, 0x67, 0x75, +0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, +0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x7a, 0x61, 0x6e, 0x3b, +0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x77, 0x69, 0x3b, 0x6d, 0x25b, 0x3b, 0x7a, 0x75, 0x77, 0x3b, 0x7a, +0x75, 0x6c, 0x3b, 0x75, 0x74, 0x69, 0x3b, 0x73, 0x25b, 0x74, 0x3b, 0x254, 0x6b, 0x75, 0x3b, 0x6e, 0x6f, 0x77, 0x3b, 0x64, +0x65, 0x73, 0x3b, 0x7a, 0x61, 0x6e, 0x77, 0x75, 0x79, 0x65, 0x3b, 0x66, 0x65, 0x62, 0x75, 0x72, 0x75, 0x79, 0x65, 0x3b, +0x6d, 0x61, 0x72, 0x69, 0x73, 0x69, 0x3b, 0x61, 0x77, 0x69, 0x72, 0x69, 0x6c, 0x69, 0x3b, 0x6d, 0x25b, 0x3b, 0x7a, 0x75, +0x77, 0x25b, 0x6e, 0x3b, 0x7a, 0x75, 0x6c, 0x75, 0x79, 0x65, 0x3b, 0x75, 0x74, 0x69, 0x3b, 0x73, 0x25b, 0x74, 0x61, 0x6e, +0x62, 0x75, 0x72, 0x75, 0x3b, 0x254, 0x6b, 0x75, 0x74, 0x254, 0x62, 0x75, 0x72, 0x75, 0x3b, 0x6e, 0x6f, 0x77, 0x61, 0x6e, +0x62, 0x75, 0x72, 0x75, 0x3b, 0x64, 0x65, 0x73, 0x61, 0x6e, 0x62, 0x75, 0x72, 0x75, 0x3b, 0x5a, 0x3b, 0x46, 0x3b, 0x4d, +0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x5a, 0x3b, 0x55, 0x3b, 0x53, 0x3b, 0x186, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4d, +0x62, 0x65, 0x3b, 0x4b, 0x61, 0x69, 0x3b, 0x4b, 0x61, 0x74, 0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x47, 0x61, 0x74, 0x3b, 0x47, +0x61, 0x6e, 0x3b, 0x4d, 0x75, 0x67, 0x3b, 0x4b, 0x6e, 0x6e, 0x3b, 0x4b, 0x65, 0x6e, 0x3b, 0x49, 0x6b, 0x75, 0x3b, 0x49, +0x6d, 0x77, 0x3b, 0x49, 0x67, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6d, 0x62, 0x65, 0x72, +0x65, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x129, 0x72, 0x69, 0x3b, 0x4d, 0x77, 0x65, +0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x68, 0x61, 0x74, 0x169, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, +0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, +0x61, 0x6e, 0x6f, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x74, 0x61, +0x74, 0x169, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6d, 0x169, 0x67, 0x77, 0x61, 0x6e, 0x6a, 0x61, +0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x6e, 0x61, 0x3b, 0x4d, 0x77, 0x65, +0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x65, 0x6e, 0x64, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, +0x20, 0x69, 0x6b, 0x169, 0x6d, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x169, 0x6d, +0x69, 0x20, 0x6e, 0x61, 0x20, 0x169, 0x6d, 0x77, 0x65, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x69, +0x6b, 0x169, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x4b, 0x61, 0x129, 0x72, 0x129, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, +0x4b, 0x3b, 0x47, 0x3b, 0x47, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x13a4, 0x13c3, +0x3b, 0x13a7, 0x13a6, 0x3b, 0x13a0, 0x13c5, 0x3b, 0x13a7, 0x13ec, 0x3b, 0x13a0, 0x13c2, 0x3b, 0x13d5, 0x13ad, 0x3b, 0x13ab, 0x13f0, 0x3b, 0x13a6, +0x13b6, 0x3b, 0x13da, 0x13b5, 0x3b, 0x13da, 0x13c2, 0x3b, 0x13c5, 0x13d3, 0x3b, 0x13a5, 0x13cd, 0x3b, 0x13a4, 0x13c3, 0x13b8, 0x13d4, 0x13c5, 0x3b, +0x13a7, 0x13a6, 0x13b5, 0x3b, 0x13a0, 0x13c5, 0x13f1, 0x3b, 0x13a7, 0x13ec, 0x13c2, 0x3b, 0x13a0, 0x13c2, 0x13cd, 0x13ac, 0x13d8, 0x3b, 0x13d5, 0x13ad, +0x13b7, 0x13f1, 0x3b, 0x13ab, 0x13f0, 0x13c9, 0x13c2, 0x3b, 0x13a6, 0x13b6, 0x13c2, 0x3b, 0x13da, 0x13b5, 0x13cd, 0x13d7, 0x3b, 0x13da, 0x13c2, 0x13c5, +0x13d7, 0x3b, 0x13c5, 0x13d3, 0x13d5, 0x13c6, 0x3b, 0x13a5, 0x13cd, 0x13a9, 0x13f1, 0x3b, 0x13a4, 0x3b, 0x13a7, 0x3b, 0x13a0, 0x3b, 0x13a7, 0x3b, +0x13a0, 0x3b, 0x13d5, 0x3b, 0x13ab, 0x3b, 0x13a6, 0x3b, 0x13da, 0x3b, 0x13da, 0x3b, 0x13c5, 0x3b, 0x13a5, 0x3b, 0x7a, 0x61, 0x6e, 0x3b, +0x66, 0x65, 0x76, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x76, 0x72, 0x3b, 0x6d, 0x65, 0x3b, 0x7a, 0x69, 0x6e, 0x3b, 0x7a, +0x69, 0x6c, 0x3b, 0x6f, 0x75, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, +0x65, 0x73, 0x3b, 0x7a, 0x61, 0x6e, 0x76, 0x69, 0x65, 0x3b, 0x66, 0x65, 0x76, 0x72, 0x69, 0x79, 0x65, 0x3b, 0x6d, 0x61, +0x72, 0x73, 0x3b, 0x61, 0x76, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x65, 0x3b, 0x7a, 0x69, 0x6e, 0x3b, 0x7a, 0x69, 0x6c, 0x79, +0x65, 0x3b, 0x6f, 0x75, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x61, 0x6d, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x3b, 0x6e, +0x6f, 0x76, 0x61, 0x6d, 0x3b, 0x64, 0x65, 0x73, 0x61, 0x6d, 0x3b, 0x7a, 0x3b, 0x66, 0x3b, 0x6d, 0x3b, 0x61, 0x3b, 0x6d, +0x3b, 0x7a, 0x3b, 0x7a, 0x3b, 0x6f, 0x3b, 0x73, 0x3b, 0x6f, 0x3b, 0x6e, 0x3b, 0x64, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, +0x20, 0x4e, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x50, 0x69, 0x6c, +0x69, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x54, 0x61, 0x74, 0x75, 0x3b, 0x4d, 0x77, 0x65, 0x64, +0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x63, 0x68, 0x65, 0x63, 0x68, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, +0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, +0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x55, 0x6d, 0x6f, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, +0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x4d, 0x69, 0x76, 0x69, 0x6c, 0x69, 0x3b, 0x4d, 0x77, +0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x4d, 0x69, 0x74, +0x61, 0x74, 0x75, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, +0x6e, 0x61, 0x20, 0x4e, 0x63, 0x68, 0x65, 0x63, 0x68, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, +0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, 0x77, 0x65, +0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, +0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x55, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, +0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x4d, 0x3b, 0x46, +0xfa, 0x6e, 0x67, 0x61, 0x74, 0x268, 0x3b, 0x4e, 0x61, 0x61, 0x6e, 0x268, 0x3b, 0x4b, 0x65, 0x65, 0x6e, 0x64, 0x61, 0x3b, +0x49, 0x6b, 0xfa, 0x6d, 0x69, 0x3b, 0x49, 0x6e, 0x79, 0x61, 0x6d, 0x62, 0x61, 0x6c, 0x61, 0x3b, 0x49, 0x64, 0x77, 0x61, +0x61, 0x74, 0x61, 0x3b, 0x4d, 0x289, 0x289, 0x6e, 0x63, 0x68, 0x268, 0x3b, 0x56, 0x268, 0x268, 0x72, 0x268, 0x3b, 0x53, 0x61, +0x61, 0x74, 0x289, 0x3b, 0x49, 0x6e, 0x79, 0x69, 0x3b, 0x53, 0x61, 0x61, 0x6e, 0x6f, 0x3b, 0x53, 0x61, 0x73, 0x61, 0x74, +0x289, 0x3b, 0x4b, 0x289, 0x66, 0xfa, 0x6e, 0x67, 0x61, 0x74, 0x268, 0x3b, 0x4b, 0x289, 0x6e, 0x61, 0x61, 0x6e, 0x268, 0x3b, +0x4b, 0x289, 0x6b, 0x65, 0x65, 0x6e, 0x64, 0x61, 0x3b, 0x4b, 0x77, 0x69, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x4b, 0x77, +0x69, 0x69, 0x6e, 0x79, 0x61, 0x6d, 0x62, 0xe1, 0x6c, 0x61, 0x3b, 0x4b, 0x77, 0x69, 0x69, 0x64, 0x77, 0x61, 0x61, 0x74, +0x61, 0x3b, 0x4b, 0x289, 0x6d, 0x289, 0x289, 0x6e, 0x63, 0x68, 0x268, 0x3b, 0x4b, 0x289, 0x76, 0x268, 0x268, 0x72, 0x268, 0x3b, +0x4b, 0x289, 0x73, 0x61, 0x61, 0x74, 0x289, 0x3b, 0x4b, 0x77, 0x69, 0x69, 0x6e, 0x79, 0x69, 0x3b, 0x4b, 0x289, 0x73, 0x61, +0x61, 0x6e, 0x6f, 0x3b, 0x4b, 0x289, 0x73, 0x61, 0x73, 0x61, 0x74, 0x289, 0x3b, 0x46, 0x3b, 0x4e, 0x3b, 0x4b, 0x3b, 0x49, +0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x4d, 0x3b, 0x56, 0x3b, 0x53, 0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x4a, 0x61, 0x6e, +0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x75, 0x3b, 0x4d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x75, +0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x75, 0x3b, 0x53, 0x65, 0x62, 0x3b, 0x4f, 0x6b, 0x69, 0x3b, 0x4e, 0x6f, 0x76, +0x3b, 0x44, 0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x77, 0x61, 0x6c, 0x69, 0x79, 0x6f, 0x3b, 0x46, 0x65, 0x62, 0x77, 0x61, +0x6c, 0x69, 0x79, 0x6f, 0x3b, 0x4d, 0x61, 0x72, 0x69, 0x73, 0x69, 0x3b, 0x41, 0x70, 0x75, 0x6c, 0x69, 0x3b, 0x4d, 0x61, +0x61, 0x79, 0x69, 0x3b, 0x4a, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x61, 0x79, 0x69, 0x3b, 0x41, 0x67, +0x75, 0x73, 0x69, 0x74, 0x6f, 0x3b, 0x53, 0x65, 0x62, 0x75, 0x74, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x69, +0x74, 0x6f, 0x62, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, +0x61, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x63, 0x3b, 0x45, 0x70, 0x72, 0x3b, 0x4d, 0x65, +0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x4f, 0x67, 0x61, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, +0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, +0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x3b, 0x45, 0x70, 0x72, 0x65, 0x6f, 0x3b, 0x4d, +0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x4f, 0x67, 0x61, 0x73, 0x74, 0x69, +0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, +0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x45, +0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4f, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4a, 0x61, 0x6e, +0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, +0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x74, 0x75, 0x3b, 0x4e, 0x75, 0x76, +0x3b, 0x44, 0x69, 0x7a, 0x3b, 0x4a, 0x61, 0x6e, 0x65, 0x72, 0x75, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x65, 0x72, 0x75, 0x3b, +0x4d, 0x61, 0x72, 0x73, 0x75, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x75, 0x3b, 0x4a, 0x75, 0x6e, +0x68, 0x75, 0x3b, 0x4a, 0x75, 0x6c, 0x68, 0x75, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x75, 0x3b, 0x53, 0x65, 0x74, 0x65, +0x6e, 0x62, 0x72, 0x75, 0x3b, 0x4f, 0x74, 0x75, 0x62, 0x72, 0x75, 0x3b, 0x4e, 0x75, 0x76, 0x65, 0x6e, 0x62, 0x72, 0x75, +0x3b, 0x44, 0x69, 0x7a, 0x65, 0x6e, 0x62, 0x72, 0x75, 0x3b, 0x4a, 0x41, 0x4e, 0x3b, 0x46, 0x45, 0x42, 0x3b, 0x4d, 0x41, +0x43, 0x3b, 0x128, 0x50, 0x55, 0x3b, 0x4d, 0x128, 0x128, 0x3b, 0x4e, 0x4a, 0x55, 0x3b, 0x4e, 0x4a, 0x52, 0x3b, 0x41, 0x47, +0x41, 0x3b, 0x53, 0x50, 0x54, 0x3b, 0x4f, 0x4b, 0x54, 0x3b, 0x4e, 0x4f, 0x56, 0x3b, 0x44, 0x45, 0x43, 0x3b, 0x4a, 0x61, +0x6e, 0x75, 0x61, 0x72, 0x129, 0x3b, 0x46, 0x65, 0x62, 0x75, 0x72, 0x75, 0x61, 0x72, 0x129, 0x3b, 0x4d, 0x61, 0x63, 0x68, +0x69, 0x3b, 0x128, 0x70, 0x75, 0x72, 0x169, 0x3b, 0x4d, 0x129, 0x129, 0x3b, 0x4e, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x4e, 0x6a, +0x75, 0x72, 0x61, 0x129, 0x3b, 0x41, 0x67, 0x61, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, +0x3b, 0x4f, 0x6b, 0x74, 0x169, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x63, 0x65, +0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x128, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, 0x3b, +0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4d, 0x75, 0x6c, 0x3b, 0x4e, 0x67, 0x61, 0x74, 0x3b, 0x54, 0x61, 0x61, +0x3b, 0x49, 0x77, 0x6f, 0x3b, 0x4d, 0x61, 0x6d, 0x3b, 0x50, 0x61, 0x61, 0x3b, 0x4e, 0x67, 0x65, 0x3b, 0x52, 0x6f, 0x6f, +0x3b, 0x42, 0x75, 0x72, 0x3b, 0x45, 0x70, 0x65, 0x3b, 0x4b, 0x70, 0x74, 0x3b, 0x4b, 0x70, 0x61, 0x3b, 0x4d, 0x75, 0x6c, +0x67, 0x75, 0x6c, 0x3b, 0x4e, 0x67, 0x2019, 0x61, 0x74, 0x79, 0x61, 0x61, 0x74, 0x6f, 0x3b, 0x4b, 0x69, 0x70, 0x74, 0x61, +0x61, 0x6d, 0x6f, 0x3b, 0x49, 0x77, 0x6f, 0x6f, 0x74, 0x6b, 0x75, 0x75, 0x74, 0x3b, 0x4d, 0x61, 0x6d, 0x75, 0x75, 0x74, +0x3b, 0x50, 0x61, 0x61, 0x67, 0x69, 0x3b, 0x4e, 0x67, 0x2019, 0x65, 0x69, 0x79, 0x65, 0x65, 0x74, 0x3b, 0x52, 0x6f, 0x6f, +0x70, 0x74, 0x75, 0x69, 0x3b, 0x42, 0x75, 0x72, 0x65, 0x65, 0x74, 0x3b, 0x45, 0x70, 0x65, 0x65, 0x73, 0x6f, 0x3b, 0x4b, +0x69, 0x70, 0x73, 0x75, 0x75, 0x6e, 0x64, 0x65, 0x20, 0x6e, 0x65, 0x20, 0x74, 0x61, 0x61, 0x69, 0x3b, 0x4b, 0x69, 0x70, +0x73, 0x75, 0x75, 0x6e, 0x64, 0x65, 0x20, 0x6e, 0x65, 0x62, 0x6f, 0x20, 0x61, 0x65, 0x6e, 0x67, 0x2019, 0x3b, 0x4d, 0x3b, +0x4e, 0x3b, 0x54, 0x3b, 0x49, 0x3b, 0x4d, 0x3b, 0x50, 0x3b, 0x4e, 0x3b, 0x52, 0x3b, 0x42, 0x3b, 0x45, 0x3b, 0x4b, 0x3b, +0x4b, 0x3b, 0x1c3, 0x4b, 0x68, 0x61, 0x6e, 0x6e, 0x69, 0x3b, 0x1c3, 0x4b, 0x68, 0x61, 0x6e, 0x1c0, 0x67, 0xf4, 0x61, 0x62, +0x3b, 0x1c0, 0x4b, 0x68, 0x75, 0x75, 0x1c1, 0x6b, 0x68, 0xe2, 0x62, 0x3b, 0x1c3, 0x48, 0xf4, 0x61, 0x1c2, 0x6b, 0x68, 0x61, +0x69, 0x62, 0x3b, 0x1c3, 0x4b, 0x68, 0x61, 0x69, 0x74, 0x73, 0xe2, 0x62, 0x3b, 0x47, 0x61, 0x6d, 0x61, 0x1c0, 0x61, 0x65, +0x62, 0x3b, 0x1c2, 0x4b, 0x68, 0x6f, 0x65, 0x73, 0x61, 0x6f, 0x62, 0x3b, 0x41, 0x6f, 0x1c1, 0x6b, 0x68, 0x75, 0x75, 0x6d, +0xfb, 0x1c1, 0x6b, 0x68, 0xe2, 0x62, 0x3b, 0x54, 0x61, 0x72, 0x61, 0x1c0, 0x6b, 0x68, 0x75, 0x75, 0x6d, 0xfb, 0x1c1, 0x6b, +0x68, 0xe2, 0x62, 0x3b, 0x1c2, 0x4e, 0xfb, 0x1c1, 0x6e, 0xe2, 0x69, 0x73, 0x65, 0x62, 0x3b, 0x1c0, 0x48, 0x6f, 0x6f, 0x1c2, +0x67, 0x61, 0x65, 0x62, 0x3b, 0x48, 0xf4, 0x61, 0x73, 0x6f, 0x72, 0x65, 0x1c1, 0x6b, 0x68, 0xe2, 0x62, 0x3b, 0x4a, 0x61, +0x6e, 0x2e, 0x3b, 0x46, 0xe4, 0x62, 0x2e, 0x3b, 0x4d, 0xe4, 0x7a, 0x2e, 0x3b, 0x41, 0x70, 0x72, 0x2e, 0x3b, 0x4d, 0x61, +0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x2e, 0x3b, 0x4a, 0x75, 0x6c, 0x2e, 0x3b, 0x4f, 0x75, 0x6a, 0x2e, 0x3b, 0x53, 0xe4, 0x70, +0x2e, 0x3b, 0x4f, 0x6b, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x65, 0x7a, 0x2e, 0x3b, 0x4a, 0x61, 0x6e, +0x6e, 0x65, 0x77, 0x61, 0x3b, 0x46, 0xe4, 0x62, 0x72, 0x6f, 0x77, 0x61, 0x3b, 0x4d, 0xe4, 0xe4, 0x7a, 0x3b, 0x41, 0x70, +0x72, 0x65, 0x6c, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x75, 0x6c, 0x69, +0x3b, 0x4f, 0x75, 0x6a, 0x6f, 0xdf, 0x3b, 0x53, 0x65, 0x70, 0x74, 0xe4, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, +0x6f, 0x68, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0xe4, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x7a, 0xe4, 0x6d, +0x62, 0x65, 0x72, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0xe4, 0x62, 0x3b, 0x4d, 0xe4, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x3b, +0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x4f, 0x75, 0x6a, 0x3b, 0x53, 0xe4, 0x70, 0x3b, +0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x7a, 0x3b, 0x44, 0x61, 0x6c, 0x3b, 0x41, 0x72, 0xe1, 0x3b, +0x186, 0x25b, 0x6e, 0x3b, 0x44, 0x6f, 0x79, 0x3b, 0x4c, 0xe9, 0x70, 0x3b, 0x52, 0x6f, 0x6b, 0x3b, 0x53, 0xe1, 0x73, 0x3b, +0x42, 0x254, 0x301, 0x72, 0x3b, 0x4b, 0xfa, 0x73, 0x3b, 0x47, 0xed, 0x73, 0x3b, 0x53, 0x68, 0x289, 0x301, 0x3b, 0x4e, 0x74, +0x289, 0x301, 0x3b, 0x4f, 0x6c, 0x61, 0x64, 0x61, 0x6c, 0x289, 0x301, 0x3b, 0x41, 0x72, 0xe1, 0x74, 0x3b, 0x186, 0x25b, 0x6e, +0x268, 0x301, 0x254, 0x268, 0x14b, 0x254, 0x6b, 0x3b, 0x4f, 0x6c, 0x6f, 0x64, 0x6f, 0x79, 0xed, 0xf3, 0x72, 0xed, 0xea, 0x20, +0x69, 0x6e, 0x6b, 0xf3, 0x6b, 0xfa, 0xe2, 0x3b, 0x4f, 0x6c, 0x6f, 0x69, 0x6c, 0xe9, 0x70, 0x16b, 0x6e, 0x79, 0x12b, 0x113, +0x20, 0x69, 0x6e, 0x6b, 0xf3, 0x6b, 0xfa, 0xe2, 0x3b, 0x4b, 0xfa, 0x6a, 0xfa, 0x254, 0x72, 0x254, 0x6b, 0x3b, 0x4d, 0xf3, +0x72, 0x75, 0x73, 0xe1, 0x73, 0x69, 0x6e, 0x3b, 0x186, 0x6c, 0x254, 0x301, 0x268, 0x301, 0x62, 0x254, 0x301, 0x72, 0xe1, 0x72, +0x25b, 0x3b, 0x4b, 0xfa, 0x73, 0x68, 0xee, 0x6e, 0x3b, 0x4f, 0x6c, 0x67, 0xed, 0x73, 0x61, 0x6e, 0x3b, 0x50, 0x289, 0x73, +0x68, 0x289, 0x301, 0x6b, 0x61, 0x3b, 0x4e, 0x74, 0x289, 0x301, 0x14b, 0x289, 0x301, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, +0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, -0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, -0x4d, 0x61, 0x63, 0x68, 0x69, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x69, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, -0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, -0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, -0x65, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, -0x73, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, -0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, -0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, -0x72, 0x69, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, -0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x69, 0x3b, 0x73, 0x65, 0x70, 0x74, -0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, -0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x42f, 0x43d, 0x432, 0x430, 0x440, 0x3b, 0x424, 0x435, -0x432, 0x440, 0x430, 0x43b, 0x3b, 0x41c, 0x430, 0x440, 0x442, 0x3b, 0x410, 0x43f, 0x440, 0x435, 0x43b, 0x3b, 0x41c, 0x430, 0x439, 0x3b, -0x418, 0x44e, 0x43d, 0x3b, 0x418, 0x44e, 0x43b, 0x3b, 0x410, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x421, 0x435, 0x43d, 0x442, 0x44f, -0x431, 0x440, 0x3b, 0x41e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x3b, 0x41d, 0x43e, 0x44f, 0x431, 0x440, 0x3b, 0x414, 0x435, 0x43a, 0x430, -0x431, 0x440, 0x3b, 0xb9c, 0xba9, 0x2e, 0x3b, 0xbaa, 0xbbf, 0xbaa, 0xbcd, 0x2e, 0x3b, 0xbae, 0xbbe, 0xbb0, 0xbcd, 0x2e, 0x3b, 0xb8f, -0xbaa, 0xbcd, 0x2e, 0x3b, 0xbae, 0xbc7, 0x3b, 0xb9c, 0xbc2, 0xba9, 0xbcd, 0x3b, 0xb9c, 0xbc2, 0xbb2, 0xbc8, 0x3b, 0xb86, 0xb95, 0x2e, -0x3b, 0xb9a, 0xbc6, 0xbaa, 0xbcd, 0x2e, 0x3b, 0xb85, 0xb95, 0xbcd, 0x2e, 0x3b, 0xba8, 0xbb5, 0x2e, 0x3b, 0xb9f, 0xbbf, 0xb9a, 0x2e, -0x3b, 0xb9c, 0xba9, 0xbb5, 0xbb0, 0xbbf, 0x3b, 0xbaa, 0xbbf, 0xbaa, 0xbcd, 0xbb0, 0xbb5, 0xbb0, 0xbbf, 0x3b, 0xbae, 0xbbe, 0xbb0, 0xbcd, -0xb9a, 0xbcd, 0x3b, 0xb8f, 0xbaa, 0xbcd, 0xbb0, 0xbb2, 0xbcd, 0x3b, 0xbae, 0xbc7, 0x3b, 0xb9c, 0xbc2, 0xba9, 0xbcd, 0x3b, 0xb9c, 0xbc2, -0xbb2, 0xbc8, 0x3b, 0xb86, 0xb95, 0xbb8, 0xbcd, 0xb9f, 0xbcd, 0x3b, 0xb9a, 0xbc6, 0xbaa, 0xbcd, 0xb9f, 0xbae, 0xbcd, 0xbaa, 0xbb0, 0xbcd, -0x3b, 0xb85, 0xb95, 0xbcd, 0xb9f, 0xbcb, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xba8, 0xbb5, 0xbae, 0xbcd, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xb9f, 0xbbf, -0xb9a, 0xbae, 0xbcd, 0xbaa, 0xbb0, 0xbcd, 0x3b, 0xb9c, 0x3b, 0xbaa, 0xbbf, 0x3b, 0xbae, 0xbbe, 0x3b, 0xb8f, 0x3b, 0xbae, 0xbc7, 0x3b, -0xb9c, 0xbc2, 0x3b, 0xb9c, 0xbc2, 0x3b, 0xb86, 0x3b, 0xb9a, 0xbc6, 0x3b, 0xb85, 0x3b, 0xba8, 0x3b, 0xb9f, 0xbbf, 0x3b, 0x433, 0x44b, -0x439, 0x43d, 0x2e, 0x3b, 0x444, 0x435, 0x432, 0x2e, 0x3b, 0x43c, 0x430, 0x440, 0x2e, 0x3b, 0x430, 0x43f, 0x440, 0x2e, 0x3b, 0x43c, -0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x44c, 0x3b, 0x438, 0x44e, 0x43b, 0x44c, 0x3b, 0x430, 0x432, 0x433, 0x2e, 0x3b, 0x441, 0x435, -0x43d, 0x442, 0x2e, 0x3b, 0x43e, 0x43a, 0x442, 0x2e, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x2e, 0x3b, 0x434, 0x435, 0x43a, 0x2e, 0x3b, -0x433, 0x44b, 0x439, 0x43d, 0x432, 0x430, 0x440, 0x3b, 0x444, 0x435, 0x432, 0x440, 0x430, 0x43b, 0x44c, 0x3b, 0x43c, 0x430, 0x440, 0x442, -0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x44c, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x44c, 0x3b, 0x438, 0x44e, 0x43b, -0x44c, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x43e, 0x43a, -0x442, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x440, 0x44c, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, 0x440, 0x44c, -0x3b, 0xc1c, 0xc28, 0x3b, 0xc2b, 0xc3f, 0xc2c, 0xc4d, 0xc30, 0x3b, 0xc2e, 0xc3e, 0xc30, 0xc4d, 0xc1a, 0xc3f, 0x3b, 0xc0f, 0xc2a, 0xc4d, -0xc30, 0xc3f, 0x3b, 0xc2e, 0xc47, 0x3b, 0xc1c, 0xc42, 0xc28, 0xc4d, 0x3b, 0xc1c, 0xc41, 0xc32, 0xc48, 0x3b, 0xc06, 0xc17, 0x3b, 0xc38, -0xc46, 0xc2a, 0xc4d, 0xc1f, 0xc46, 0xc02, 0x3b, 0xc05, 0xc15, 0xc4d, 0xc1f, 0xc4b, 0x3b, 0xc28, 0xc35, 0xc02, 0x3b, 0xc21, 0xc3f, 0xc38, -0xc46, 0xc02, 0x3b, 0xc1c, 0xc28, 0xc35, 0xc30, 0xc3f, 0x3b, 0xc2b, 0xc3f, 0xc2c, 0xc4d, 0xc30, 0xc35, 0xc30, 0xc3f, 0x3b, 0xc2e, 0xc3e, -0xc30, 0xc4d, 0xc1a, 0xc3f, 0x3b, 0xc0f, 0xc2a, 0xc4d, 0xc30, 0xc3f, 0xc32, 0xc4d, 0x3b, 0xc2e, 0xc47, 0x3b, 0xc1c, 0xc42, 0xc28, 0xc4d, -0x3b, 0xc1c, 0xc41, 0xc32, 0xc48, 0x3b, 0xc06, 0xc17, 0xc38, 0xc4d, 0xc1f, 0xc41, 0x3b, 0xc38, 0xc46, 0xc2a, 0xc4d, 0xc1f, 0xc46, 0xc02, -0xc2c, 0xc30, 0xc4d, 0x3b, 0xc05, 0xc15, 0xc4d, 0xc1f, 0xc4b, 0xc2c, 0xc30, 0xc4d, 0x3b, 0xc28, 0xc35, 0xc02, 0xc2c, 0xc30, 0xc4d, 0x3b, -0xc21, 0xc3f, 0xc38, 0xc46, 0xc02, 0xc2c, 0xc30, 0xc4d, 0x3b, 0xc1c, 0x3b, 0xc2b, 0xc3f, 0x3b, 0xc2e, 0xc3e, 0x3b, 0xc0f, 0x3b, 0xc2e, -0xc47, 0x3b, 0xc1c, 0xc42, 0x3b, 0xc1c, 0xc41, 0x3b, 0xc06, 0x3b, 0xc38, 0xc46, 0x3b, 0xc05, 0x3b, 0xc28, 0x3b, 0xc21, 0xc3f, 0x3b, -0xe21, 0x2e, 0xe04, 0x2e, 0x3b, 0xe01, 0x2e, 0xe1e, 0x2e, 0x3b, 0xe21, 0xe35, 0x2e, 0xe04, 0x2e, 0x3b, 0xe40, 0xe21, 0x2e, 0xe22, -0x2e, 0x3b, 0xe1e, 0x2e, 0xe04, 0x2e, 0x3b, 0xe21, 0xe34, 0x2e, 0xe22, 0x2e, 0x3b, 0xe01, 0x2e, 0xe04, 0x2e, 0x3b, 0xe2a, 0x2e, -0xe04, 0x2e, 0x3b, 0xe01, 0x2e, 0xe22, 0x2e, 0x3b, 0xe15, 0x2e, 0xe04, 0x2e, 0x3b, 0xe1e, 0x2e, 0xe22, 0x2e, 0x3b, 0xe18, 0x2e, -0xe04, 0x2e, 0x3b, 0xe21, 0xe01, 0xe23, 0xe32, 0xe04, 0xe21, 0x3b, 0xe01, 0xe38, 0xe21, 0xe20, 0xe32, 0xe1e, 0xe31, 0xe19, 0xe18, 0xe4c, -0x3b, 0xe21, 0xe35, 0xe19, 0xe32, 0xe04, 0xe21, 0x3b, 0xe40, 0xe21, 0xe29, 0xe32, 0xe22, 0xe19, 0x3b, 0xe1e, 0xe24, 0xe29, 0xe20, 0xe32, -0xe04, 0xe21, 0x3b, 0xe21, 0xe34, 0xe16, 0xe38, 0xe19, 0xe32, 0xe22, 0xe19, 0x3b, 0xe01, 0xe23, 0xe01, 0xe0e, 0xe32, 0xe04, 0xe21, 0x3b, -0xe2a, 0xe34, 0xe07, 0xe2b, 0xe32, 0xe04, 0xe21, 0x3b, 0xe01, 0xe31, 0xe19, 0xe22, 0xe32, 0xe22, 0xe19, 0x3b, 0xe15, 0xe38, 0xe25, 0xe32, -0xe04, 0xe21, 0x3b, 0xe1e, 0xe24, 0xe28, 0xe08, 0xe34, 0xe01, 0xe32, 0xe22, 0xe19, 0x3b, 0xe18, 0xe31, 0xe19, 0xe27, 0xe32, 0xe04, 0xe21, -0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xf44, 0xf0b, 0xf54, 0xf7c, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf42, 0xf49, -0xf72, 0xf66, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf42, 0xf66, 0xf74, 0xf58, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, -0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf5e, 0xf72, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf63, 0xf94, 0xf0b, 0xf54, -0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xfb2, 0xf74, 0xf42, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, -0xf56, 0xf51, 0xf74, 0xf53, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf62, 0xf92, 0xfb1, 0xf51, 0xf0b, 0xf54, -0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xf42, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, -0xf45, 0xf74, 0xf0b, 0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf45, 0xf72, 0xf42, 0xf0b, -0xf54, 0xf0b, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0xf0b, 0x3b, -0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xf44, 0xf0b, 0xf54, 0xf7c, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf42, 0xf49, 0xf72, 0xf66, -0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf42, 0xf66, 0xf74, 0xf58, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, -0xf56, 0xf5e, 0xf72, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf63, 0xf94, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, -0xf0b, 0xf51, 0xfb2, 0xf74, 0xf42, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf51, 0xf74, 0xf53, 0xf0b, 0xf54, 0x3b, -0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf62, 0xf92, 0xfb1, 0xf51, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf51, 0xf42, -0xf74, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, -0xf56, 0xf45, 0xf74, 0xf0b, 0xf42, 0xf45, 0xf72, 0xf42, 0xf0b, 0xf54, 0x3b, 0xf5f, 0xfb3, 0xf0b, 0xf56, 0xf0b, 0xf56, 0xf45, 0xf74, 0xf0b, -0xf42, 0xf49, 0xf72, 0xf66, 0xf0b, 0xf54, 0x3b, 0x1325, 0x122a, 0x3b, 0x1208, 0x12ab, 0x3b, 0x1218, 0x130b, 0x3b, 0x121a, 0x12eb, 0x3b, 0x130d, -0x1295, 0x3b, 0x1230, 0x1290, 0x3b, 0x1213, 0x121d, 0x3b, 0x1290, 0x1213, 0x3b, 0x1218, 0x1235, 0x3b, 0x1325, 0x1245, 0x3b, 0x1215, 0x12f3, 0x3b, -0x1273, 0x1215, 0x3b, 0x1325, 0x122a, 0x3b, 0x1208, 0x12ab, 0x1272, 0x1275, 0x3b, 0x1218, 0x130b, 0x1262, 0x1275, 0x3b, 0x121a, 0x12eb, 0x12dd, 0x12eb, -0x3b, 0x130d, 0x1295, 0x1266, 0x1275, 0x3b, 0x1230, 0x1290, 0x3b, 0x1213, 0x121d, 0x1208, 0x3b, 0x1290, 0x1213, 0x1230, 0x3b, 0x1218, 0x1235, 0x12a8, -0x1228, 0x121d, 0x3b, 0x1325, 0x1245, 0x121d, 0x1272, 0x3b, 0x1215, 0x12f3, 0x122d, 0x3b, 0x1273, 0x1215, 0x1233, 0x1235, 0x3b, 0x1325, 0x3b, 0x1208, -0x3b, 0x1218, 0x3b, 0x121a, 0x3b, 0x130d, 0x3b, 0x1230, 0x3b, 0x1213, 0x3b, 0x1290, 0x3b, 0x1218, 0x3b, 0x1325, 0x3b, 0x1215, 0x3b, 0x1273, -0x3b, 0x53, 0x101, 0x6e, 0x3b, 0x46, 0x113, 0x70, 0x3b, 0x4d, 0x61, 0x2bb, 0x61, 0x3b, 0x2bb, 0x45, 0x70, 0x65, 0x3b, 0x4d, -0x113, 0x3b, 0x53, 0x75, 0x6e, 0x3b, 0x53, 0x69, 0x75, 0x3b, 0x2bb, 0x41, 0x6f, 0x6b, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x2bb, -0x4f, 0x6b, 0x61, 0x3b, 0x4e, 0x14d, 0x76, 0x3b, 0x54, 0x12b, 0x73, 0x3b, 0x53, 0x101, 0x6e, 0x75, 0x61, 0x6c, 0x69, 0x3b, -0x46, 0x113, 0x70, 0x75, 0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x61, 0x2bb, 0x61, 0x73, 0x69, 0x3b, 0x2bb, 0x45, 0x70, 0x65, 0x6c, -0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x113, 0x3b, 0x53, 0x75, 0x6e, 0x65, 0x3b, 0x53, 0x69, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x2bb, -0x41, 0x6f, 0x6b, 0x6f, 0x73, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x69, 0x74, 0x65, 0x6d, 0x61, 0x3b, 0x2bb, 0x4f, 0x6b, 0x61, -0x74, 0x6f, 0x70, 0x61, 0x3b, 0x4e, 0x14d, 0x76, 0x65, 0x6d, 0x61, 0x3b, 0x54, 0x12b, 0x73, 0x65, 0x6d, 0x61, 0x3b, 0x53, -0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, -0x3b, 0x54, 0x3b, 0x4f, 0x63, 0x61, 0x3b, 0x15e, 0x75, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4e, 0x69, 0x73, 0x3b, 0x4d, -0x61, 0x79, 0x3b, 0x48, 0x61, 0x7a, 0x3b, 0x54, 0x65, 0x6d, 0x3b, 0x41, 0x11f, 0x75, 0x3b, 0x45, 0x79, 0x6c, 0x3b, 0x45, -0x6b, 0x69, 0x3b, 0x4b, 0x61, 0x73, 0x3b, 0x41, 0x72, 0x61, 0x3b, 0x4f, 0x63, 0x61, 0x6b, 0x3b, 0x15e, 0x75, 0x62, 0x61, -0x74, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x3b, 0x4e, 0x69, 0x73, 0x61, 0x6e, 0x3b, 0x4d, 0x61, 0x79, 0x131, 0x73, 0x3b, 0x48, -0x61, 0x7a, 0x69, 0x72, 0x61, 0x6e, 0x3b, 0x54, 0x65, 0x6d, 0x6d, 0x75, 0x7a, 0x3b, 0x41, 0x11f, 0x75, 0x73, 0x74, 0x6f, -0x73, 0x3b, 0x45, 0x79, 0x6c, 0xfc, 0x6c, 0x3b, 0x45, 0x6b, 0x69, 0x6d, 0x3b, 0x4b, 0x61, 0x73, 0x131, 0x6d, 0x3b, 0x41, -0x72, 0x61, 0x6c, 0x131, 0x6b, 0x3b, 0x4f, 0x3b, 0x15e, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x54, 0x3b, -0x41, 0x3b, 0x45, 0x3b, 0x45, 0x3b, 0x4b, 0x3b, 0x41, 0x3b, 0xdd, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x77, 0x3b, 0x4d, 0x61, -0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0xfd, 0x3b, 0x49, 0xfd, 0x75, 0x6e, 0x3b, 0x49, 0xfd, 0x75, 0x6c, 0x3b, -0x41, 0x77, 0x67, 0x3b, 0x53, 0x65, 0x6e, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0xfd, 0x3b, 0x44, 0x65, 0x6b, 0x3b, -0xdd, 0x61, 0x6e, 0x77, 0x61, 0x72, 0x3b, 0x46, 0x65, 0x77, 0x72, 0x61, 0x6c, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x3b, 0x41, -0x70, 0x72, 0x65, 0x6c, 0x3b, 0x4d, 0x61, 0xfd, 0x3b, 0x49, 0xfd, 0x75, 0x6e, 0x3b, 0x49, 0xfd, 0x75, 0x6c, 0x3b, 0x41, -0x77, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x6e, 0x74, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0xfd, 0x61, -0x62, 0x72, 0x3b, 0x4e, 0x6f, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x44, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, 0xdd, 0x3b, 0x46, -0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, -0x3b, 0xfd, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x77, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, -0xfd, 0x3b, 0x69, 0xfd, 0x75, 0x6e, 0x3b, 0x69, 0xfd, 0x75, 0x6c, 0x3b, 0x61, 0x77, 0x67, 0x3b, 0x73, 0x65, 0x6e, 0x3b, -0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0xfd, 0x3b, 0x64, 0x65, 0x6b, 0x3b, 0xfd, 0x61, 0x6e, 0x77, 0x61, 0x72, 0x3b, 0x66, -0x65, 0x77, 0x72, 0x61, 0x6c, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x6d, 0x61, 0xfd, -0x3b, 0x69, 0xfd, 0x75, 0x6e, 0x3b, 0x69, 0xfd, 0x75, 0x6c, 0x3b, 0x61, 0x77, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, -0x6e, 0x74, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0xfd, 0x61, 0x62, 0x72, 0x3b, 0x6e, 0x6f, 0xfd, 0x61, 0x62, -0x72, 0x3b, 0x64, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, 0x64a, 0x627, 0x646, 0x6cb, 0x627, 0x631, 0x3b, 0x641, 0x6d0, 0x6cb, 0x631, -0x627, 0x644, 0x3b, 0x645, 0x627, 0x631, 0x62a, 0x3b, 0x626, 0x627, 0x67e, 0x631, 0x6d0, 0x644, 0x3b, 0x645, 0x627, 0x64a, 0x3b, 0x626, -0x649, 0x64a, 0x6c7, 0x646, 0x3b, 0x626, 0x649, 0x64a, 0x6c7, 0x644, 0x3b, 0x626, 0x627, 0x6cb, 0x63a, 0x6c7, 0x633, 0x62a, 0x3b, 0x633, -0x6d0, 0x646, 0x62a, 0x6d5, 0x628, 0x649, 0x631, 0x3b, 0x626, 0x6c6, 0x643, 0x62a, 0x6d5, 0x628, 0x649, 0x631, 0x3b, 0x646, 0x648, 0x64a, -0x627, 0x628, 0x649, 0x631, 0x3b, 0x62f, 0x6d0, 0x643, 0x627, 0x628, 0x649, 0x631, 0x3b, 0x441, 0x456, 0x447, 0x3b, 0x43b, 0x44e, 0x442, -0x3b, 0x431, 0x435, 0x440, 0x3b, 0x43a, 0x432, 0x456, 0x3b, 0x442, 0x440, 0x430, 0x3b, 0x447, 0x435, 0x440, 0x3b, 0x43b, 0x438, 0x43f, -0x3b, 0x441, 0x435, 0x440, 0x3b, 0x432, 0x435, 0x440, 0x3b, 0x436, 0x43e, 0x432, 0x3b, 0x43b, 0x438, 0x441, 0x3b, 0x433, 0x440, 0x443, -0x3b, 0x441, 0x456, 0x447, 0x435, 0x43d, 0x44c, 0x3b, 0x43b, 0x44e, 0x442, 0x438, 0x439, 0x3b, 0x431, 0x435, 0x440, 0x435, 0x437, 0x435, -0x43d, 0x44c, 0x3b, 0x43a, 0x432, 0x456, 0x442, 0x435, 0x43d, 0x44c, 0x3b, 0x442, 0x440, 0x430, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x447, -0x435, 0x440, 0x432, 0x435, 0x43d, 0x44c, 0x3b, 0x43b, 0x438, 0x43f, 0x435, 0x43d, 0x44c, 0x3b, 0x441, 0x435, 0x440, 0x43f, 0x435, 0x43d, -0x44c, 0x3b, 0x432, 0x435, 0x440, 0x435, 0x441, 0x435, 0x43d, 0x44c, 0x3b, 0x436, 0x43e, 0x432, 0x442, 0x435, 0x43d, 0x44c, 0x3b, 0x43b, -0x438, 0x441, 0x442, 0x43e, 0x43f, 0x430, 0x434, 0x3b, 0x433, 0x440, 0x443, 0x434, 0x435, 0x43d, 0x44c, 0x3b, 0x421, 0x3b, 0x41b, 0x3b, -0x411, 0x3b, 0x41a, 0x3b, 0x422, 0x3b, 0x427, 0x3b, 0x41b, 0x3b, 0x421, 0x3b, 0x412, 0x3b, 0x416, 0x3b, 0x41b, 0x3b, 0x413, 0x3b, -0x441, 0x456, 0x447, 0x2e, 0x3b, 0x43b, 0x44e, 0x442, 0x2e, 0x3b, 0x431, 0x435, 0x440, 0x2e, 0x3b, 0x43a, 0x432, 0x456, 0x442, 0x2e, -0x3b, 0x442, 0x440, 0x430, 0x432, 0x2e, 0x3b, 0x447, 0x435, 0x440, 0x432, 0x2e, 0x3b, 0x43b, 0x438, 0x43f, 0x2e, 0x3b, 0x441, 0x435, -0x440, 0x43f, 0x2e, 0x3b, 0x432, 0x435, 0x440, 0x2e, 0x3b, 0x436, 0x43e, 0x432, 0x442, 0x2e, 0x3b, 0x43b, 0x438, 0x441, 0x442, 0x2e, -0x3b, 0x433, 0x440, 0x443, 0x434, 0x2e, 0x3b, 0x441, 0x456, 0x447, 0x43d, 0x44f, 0x3b, 0x43b, 0x44e, 0x442, 0x43e, 0x433, 0x43e, 0x3b, -0x431, 0x435, 0x440, 0x435, 0x437, 0x43d, 0x44f, 0x3b, 0x43a, 0x432, 0x456, 0x442, 0x43d, 0x44f, 0x3b, 0x442, 0x440, 0x430, 0x432, 0x43d, -0x44f, 0x3b, 0x447, 0x435, 0x440, 0x432, 0x43d, 0x44f, 0x3b, 0x43b, 0x438, 0x43f, 0x43d, 0x44f, 0x3b, 0x441, 0x435, 0x440, 0x43f, 0x43d, -0x44f, 0x3b, 0x432, 0x435, 0x440, 0x435, 0x441, 0x43d, 0x44f, 0x3b, 0x436, 0x43e, 0x432, 0x442, 0x43d, 0x44f, 0x3b, 0x43b, 0x438, 0x441, -0x442, 0x43e, 0x43f, 0x430, 0x434, 0x430, 0x3b, 0x433, 0x440, 0x443, 0x434, 0x43d, 0x44f, 0x3b, 0x441, 0x3b, 0x43b, 0x3b, 0x431, 0x3b, -0x43a, 0x3b, 0x442, 0x3b, 0x447, 0x3b, 0x43b, 0x3b, 0x441, 0x3b, 0x432, 0x3b, 0x436, 0x3b, 0x43b, 0x3b, 0x433, 0x3b, 0x62c, 0x646, -0x648, 0x631, 0x6cc, 0x3b, 0x641, 0x631, 0x648, 0x631, 0x6cc, 0x3b, 0x645, 0x627, 0x631, 0x686, 0x3b, 0x627, 0x67e, 0x631, 0x6cc, 0x644, -0x3b, 0x645, 0x626, 0x6cc, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, 0x648, 0x644, 0x627, 0x626, 0x6cc, 0x3b, 0x627, 0x6af, 0x633, 0x62a, -0x3b, 0x633, 0x62a, 0x645, 0x628, 0x631, 0x3b, 0x627, 0x6a9, 0x62a, 0x648, 0x628, 0x631, 0x3b, 0x646, 0x648, 0x645, 0x628, 0x631, 0x3b, -0x62f, 0x633, 0x645, 0x628, 0x631, 0x3b, 0x59, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x76, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, -0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x49, 0x79, 0x6e, 0x3b, 0x49, 0x79, 0x6c, 0x3b, 0x41, 0x76, 0x67, 0x3b, 0x53, 0x65, -0x6e, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x79, 0x3b, 0x44, 0x65, 0x6b, 0x3b, 0x59, 0x61, 0x6e, 0x76, 0x61, 0x72, -0x3b, 0x46, 0x65, 0x76, 0x72, 0x61, 0x6c, 0x3b, 0x4d, 0x61, 0x72, 0x74, 0x3b, 0x41, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x4d, -0x61, 0x79, 0x3b, 0x49, 0x79, 0x75, 0x6e, 0x3b, 0x49, 0x79, 0x75, 0x6c, 0x3b, 0x41, 0x76, 0x67, 0x75, 0x73, 0x74, 0x3b, -0x53, 0x65, 0x6e, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x4e, 0x6f, 0x79, 0x61, 0x62, -0x72, 0x3b, 0x44, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, 0x59, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x49, -0x3b, 0x49, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x79, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x76, -0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x69, 0x79, 0x6e, 0x3b, 0x69, 0x79, 0x6c, -0x3b, 0x61, 0x76, 0x67, 0x3b, 0x73, 0x65, 0x6e, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x79, 0x3b, 0x64, 0x65, 0x6b, -0x3b, 0x79, 0x61, 0x6e, 0x76, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x76, 0x72, 0x61, 0x6c, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, -0x61, 0x70, 0x72, 0x65, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x69, 0x79, 0x75, 0x6e, 0x3b, 0x69, 0x79, 0x75, 0x6c, 0x3b, -0x61, 0x76, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x62, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x61, 0x62, -0x72, 0x3b, 0x6e, 0x6f, 0x79, 0x61, 0x62, 0x72, 0x3b, 0x64, 0x65, 0x6b, 0x61, 0x62, 0x72, 0x3b, 0x62c, 0x646, 0x648, 0x3b, -0x641, 0x628, 0x631, 0x3b, 0x645, 0x627, 0x631, 0x3b, 0x627, 0x67e, 0x631, 0x3b, 0x645, 0x6cc, 0x3b, 0x62c, 0x648, 0x646, 0x3b, 0x62c, -0x648, 0x644, 0x3b, 0x627, 0x6af, 0x633, 0x3b, 0x633, 0x67e, 0x62a, 0x3b, 0x627, 0x6a9, 0x62a, 0x3b, 0x646, 0x648, 0x645, 0x3b, 0x62f, -0x633, 0x645, 0x3b, 0x44f, 0x43d, 0x432, 0x3b, 0x444, 0x435, 0x432, 0x3b, 0x43c, 0x430, 0x440, 0x3b, 0x430, 0x43f, 0x440, 0x3b, 0x43c, -0x430, 0x439, 0x3b, 0x438, 0x44e, 0x43d, 0x3b, 0x438, 0x44e, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, 0x435, 0x43d, 0x3b, 0x43e, -0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x44f, 0x3b, 0x434, 0x435, 0x43a, 0x3b, 0x44f, 0x43d, 0x432, 0x430, 0x440, 0x3b, 0x444, 0x435, 0x432, -0x440, 0x430, 0x43b, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x435, 0x43b, 0x3b, 0x43c, 0x430, 0x439, 0x3b, 0x438, -0x44e, 0x43d, 0x3b, 0x438, 0x44e, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x443, 0x441, 0x442, 0x3b, 0x441, 0x435, 0x43d, 0x442, 0x44f, 0x431, -0x440, 0x3b, 0x43e, 0x43a, 0x442, 0x44f, 0x431, 0x440, 0x3b, 0x43d, 0x43e, 0x44f, 0x431, 0x440, 0x3b, 0x434, 0x435, 0x43a, 0x430, 0x431, -0x440, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x31, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x32, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x33, 0x3b, -0x54, 0x68, 0x67, 0x20, 0x34, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x35, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x36, 0x3b, 0x54, 0x68, -0x67, 0x20, 0x37, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x38, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x39, 0x3b, 0x54, 0x68, 0x67, 0x20, -0x31, 0x30, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x31, 0x31, 0x3b, 0x54, 0x68, 0x67, 0x20, 0x31, 0x32, 0x3b, 0x54, 0x68, 0xe1, -0x6e, 0x67, 0x20, 0x31, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x32, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x33, -0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x34, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x35, 0x3b, 0x54, 0x68, 0xe1, -0x6e, 0x67, 0x20, 0x36, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x37, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x38, -0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x39, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x30, 0x3b, 0x54, 0x68, -0xe1, 0x6e, 0x67, 0x20, 0x31, 0x31, 0x3b, 0x54, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x32, 0x3b, 0x74, 0x68, 0x67, 0x20, -0x31, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x32, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x33, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x34, 0x3b, -0x74, 0x68, 0x67, 0x20, 0x35, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x36, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x37, 0x3b, 0x74, 0x68, -0x67, 0x20, 0x38, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x39, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x31, 0x30, 0x3b, 0x74, 0x68, 0x67, -0x20, 0x31, 0x31, 0x3b, 0x74, 0x68, 0x67, 0x20, 0x31, 0x32, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x3b, 0x74, -0x68, 0xe1, 0x6e, 0x67, 0x20, 0x32, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x33, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, -0x20, 0x34, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x35, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x36, 0x3b, 0x74, -0x68, 0xe1, 0x6e, 0x67, 0x20, 0x37, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x38, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, -0x20, 0x39, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x30, 0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x31, -0x3b, 0x74, 0x68, 0xe1, 0x6e, 0x67, 0x20, 0x31, 0x32, 0x3b, 0x79, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0xe4, -0x7a, 0x3b, 0x70, 0x72, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x79, 0x75, 0x6e, 0x3b, 0x79, 0x75, 0x6c, 0x3b, 0x67, 0x73, -0x74, 0x3b, 0x73, 0x65, 0x74, 0x3b, 0x74, 0x6f, 0x62, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x6b, 0x3b, 0x79, 0x61, -0x6e, 0x75, 0x6c, 0x3b, 0x66, 0x65, 0x62, 0x75, 0x6c, 0x3b, 0x6d, 0xe4, 0x7a, 0x75, 0x6c, 0x3b, 0x70, 0x72, 0x69, 0x6c, -0x75, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x75, 0x6c, 0x3b, 0x79, 0x75, 0x6e, 0x75, 0x6c, 0x3b, 0x79, 0x75, 0x6c, 0x75, 0x6c, -0x3b, 0x67, 0x75, 0x73, 0x74, 0x75, 0x6c, 0x3b, 0x73, 0x65, 0x74, 0x75, 0x6c, 0x3b, 0x74, 0x6f, 0x62, 0x75, 0x6c, 0x3b, -0x6e, 0x6f, 0x76, 0x75, 0x6c, 0x3b, 0x64, 0x65, 0x6b, 0x75, 0x6c, 0x3b, 0x59, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x50, 0x3b, -0x4d, 0x3b, 0x59, 0x3b, 0x59, 0x3b, 0x47, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x79, 0x61, 0x6e, 0x3b, -0x66, 0x65, 0x62, 0x3b, 0x6d, 0xe4, 0x7a, 0x3b, 0x70, 0x72, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x79, 0x75, 0x6e, 0x3b, -0x79, 0x75, 0x6c, 0x3b, 0x67, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x74, 0x3b, 0x74, 0x6f, 0x6e, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, -0x64, 0x65, 0x6b, 0x3b, 0x49, 0x6f, 0x6e, 0x3b, 0x43, 0x68, 0x77, 0x3b, 0x4d, 0x61, 0x77, 0x3b, 0x45, 0x62, 0x72, 0x3b, -0x4d, 0x61, 0x69, 0x3b, 0x4d, 0x65, 0x68, 0x3b, 0x47, 0x6f, 0x72, 0x3b, 0x41, 0x77, 0x73, 0x74, 0x3b, 0x4d, 0x65, 0x64, -0x69, 0x3b, 0x48, 0x79, 0x64, 0x3b, 0x54, 0x61, 0x63, 0x68, 0x3b, 0x52, 0x68, 0x61, 0x67, 0x3b, 0x49, 0x6f, 0x6e, 0x61, -0x77, 0x72, 0x3b, 0x43, 0x68, 0x77, 0x65, 0x66, 0x72, 0x6f, 0x72, 0x3b, 0x4d, 0x61, 0x77, 0x72, 0x74, 0x68, 0x3b, 0x45, -0x62, 0x72, 0x69, 0x6c, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4d, 0x65, 0x68, 0x65, 0x66, 0x69, 0x6e, 0x3b, 0x47, 0x6f, -0x72, 0x66, 0x66, 0x65, 0x6e, 0x6e, 0x61, 0x66, 0x3b, 0x41, 0x77, 0x73, 0x74, 0x3b, 0x4d, 0x65, 0x64, 0x69, 0x3b, 0x48, -0x79, 0x64, 0x72, 0x65, 0x66, 0x3b, 0x54, 0x61, 0x63, 0x68, 0x77, 0x65, 0x64, 0x64, 0x3b, 0x52, 0x68, 0x61, 0x67, 0x66, -0x79, 0x72, 0x3b, 0x49, 0x3b, 0x43, 0x68, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, 0x41, 0x3b, -0x4d, 0x3b, 0x48, 0x3b, 0x54, 0x3b, 0x52, 0x68, 0x3b, 0x49, 0x6f, 0x6e, 0x3b, 0x43, 0x68, 0x77, 0x65, 0x66, 0x3b, 0x4d, -0x61, 0x77, 0x3b, 0x45, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4d, 0x65, 0x68, 0x3b, 0x47, 0x6f, 0x72, 0x66, 0x66, -0x3b, 0x41, 0x77, 0x73, 0x74, 0x3b, 0x4d, 0x65, 0x64, 0x69, 0x3b, 0x48, 0x79, 0x64, 0x3b, 0x54, 0x61, 0x63, 0x68, 0x3b, -0x52, 0x68, 0x61, 0x67, 0x3b, 0x53, 0x61, 0x6d, 0x3b, 0x46, 0x65, 0x77, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x77, 0x72, -0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x53, 0x75, 0x77, 0x3b, 0x53, 0x75, 0x6c, 0x3b, 0x55, 0x74, 0x3b, 0x53, 0xe0, 0x74, 0x3b, -0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x77, 0x3b, 0x44, 0x65, 0x73, 0x3b, 0x53, 0x61, 0x6d, 0x77, 0x69, 0x79, 0x65, 0x65, -0x3b, 0x46, 0x65, 0x77, 0x72, 0x69, 0x79, 0x65, 0x65, 0x3b, 0x4d, 0x61, 0x72, 0x73, 0x3b, 0x41, 0x77, 0x72, 0x69, 0x6c, -0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x53, 0x75, 0x77, 0x65, 0x3b, 0x53, 0x75, 0x6c, 0x65, 0x74, 0x3b, 0x55, 0x74, 0x3b, 0x53, -0xe0, 0x74, 0x74, 0x75, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x4e, 0x6f, -0x77, 0xe0, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x44, 0x65, 0x73, 0xe0, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, -0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x74, 0x3b, 0x45, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x79, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, -0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x61, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, -0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x79, 0x75, 0x77, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x77, -0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x74, 0x73, 0x68, 0x69, 0x3b, 0x45, 0x70, 0x72, 0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x65, -0x79, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x79, 0x69, 0x3b, 0x41, 0x67, 0x61, 0x73, 0x74, -0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x68, 0x6f, 0x62, 0x61, 0x3b, 0x4e, -0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x5d9, 0x5d0, 0x5b7, 0x5e0, 0x3b, -0x5e4, 0x5bf, 0x5e2, 0x5d1, 0x3b, 0x5de, 0x5e2, 0x5e8, 0x5e5, 0x3b, 0x5d0, 0x5b7, 0x5e4, 0x5bc, 0x5e8, 0x3b, 0x5de, 0x5d9, 0x5d9, 0x3b, -0x5d9, 0x5d5, 0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dc, 0x5d9, 0x3b, 0x5d0, 0x5d5, 0x5d9, 0x5d2, 0x3b, 0x5e1, 0x5e2, 0x5e4, 0x5bc, 0x3b, -0x5d0, 0x5e7, 0x5d8, 0x3b, 0x5e0, 0x5d0, 0x5d5, 0x5d5, 0x3b, 0x5d3, 0x5e2, 0x5e6, 0x3b, 0x5d9, 0x5d0, 0x5b7, 0x5e0, 0x5d5, 0x5d0, 0x5b7, -0x5e8, 0x3b, 0x5e4, 0x5bf, 0x5e2, 0x5d1, 0x5e8, 0x5d5, 0x5d0, 0x5b7, 0x5e8, 0x3b, 0x5de, 0x5e2, 0x5e8, 0x5e5, 0x3b, 0x5d0, 0x5b7, 0x5e4, -0x5bc, 0x5e8, 0x5d9, 0x5dc, 0x3b, 0x5de, 0x5d9, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5e0, 0x5d9, 0x3b, 0x5d9, 0x5d5, 0x5dc, 0x5d9, 0x3b, 0x5d0, -0x5d5, 0x5d9, 0x5d2, 0x5d5, 0x5e1, 0x5d8, 0x3b, 0x5e1, 0x5e2, 0x5e4, 0x5bc, 0x5d8, 0x5e2, 0x5de, 0x5d1, 0x5e2, 0x5e8, 0x3b, 0x5d0, 0x5e7, -0x5d8, 0x5d0, 0x5d1, 0x5e2, 0x5e8, 0x3b, 0x5e0, 0x5d0, 0x5d5, 0x5d5, 0x5e2, 0x5de, 0x5d1, 0x5e2, 0x5e8, 0x3b, 0x5d3, 0x5e2, 0x5e6, 0x5e2, -0x5de, 0x5d1, 0x5e2, 0x5e8, 0x3b, 0x1e62, 0x1eb9, 0x301, 0x3b, 0xc8, 0x72, 0x3b, 0x1eb8, 0x72, 0x3b, 0xcc, 0x67, 0x3b, 0x1eb8, 0x300, -0x62, 0x3b, 0xd2, 0x6b, 0x3b, 0x41, 0x67, 0x3b, 0xd2, 0x67, 0x3b, 0x4f, 0x77, 0x3b, 0x1ecc, 0x300, 0x77, 0x3b, 0x42, 0xe9, -0x3b, 0x1ecc, 0x300, 0x70, 0x3b, 0x1e62, 0x1eb9, 0x301, 0x72, 0x1eb9, 0x301, 0x3b, 0xc8, 0x72, 0xe8, 0x6c, 0xe8, 0x3b, 0x1eb8, 0x72, -0x1eb9, 0x300, 0x6e, 0xe0, 0x3b, 0xcc, 0x67, 0x62, 0xe9, 0x3b, 0x1eb8, 0x300, 0x62, 0x69, 0x62, 0x69, 0x3b, 0xd2, 0x6b, 0xfa, -0x64, 0x75, 0x3b, 0x41, 0x67, 0x1eb9, 0x6d, 0x1ecd, 0x3b, 0xd2, 0x67, 0xfa, 0x6e, 0x3b, 0x4f, 0x77, 0x65, 0x77, 0x65, 0x3b, -0x1ecc, 0x300, 0x77, 0xe0, 0x72, 0xe0, 0x3b, 0x42, 0xe9, 0x6c, 0xfa, 0x3b, 0x1ecc, 0x300, 0x70, 0x1eb9, 0x300, 0x3b, 0x53, 0x3b, -0xc8, 0x3b, 0x1eb8, 0x3b, 0xcc, 0x3b, 0x1eb8, 0x300, 0x3b, 0xd2, 0x3b, 0x41, 0x3b, 0xd2, 0x3b, 0x4f, 0x3b, 0x1ecc, 0x300, 0x3b, -0x42, 0x3b, 0x1ecc, 0x300, 0x3b, 0x1e62, 0x1eb9, 0x301, 0x72, 0x3b, 0xc8, 0x72, 0xe8, 0x6c, 0x3b, 0x1eb8, 0x72, 0x1eb9, 0x300, 0x6e, -0x3b, 0xcc, 0x67, 0x62, 0x3b, 0x1eb8, 0x300, 0x62, 0x69, 0x3b, 0xd2, 0x6b, 0xfa, 0x3b, 0x41, 0x67, 0x1eb9, 0x3b, 0xd2, 0x67, -0xfa, 0x3b, 0x4f, 0x77, 0x65, 0x3b, 0x1ecc, 0x300, 0x77, 0xe0, 0x3b, 0x42, 0xe9, 0x6c, 0x3b, 0x1ecc, 0x300, 0x70, 0x1eb9, 0x3b, -0x4f, 0x1e63, 0xf9, 0x20, 0x1e62, 0x1eb9, 0x301, 0x72, 0x1eb9, 0x301, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xc8, 0x72, 0xe8, 0x6c, 0xe8, -0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1eb8, 0x72, 0x1eb9, 0x300, 0x6e, 0xe0, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xcc, 0x67, 0x62, 0xe9, -0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1eb8, 0x300, 0x62, 0x69, 0x62, 0x69, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xd2, 0x6b, 0xfa, 0x64, -0x75, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x41, 0x67, 0x1eb9, 0x6d, 0x1ecd, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0xd2, 0x67, 0xfa, 0x6e, -0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x4f, 0x77, 0x65, 0x77, 0x65, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1ecc, 0x300, 0x77, 0xe0, 0x72, -0xe0, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x42, 0xe9, 0x6c, 0xfa, 0x3b, 0x4f, 0x1e63, 0xf9, 0x20, 0x1ecc, 0x300, 0x70, 0x1eb9, 0x300, -0x3b, 0x53, 0x68, 0x25b, 0x301, 0x3b, 0xc8, 0x72, 0x3b, 0x190, 0x72, 0x3b, 0xcc, 0x67, 0x3b, 0x190, 0x300, 0x62, 0x3b, 0xd2, -0x6b, 0x3b, 0x41, 0x67, 0x3b, 0xd2, 0x67, 0x3b, 0x4f, 0x77, 0x3b, 0x186, 0x300, 0x77, 0x3b, 0x42, 0xe9, 0x3b, 0x186, 0x300, -0x70, 0x3b, 0x53, 0x68, 0x25b, 0x301, 0x72, 0x25b, 0x301, 0x3b, 0xc8, 0x72, 0xe8, 0x6c, 0xe8, 0x3b, 0x190, 0x72, 0x25b, 0x300, -0x6e, 0xe0, 0x3b, 0xcc, 0x67, 0x62, 0xe9, 0x3b, 0x190, 0x300, 0x62, 0x69, 0x62, 0x69, 0x3b, 0xd2, 0x6b, 0xfa, 0x64, 0x75, -0x3b, 0x41, 0x67, 0x25b, 0x6d, 0x254, 0x3b, 0xd2, 0x67, 0xfa, 0x6e, 0x3b, 0x4f, 0x77, 0x65, 0x77, 0x65, 0x3b, 0x186, 0x300, -0x77, 0xe0, 0x72, 0xe0, 0x3b, 0x42, 0xe9, 0x6c, 0xfa, 0x3b, 0x186, 0x300, 0x70, 0x25b, 0x300, 0x3b, 0x53, 0x3b, 0xc8, 0x3b, -0x190, 0x3b, 0xcc, 0x3b, 0x190, 0x300, 0x3b, 0xd2, 0x3b, 0x41, 0x3b, 0xd2, 0x3b, 0x4f, 0x3b, 0x186, 0x300, 0x3b, 0x42, 0x3b, -0x186, 0x300, 0x3b, 0x53, 0x68, 0x25b, 0x301, 0x72, 0x3b, 0xc8, 0x72, 0xe8, 0x6c, 0x3b, 0x190, 0x72, 0x25b, 0x300, 0x6e, 0x3b, -0xcc, 0x67, 0x62, 0x3b, 0x190, 0x300, 0x62, 0x69, 0x3b, 0xd2, 0x6b, 0xfa, 0x3b, 0x41, 0x67, 0x25b, 0x3b, 0xd2, 0x67, 0xfa, -0x3b, 0x4f, 0x77, 0x65, 0x3b, 0x186, 0x300, 0x77, 0xe0, 0x3b, 0x42, 0xe9, 0x6c, 0x3b, 0x186, 0x300, 0x70, 0x25b, 0x3b, 0x4f, -0x73, 0x68, 0xf9, 0x20, 0x53, 0x68, 0x25b, 0x301, 0x72, 0x25b, 0x301, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0xc8, 0x72, 0xe8, -0x6c, 0xe8, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x190, 0x72, 0x25b, 0x300, 0x6e, 0xe0, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, -0xcc, 0x67, 0x62, 0xe9, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x190, 0x300, 0x62, 0x69, 0x62, 0x69, 0x3b, 0x4f, 0x73, 0x68, -0xf9, 0x20, 0xd2, 0x6b, 0xfa, 0x64, 0x75, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x41, 0x67, 0x25b, 0x6d, 0x254, 0x3b, 0x4f, -0x73, 0x68, 0xf9, 0x20, 0xd2, 0x67, 0xfa, 0x6e, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x4f, 0x77, 0x65, 0x77, 0x65, 0x3b, -0x4f, 0x73, 0x68, 0xf9, 0x20, 0x186, 0x300, 0x77, 0xe0, 0x72, 0xe0, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x42, 0xe9, 0x6c, -0xfa, 0x3b, 0x4f, 0x73, 0x68, 0xf9, 0x20, 0x186, 0x300, 0x70, 0x25b, 0x300, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, -0x3b, 0x4d, 0x61, 0x73, 0x3b, 0x45, 0x70, 0x68, 0x3b, 0x4d, 0x65, 0x79, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, -0x3b, 0x41, 0x67, 0x61, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x73, -0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x77, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x77, 0x61, 0x72, 0x69, 0x3b, -0x4d, 0x61, 0x73, 0x68, 0x69, 0x3b, 0x45, 0x70, 0x68, 0x72, 0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x65, 0x79, 0x69, 0x3b, 0x4a, -0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x79, 0x69, 0x3b, 0x41, 0x67, 0x61, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, -0x70, 0x74, 0x68, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x68, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, -0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, -0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, -0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x69, 0x3b, -0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, -0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x76, 0x2e, 0x3b, 0x64, 0x65, 0x73, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, -0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, -0x75, 0x6c, 0x3b, 0x61, 0x75, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, -0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, -0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x6a, 0x75, -0x6c, 0x69, 0x3b, 0x61, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, -0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x64, 0x65, 0x63, -0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x458, 0x430, 0x43d, 0x3b, 0x444, 0x435, 0x431, 0x3b, 0x43c, 0x430, 0x440, 0x3b, 0x430, 0x43f, -0x440, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x3b, 0x458, 0x443, 0x43b, 0x3b, 0x430, 0x443, 0x433, 0x3b, 0x441, 0x435, -0x43f, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x432, 0x3b, 0x434, 0x435, 0x446, 0x3b, 0x458, 0x430, 0x43d, 0x443, 0x430, 0x440, -0x3b, 0x444, 0x435, 0x431, 0x440, 0x443, 0x430, 0x440, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x438, 0x43b, 0x3b, -0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x438, 0x3b, 0x458, 0x443, 0x43b, 0x438, 0x3b, 0x430, 0x443, 0x433, 0x443, 0x441, 0x442, -0x3b, 0x441, 0x435, 0x43f, 0x442, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x43e, 0x43a, 0x442, 0x43e, 0x431, 0x430, 0x440, 0x3b, 0x43d, -0x43e, 0x432, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x434, 0x435, 0x446, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x4a, 0x2d, 0x67, -0x75, 0x65, 0x72, 0x3b, 0x54, 0x2d, 0x61, 0x72, 0x72, 0x65, 0x65, 0x3b, 0x4d, 0x61, 0x79, 0x72, 0x6e, 0x74, 0x3b, 0x41, -0x76, 0x72, 0x72, 0x69, 0x6c, 0x3b, 0x42, 0x6f, 0x61, 0x6c, 0x64, 0x79, 0x6e, 0x3b, 0x4d, 0x2d, 0x73, 0x6f, 0x75, 0x72, -0x65, 0x65, 0x3b, 0x4a, 0x2d, 0x73, 0x6f, 0x75, 0x72, 0x65, 0x65, 0x3b, 0x4c, 0x75, 0x61, 0x6e, 0x69, 0x73, 0x74, 0x79, -0x6e, 0x3b, 0x4d, 0x2d, 0x66, 0x6f, 0x75, 0x79, 0x69, 0x72, 0x3b, 0x4a, 0x2d, 0x66, 0x6f, 0x75, 0x79, 0x69, 0x72, 0x3b, -0x4d, 0x2d, 0x48, 0x6f, 0x75, 0x6e, 0x65, 0x79, 0x3b, 0x4d, 0x2d, 0x4e, 0x6f, 0x6c, 0x6c, 0x69, 0x63, 0x6b, 0x3b, 0x4a, -0x65, 0x72, 0x72, 0x65, 0x79, 0x2d, 0x67, 0x65, 0x75, 0x72, 0x65, 0x65, 0x3b, 0x54, 0x6f, 0x73, 0x68, 0x69, 0x61, 0x67, -0x68, 0x74, 0x2d, 0x61, 0x72, 0x72, 0x65, 0x65, 0x3b, 0x4d, 0x61, 0x79, 0x72, 0x6e, 0x74, 0x3b, 0x41, 0x76, 0x65, 0x72, -0x69, 0x6c, 0x3b, 0x42, 0x6f, 0x61, 0x6c, 0x64, 0x79, 0x6e, 0x3b, 0x4d, 0x65, 0x61, 0x6e, 0x2d, 0x73, 0x6f, 0x75, 0x72, -0x65, 0x65, 0x3b, 0x4a, 0x65, 0x72, 0x72, 0x65, 0x79, 0x2d, 0x73, 0x6f, 0x75, 0x72, 0x65, 0x65, 0x3b, 0x4c, 0x75, 0x61, -0x6e, 0x69, 0x73, 0x74, 0x79, 0x6e, 0x3b, 0x4d, 0x65, 0x61, 0x6e, 0x2d, 0x66, 0x6f, 0x75, 0x79, 0x69, 0x72, 0x3b, 0x4a, -0x65, 0x72, 0x72, 0x65, 0x79, 0x2d, 0x66, 0x6f, 0x75, 0x79, 0x69, 0x72, 0x3b, 0x4d, 0x65, 0x65, 0x20, 0x48, 0x6f, 0x75, -0x6e, 0x65, 0x79, 0x3b, 0x4d, 0x65, 0x65, 0x20, 0x6e, 0x79, 0x20, 0x4e, 0x6f, 0x6c, 0x6c, 0x69, 0x63, 0x6b, 0x3b, 0x47, -0x65, 0x6e, 0x3b, 0x48, 0x77, 0x65, 0x3b, 0x4d, 0x65, 0x75, 0x3b, 0x45, 0x62, 0x72, 0x3b, 0x4d, 0x65, 0x3b, 0x4d, 0x65, -0x74, 0x3b, 0x47, 0x6f, 0x72, 0x3b, 0x45, 0x73, 0x74, 0x3b, 0x47, 0x77, 0x6e, 0x3b, 0x48, 0x65, 0x64, 0x3b, 0x44, 0x75, -0x3b, 0x4b, 0x65, 0x76, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x47, 0x65, 0x6e, 0x76, 0x65, 0x72, 0x3b, 0x6d, 0x69, 0x73, 0x20, -0x48, 0x77, 0x65, 0x76, 0x72, 0x65, 0x72, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x4d, 0x65, 0x75, 0x72, 0x74, 0x68, 0x3b, 0x6d, -0x69, 0x73, 0x20, 0x45, 0x62, 0x72, 0x65, 0x6c, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x4d, 0x65, 0x3b, 0x6d, 0x69, 0x73, 0x20, -0x4d, 0x65, 0x74, 0x68, 0x65, 0x76, 0x65, 0x6e, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x47, 0x6f, 0x72, 0x74, 0x68, 0x65, 0x72, -0x65, 0x6e, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x45, 0x73, 0x74, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x47, 0x77, 0x79, 0x6e, 0x6e, -0x67, 0x61, 0x6c, 0x61, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x48, 0x65, 0x64, 0x72, 0x61, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x44, -0x75, 0x3b, 0x6d, 0x69, 0x73, 0x20, 0x4b, 0x65, 0x76, 0x61, 0x72, 0x64, 0x68, 0x75, 0x3b, 0x53, 0x2d, 0x186, 0x3b, 0x4b, -0x2d, 0x186, 0x3b, 0x45, 0x2d, 0x186, 0x3b, 0x45, 0x2d, 0x4f, 0x3b, 0x45, 0x2d, 0x4b, 0x3b, 0x4f, 0x2d, 0x41, 0x3b, 0x41, -0x2d, 0x4b, 0x3b, 0x44, 0x2d, 0x186, 0x3b, 0x46, 0x2d, 0x190, 0x3b, 0x186, 0x2d, 0x41, 0x3b, 0x186, 0x2d, 0x4f, 0x3b, 0x4d, -0x2d, 0x186, 0x3b, 0x53, 0x61, 0x6e, 0x64, 0x61, 0x2d, 0x186, 0x70, 0x25b, 0x70, 0x254, 0x6e, 0x3b, 0x4b, 0x77, 0x61, 0x6b, -0x77, 0x61, 0x72, 0x2d, 0x186, 0x67, 0x79, 0x65, 0x66, 0x75, 0x6f, 0x3b, 0x45, 0x62, 0x254, 0x77, 0x2d, 0x186, 0x62, 0x65, -0x6e, 0x65, 0x6d, 0x3b, 0x45, 0x62, 0x254, 0x62, 0x69, 0x72, 0x61, 0x2d, 0x4f, 0x66, 0x6f, 0x72, 0x69, 0x73, 0x75, 0x6f, -0x3b, 0x45, 0x73, 0x75, 0x73, 0x6f, 0x77, 0x20, 0x41, 0x6b, 0x65, 0x74, 0x73, 0x65, 0x61, 0x62, 0x61, 0x2d, 0x4b, 0x254, -0x74, 0x254, 0x6e, 0x69, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x62, 0x69, 0x72, 0x61, 0x64, 0x65, 0x2d, 0x41, 0x79, 0x25b, 0x77, -0x6f, 0x68, 0x6f, 0x6d, 0x75, 0x6d, 0x75, 0x3b, 0x41, 0x79, 0x25b, 0x77, 0x6f, 0x68, 0x6f, 0x2d, 0x4b, 0x69, 0x74, 0x61, -0x77, 0x6f, 0x6e, 0x73, 0x61, 0x3b, 0x44, 0x69, 0x66, 0x75, 0x75, 0x2d, 0x186, 0x73, 0x61, 0x6e, 0x64, 0x61, 0x61, 0x3b, -0x46, 0x61, 0x6e, 0x6b, 0x77, 0x61, 0x2d, 0x190, 0x62, 0x254, 0x3b, 0x186, 0x62, 0x25b, 0x73, 0x25b, 0x2d, 0x41, 0x68, 0x69, -0x6e, 0x69, 0x6d, 0x65, 0x3b, 0x186, 0x62, 0x65, 0x72, 0x25b, 0x66, 0x25b, 0x77, 0x2d, 0x4f, 0x62, 0x75, 0x62, 0x75, 0x6f, -0x3b, 0x4d, 0x75, 0x6d, 0x75, 0x2d, 0x186, 0x70, 0x25b, 0x6e, 0x69, 0x6d, 0x62, 0x61, 0x3b, 0x91c, 0x93e, 0x928, 0x947, 0x3b, -0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x90f, 0x92a, 0x94d, 0x930, 0x940, 0x3b, 0x92e, -0x947, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x3b, 0x911, 0x917, 0x3b, 0x938, 0x92a, 0x94d, 0x91f, 0x947, 0x902, 0x3b, -0x911, 0x915, 0x94d, 0x91f, 0x94b, 0x3b, 0x928, 0x94b, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x3b, 0x91c, 0x93e, 0x928, 0x947, 0x935, 0x93e, -0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, -0x90f, 0x92a, 0x94d, 0x930, 0x93f, 0x932, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x92f, 0x3b, 0x911, -0x917, 0x938, 0x94d, 0x91f, 0x3b, 0x938, 0x92a, 0x94d, 0x91f, 0x947, 0x902, 0x92c, 0x930, 0x3b, 0x911, 0x915, 0x94d, 0x91f, 0x94b, 0x92c, -0x930, 0x3b, 0x928, 0x94b, 0x935, 0x94d, 0x939, 0x947, 0x902, 0x92c, 0x930, 0x3b, 0x921, 0x93f, 0x938, 0x947, 0x902, 0x92c, 0x930, 0x3b, -0x4a, 0x65, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x61, 0x3b, 0x45, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x65, 0x3b, -0x4a, 0x75, 0x75, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x1ecc, 0x67, 0x1ecd, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x1ecc, 0x6b, 0x74, 0x3b, -0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0x65, 0x6e, 0x1ee5, 0x77, 0x61, 0x72, 0x1ecb, 0x3b, 0x46, 0x65, 0x62, -0x72, 0x1ee5, 0x77, 0x61, 0x72, 0x1ecb, 0x3b, 0x4d, 0x61, 0x61, 0x63, 0x68, 0x1ecb, 0x3b, 0x45, 0x70, 0x72, 0x65, 0x65, 0x6c, -0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x4a, 0x75, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x1ecb, 0x3b, 0x1ecc, 0x67, 0x1ecd, 0x1ecd, -0x73, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x1ecc, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, -0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, -0x3b, 0x45, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x1ecc, 0x3b, 0x53, 0x3b, 0x1ecc, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4d, -0x62, 0x65, 0x3b, 0x4b, 0x65, 0x6c, 0x3b, 0x4b, 0x74, 0x169, 0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x4b, 0x74, 0x6e, 0x3b, 0x54, -0x68, 0x61, 0x3b, 0x4d, 0x6f, 0x6f, 0x3b, 0x4e, 0x79, 0x61, 0x3b, 0x4b, 0x6e, 0x64, 0x3b, 0x128, 0x6b, 0x75, 0x3b, 0x128, -0x6b, 0x6d, 0x3b, 0x128, 0x6b, 0x6c, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6d, 0x62, 0x65, 0x65, 0x3b, -0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x65, 0x6c, 0x129, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, -0x20, 0x6b, 0x61, 0x74, 0x61, 0x74, 0x169, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, -0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, 0x77, 0x61, 0x69, -0x20, 0x77, 0x61, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x74, 0x68, 0x61, 0x74, 0x169, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, -0x61, 0x20, 0x6d, 0x75, 0x6f, 0x6e, 0x7a, 0x61, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6e, 0x79, 0x61, -0x61, 0x6e, 0x79, 0x61, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x65, 0x6e, 0x64, 0x61, 0x3b, 0x4d, -0x77, 0x61, 0x69, 0x20, 0x77, 0x61, 0x20, 0x129, 0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, 0x77, 0x61, -0x20, 0x129, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x129, 0x6d, 0x77, 0x65, 0x3b, 0x4d, 0x77, 0x61, 0x69, 0x20, -0x77, 0x61, 0x20, 0x129, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x69, 0x6c, 0x129, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, -0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x4b, 0x3b, 0x128, 0x3b, 0x128, 0x3b, 0x128, 0x3b, -0x5a, 0x65, 0x6e, 0x3b, 0x46, 0x65, 0x76, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x76, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, -0x4a, 0x75, 0x67, 0x3b, 0x4c, 0x75, 0x69, 0x3b, 0x41, 0x76, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x74, 0x75, 0x3b, -0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x63, 0x3b, 0x5a, 0x65, 0x6e, 0xe2, 0x72, 0x3b, 0x46, 0x65, 0x76, 0x72, 0xe2, 0x72, -0x3b, 0x4d, 0x61, 0x72, 0xe7, 0x3b, 0x41, 0x76, 0x72, 0xee, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x67, 0x6e, -0x3b, 0x4c, 0x75, 0x69, 0x3b, 0x41, 0x76, 0x6f, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, -0x4f, 0x74, 0x75, 0x62, 0x61, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x44, 0x69, 0x63, 0x65, -0x6d, 0x62, 0x61, 0x72, 0x3b, 0x5a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4c, 0x3b, 0x41, -0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x64, 0x7a, 0x76, 0x3b, 0x64, 0x7a, 0x64, 0x3b, 0x74, 0x65, 0x64, -0x3b, 0x61, 0x66, 0x254, 0x3b, 0x64, 0x61, 0x6d, 0x3b, 0x6d, 0x61, 0x73, 0x3b, 0x73, 0x69, 0x61, 0x3b, 0x64, 0x65, 0x61, -0x3b, 0x61, 0x6e, 0x79, 0x3b, 0x6b, 0x65, 0x6c, 0x3b, 0x61, 0x64, 0x65, 0x3b, 0x64, 0x7a, 0x6d, 0x3b, 0x64, 0x7a, 0x6f, -0x76, 0x65, 0x3b, 0x64, 0x7a, 0x6f, 0x64, 0x7a, 0x65, 0x3b, 0x74, 0x65, 0x64, 0x6f, 0x78, 0x65, 0x3b, 0x61, 0x66, 0x254, -0x66, 0x129, 0x65, 0x3b, 0x64, 0x61, 0x6d, 0x61, 0x3b, 0x6d, 0x61, 0x73, 0x61, 0x3b, 0x73, 0x69, 0x61, 0x6d, 0x6c, 0x254, -0x6d, 0x3b, 0x64, 0x65, 0x61, 0x73, 0x69, 0x61, 0x6d, 0x69, 0x6d, 0x65, 0x3b, 0x61, 0x6e, 0x79, 0x254, 0x6e, 0x79, 0x254, -0x3b, 0x6b, 0x65, 0x6c, 0x65, 0x3b, 0x61, 0x64, 0x65, 0x25b, 0x6d, 0x65, 0x6b, 0x70, 0x254, 0x78, 0x65, 0x3b, 0x64, 0x7a, -0x6f, 0x6d, 0x65, 0x3b, 0x64, 0x3b, 0x64, 0x3b, 0x74, 0x3b, 0x61, 0x3b, 0x64, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x64, 0x3b, -0x61, 0x3b, 0x6b, 0x3b, 0x61, 0x3b, 0x64, 0x3b, 0x49, 0x61, 0x6e, 0x2e, 0x3b, 0x50, 0x65, 0x70, 0x2e, 0x3b, 0x4d, 0x61, -0x6c, 0x2e, 0x3b, 0x2bb, 0x41, 0x70, 0x2e, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x49, 0x75, 0x6e, 0x2e, 0x3b, 0x49, 0x75, 0x6c, -0x2e, 0x3b, 0x2bb, 0x41, 0x75, 0x2e, 0x3b, 0x4b, 0x65, 0x70, 0x2e, 0x3b, 0x2bb, 0x4f, 0x6b, 0x2e, 0x3b, 0x4e, 0x6f, 0x77, -0x2e, 0x3b, 0x4b, 0x65, 0x6b, 0x2e, 0x3b, 0x49, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x69, 0x3b, 0x50, 0x65, 0x70, 0x65, 0x6c, -0x75, 0x61, 0x6c, 0x69, 0x3b, 0x4d, 0x61, 0x6c, 0x61, 0x6b, 0x69, 0x3b, 0x2bb, 0x41, 0x70, 0x65, 0x6c, 0x69, 0x6c, 0x61, -0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x49, 0x75, 0x6e, 0x65, 0x3b, 0x49, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x2bb, 0x41, 0x75, 0x6b, -0x61, 0x6b, 0x65, 0x3b, 0x4b, 0x65, 0x70, 0x61, 0x6b, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x3b, 0x2bb, 0x4f, 0x6b, 0x61, 0x6b, -0x6f, 0x70, 0x61, 0x3b, 0x4e, 0x6f, 0x77, 0x65, 0x6d, 0x61, 0x70, 0x61, 0x3b, 0x4b, 0x65, 0x6b, 0x65, 0x6d, 0x61, 0x70, -0x61, 0x3b, 0x45, 0x6e, 0x65, 0x3b, 0x50, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, 0x4d, 0x61, -0x79, 0x3b, 0x48, 0x75, 0x6e, 0x3b, 0x48, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x6b, -0x74, 0x3b, 0x4e, 0x6f, 0x62, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x45, 0x6e, 0x65, 0x72, 0x6f, 0x3b, 0x50, 0x65, 0x62, 0x72, -0x65, 0x72, 0x6f, 0x3b, 0x4d, 0x61, 0x72, 0x73, 0x6f, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x79, 0x6f, -0x3b, 0x48, 0x75, 0x6e, 0x79, 0x6f, 0x3b, 0x48, 0x75, 0x6c, 0x79, 0x6f, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x6f, 0x3b, -0x53, 0x65, 0x74, 0x79, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x4f, 0x6b, 0x74, 0x75, 0x62, 0x72, 0x65, 0x3b, 0x4e, 0x6f, -0x62, 0x79, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x44, 0x69, 0x73, 0x79, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x45, 0x3b, -0x50, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x48, 0x75, 0x6e, 0x3b, 0x48, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, -0x53, 0x65, 0x74, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x62, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x75, -0x61, 0x72, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x4d, 0xe4, 0x72, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x69, -0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x75, -0x73, 0x63, 0x68, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x74, 0xe4, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x6f, -0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0xe4, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x7a, 0xe4, 0x6d, 0x62, 0x65, -0x72, 0x3b, 0xa2cd, 0xa1aa, 0x3b, 0xa44d, 0xa1aa, 0x3b, 0xa315, 0xa1aa, 0x3b, 0xa1d6, 0xa1aa, 0x3b, 0xa26c, 0xa1aa, 0x3b, 0xa0d8, 0xa1aa, 0x3b, -0xa3c3, 0xa1aa, 0x3b, 0xa246, 0xa1aa, 0x3b, 0xa22c, 0xa1aa, 0x3b, 0xa2b0, 0xa1aa, 0x3b, 0xa2b0, 0xa2aa, 0xa1aa, 0x3b, 0xa2b0, 0xa44b, 0xa1aa, 0x3b, -0x4a, 0x61, 0x6e, 0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, 0x4d, 0xe4, 0x72, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x2e, 0x3b, -0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x2e, 0x3b, 0x53, -0x65, 0x70, 0x2e, 0x3b, 0x4f, 0x6b, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x65, 0x7a, 0x2e, 0x3b, 0x4a, -0x61, 0x6e, 0x75, 0x61, 0x61, 0x72, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x61, 0x72, 0x3b, 0x4d, 0xe4, 0x72, 0x7a, -0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, -0x3b, 0x41, 0x75, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, -0x74, 0x6f, 0x76, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x7a, 0x65, 0x6d, -0x62, 0x65, 0x72, 0x3b, 0x6f, 0x111, 0x111, 0x6a, 0x3b, 0x67, 0x75, 0x6f, 0x76, 0x3b, 0x6e, 0x6a, 0x75, 0x6b, 0x3b, 0x63, -0x75, 0x6f, 0x3b, 0x6d, 0x69, 0x65, 0x73, 0x3b, 0x67, 0x65, 0x61, 0x73, 0x3b, 0x73, 0x75, 0x6f, 0x69, 0x3b, 0x62, 0x6f, -0x72, 0x67, 0x3b, 0x10d, 0x61, 0x6b, 0x10d, 0x3b, 0x67, 0x6f, 0x6c, 0x67, 0x3b, 0x73, 0x6b, 0xe1, 0x62, 0x3b, 0x6a, 0x75, -0x6f, 0x76, 0x3b, 0x6f, 0x111, 0x111, 0x61, 0x6a, 0x61, 0x67, 0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x67, 0x75, 0x6f, -0x76, 0x76, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x6e, 0x6a, 0x75, 0x6b, 0x10d, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, -0x3b, 0x63, 0x75, 0x6f, 0x14b, 0x6f, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x6d, 0x69, 0x65, 0x73, 0x73, 0x65, 0x6d, 0xe1, -0x6e, 0x6e, 0x75, 0x3b, 0x67, 0x65, 0x61, 0x73, 0x73, 0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x73, 0x75, 0x6f, 0x69, -0x64, 0x6e, 0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x62, 0x6f, 0x72, 0x67, 0x65, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, -0x10d, 0x61, 0x6b, 0x10d, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x67, 0x6f, 0x6c, 0x67, 0x67, 0x6f, 0x74, 0x6d, 0xe1, -0x6e, 0x6e, 0x75, 0x3b, 0x73, 0x6b, 0xe1, 0x62, 0x6d, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x6a, 0x75, 0x6f, 0x76, -0x6c, 0x61, 0x6d, 0xe1, 0x6e, 0x6e, 0x75, 0x3b, 0x4f, 0x3b, 0x47, 0x3b, 0x4e, 0x3b, 0x43, 0x3b, 0x4d, 0x3b, 0x47, 0x3b, -0x53, 0x3b, 0x42, 0x3b, 0x10c, 0x3b, 0x47, 0x3b, 0x53, 0x3b, 0x4a, 0x3b, 0x6f, 0x111, 0x111, 0x6a, 0x3b, 0x67, 0x75, 0x6f, -0x76, 0x3b, 0x6e, 0x6a, 0x75, 0x6b, 0x3b, 0x63, 0x75, 0x6f, 0x14b, 0x3b, 0x6d, 0x69, 0x65, 0x73, 0x3b, 0x67, 0x65, 0x61, -0x73, 0x3b, 0x73, 0x75, 0x6f, 0x69, 0x3b, 0x62, 0x6f, 0x72, 0x67, 0x3b, 0x10d, 0x61, 0x6b, 0x10d, 0x3b, 0x67, 0x6f, 0x6c, -0x67, 0x3b, 0x73, 0x6b, 0xe1, 0x62, 0x3b, 0x6a, 0x75, 0x6f, 0x76, 0x3b, 0x43, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, -0x4d, 0x61, 0x63, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x43, 0x75, 0x6c, 0x3b, -0x41, 0x67, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x62, 0x3b, 0x44, 0x69, 0x73, 0x3b, -0x43, 0x68, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x75, 0x72, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, -0x63, 0x68, 0x69, 0x3b, 0x41, 0x70, 0x69, 0x72, 0x69, 0x72, 0x69, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, -0x3b, 0x43, 0x68, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, -0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x69, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x62, 0x65, 0x6d, 0x62, 0x61, 0x3b, -0x44, 0x69, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x43, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, -0x43, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x49, 0x6d, 0x62, 0x3b, 0x4b, 0x61, 0x77, 0x3b, -0x4b, 0x61, 0x64, 0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x4b, 0x61, 0x73, 0x3b, 0x4b, 0x61, 0x72, 0x3b, 0x4d, 0x66, 0x75, 0x3b, -0x57, 0x75, 0x6e, 0x3b, 0x49, 0x6b, 0x65, 0x3b, 0x49, 0x6b, 0x75, 0x3b, 0x49, 0x6d, 0x77, 0x3b, 0x49, 0x77, 0x69, 0x3b, -0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x69, 0x6d, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x4d, 0x6f, 0x72, -0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x77, 0x69, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, -0x61, 0x20, 0x6b, 0x61, 0x64, 0x61, 0x64, 0x75, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x6b, -0x61, 0x6e, 0x61, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x73, 0x61, 0x6e, 0x75, -0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x72, 0x61, 0x6e, 0x64, 0x61, 0x64, 0x75, -0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x6d, 0x66, 0x75, 0x6e, 0x67, 0x61, 0x64, 0x65, 0x3b, -0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x77, 0x75, 0x6e, 0x79, 0x61, 0x6e, 0x79, 0x61, 0x3b, 0x4d, -0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x65, 0x6e, 0x64, 0x61, 0x3b, 0x4d, 0x6f, 0x72, 0x69, -0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x4d, 0x6f, 0x72, 0x69, 0x20, 0x67, 0x68, 0x77, -0x61, 0x20, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x69, 0x6d, 0x77, 0x65, 0x72, 0x69, 0x3b, 0x4d, 0x6f, -0x72, 0x69, 0x20, 0x67, 0x68, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x69, 0x77, 0x69, -0x3b, 0x49, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x57, 0x3b, 0x49, 0x3b, 0x49, -0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x73, 0x69, 0x69, 0x3b, 0x63, 0x6f, 0x6c, 0x3b, 0x6d, 0x62, 0x6f, 0x3b, 0x73, 0x65, 0x65, -0x3b, 0x64, 0x75, 0x75, 0x3b, 0x6b, 0x6f, 0x72, 0x3b, 0x6d, 0x6f, 0x72, 0x3b, 0x6a, 0x75, 0x6b, 0x3b, 0x73, 0x6c, 0x74, -0x3b, 0x79, 0x61, 0x72, 0x3b, 0x6a, 0x6f, 0x6c, 0x3b, 0x62, 0x6f, 0x77, 0x3b, 0x73, 0x69, 0x69, 0x6c, 0x6f, 0x3b, 0x63, -0x6f, 0x6c, 0x74, 0x65, 0x3b, 0x6d, 0x62, 0x6f, 0x6f, 0x79, 0x3b, 0x73, 0x65, 0x65, 0x257, 0x74, 0x6f, 0x3b, 0x64, 0x75, -0x75, 0x6a, 0x61, 0x6c, 0x3b, 0x6b, 0x6f, 0x72, 0x73, 0x65, 0x3b, 0x6d, 0x6f, 0x72, 0x73, 0x6f, 0x3b, 0x6a, 0x75, 0x6b, -0x6f, 0x3b, 0x73, 0x69, 0x69, 0x6c, 0x74, 0x6f, 0x3b, 0x79, 0x61, 0x72, 0x6b, 0x6f, 0x6d, 0x61, 0x61, 0x3b, 0x6a, 0x6f, -0x6c, 0x61, 0x6c, 0x3b, 0x62, 0x6f, 0x77, 0x74, 0x65, 0x3b, 0x73, 0x3b, 0x63, 0x3b, 0x6d, 0x3b, 0x73, 0x3b, 0x64, 0x3b, -0x6b, 0x3b, 0x6d, 0x3b, 0x6a, 0x3b, 0x73, 0x3b, 0x79, 0x3b, 0x6a, 0x3b, 0x62, 0x3b, 0x4a, 0x45, 0x4e, 0x3b, 0x57, 0x4b, -0x52, 0x3b, 0x57, 0x47, 0x54, 0x3b, 0x57, 0x4b, 0x4e, 0x3b, 0x57, 0x54, 0x4e, 0x3b, 0x57, 0x54, 0x44, 0x3b, 0x57, 0x4d, -0x4a, 0x3b, 0x57, 0x4e, 0x4e, 0x3b, 0x57, 0x4b, 0x44, 0x3b, 0x57, 0x49, 0x4b, 0x3b, 0x57, 0x4d, 0x57, 0x3b, 0x44, 0x49, -0x54, 0x3b, 0x4e, 0x6a, 0x65, 0x6e, 0x75, 0x61, 0x72, 0x129, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, -0x6b, 0x65, 0x72, 0x129, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x74, 0x169, -0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, -0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, -0x67, 0x61, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x74, 0x169, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x6d, -0x169, 0x67, 0x77, 0x61, 0x6e, 0x6a, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, -0x61, 0x6e, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x65, 0x6e, 0x64, 0x61, 0x3b, 0x4d, -0x77, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x169, 0x6d, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x65, 0x20, -0x77, 0x61, 0x20, 0x69, 0x6b, 0x169, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x169, 0x6d, 0x77, 0x65, 0x3b, 0x4e, 0x64, 0x69, -0x74, 0x68, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x4b, 0x3b, 0x47, 0x3b, 0x4b, 0x3b, 0x47, 0x3b, 0x47, 0x3b, 0x4d, -0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x44, 0x3b, 0x4f, 0x62, 0x6f, 0x3b, 0x57, 0x61, 0x61, 0x3b, 0x4f, -0x6b, 0x75, 0x3b, 0x4f, 0x6e, 0x67, 0x3b, 0x49, 0x6d, 0x65, 0x3b, 0x49, 0x6c, 0x65, 0x3b, 0x53, 0x61, 0x70, 0x3b, 0x49, -0x73, 0x69, 0x3b, 0x53, 0x61, 0x61, 0x3b, 0x54, 0x6f, 0x6d, 0x3b, 0x54, 0x6f, 0x62, 0x3b, 0x54, 0x6f, 0x77, 0x3b, 0x4c, -0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x6f, 0x62, 0x6f, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x77, -0x61, 0x61, 0x72, 0x65, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x6f, 0x6b, 0x75, 0x6e, 0x69, 0x3b, 0x4c, -0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x6f, 0x6e, 0x67, 0x2019, 0x77, 0x61, 0x6e, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, -0x6c, 0x65, 0x20, 0x69, 0x6d, 0x65, 0x74, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x69, 0x6c, 0x65, 0x3b, -0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x73, 0x61, 0x70, 0x61, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, -0x20, 0x69, 0x73, 0x69, 0x65, 0x74, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x73, 0x61, 0x61, 0x6c, 0x3b, -0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x6d, 0x6f, 0x6e, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, -0x65, 0x20, 0x74, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x6f, 0x62, 0x6f, 0x3b, 0x4c, 0x61, 0x70, 0x61, 0x20, 0x6c, 0x65, 0x20, -0x74, 0x6f, 0x6d, 0x6f, 0x6e, 0x20, 0x77, 0x61, 0x61, 0x72, 0x65, 0x3b, 0x4f, 0x3b, 0x57, 0x3b, 0x4f, 0x3b, 0x4f, 0x3b, -0x49, 0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x54, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, -0x46, 0x65, 0x76, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, -0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x75, 0x67, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x74, 0x75, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, -0x44, 0x65, 0x63, 0x3b, 0x4a, 0x61, 0x6e, 0x65, 0x69, 0x72, 0x6f, 0x3b, 0x46, 0x65, 0x76, 0x72, 0x65, 0x69, 0x72, 0x6f, -0x3b, 0x4d, 0x61, 0x72, 0x63, 0x6f, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x6f, 0x3b, 0x4a, 0x75, -0x6e, 0x68, 0x6f, 0x3b, 0x4a, 0x75, 0x6c, 0x68, 0x6f, 0x3b, 0x41, 0x75, 0x67, 0x75, 0x73, 0x74, 0x6f, 0x3b, 0x53, 0x65, -0x74, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x4f, 0x74, 0x75, 0x62, 0x72, 0x6f, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, -0x72, 0x6f, 0x3b, 0x44, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x6f, 0x3b, 0x5a, 0x69, 0x62, 0x3b, 0x4e, 0x68, 0x6c, 0x6f, -0x3b, 0x4d, 0x62, 0x69, 0x3b, 0x4d, 0x61, 0x62, 0x3b, 0x4e, 0x6b, 0x77, 0x3b, 0x4e, 0x68, 0x6c, 0x61, 0x3b, 0x4e, 0x74, -0x75, 0x3b, 0x4e, 0x63, 0x77, 0x3b, 0x4d, 0x70, 0x61, 0x6e, 0x3b, 0x4d, 0x66, 0x75, 0x3b, 0x4c, 0x77, 0x65, 0x3b, 0x4d, -0x70, 0x61, 0x6c, 0x3b, 0x5a, 0x69, 0x62, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x6c, 0x61, 0x3b, 0x4e, 0x68, 0x6c, 0x6f, 0x6c, -0x61, 0x6e, 0x6a, 0x61, 0x3b, 0x4d, 0x62, 0x69, 0x6d, 0x62, 0x69, 0x74, 0x68, 0x6f, 0x3b, 0x4d, 0x61, 0x62, 0x61, 0x73, -0x61, 0x3b, 0x4e, 0x6b, 0x77, 0x65, 0x6e, 0x6b, 0x77, 0x65, 0x7a, 0x69, 0x3b, 0x4e, 0x68, 0x6c, 0x61, 0x6e, 0x67, 0x75, -0x6c, 0x61, 0x3b, 0x4e, 0x74, 0x75, 0x6c, 0x69, 0x6b, 0x61, 0x7a, 0x69, 0x3b, 0x4e, 0x63, 0x77, 0x61, 0x62, 0x61, 0x6b, -0x61, 0x7a, 0x69, 0x3b, 0x4d, 0x70, 0x61, 0x6e, 0x64, 0x75, 0x6c, 0x61, 0x3b, 0x4d, 0x66, 0x75, 0x6d, 0x66, 0x75, 0x3b, -0x4c, 0x77, 0x65, 0x7a, 0x69, 0x3b, 0x4d, 0x70, 0x61, 0x6c, 0x61, 0x6b, 0x61, 0x7a, 0x69, 0x3b, 0x5a, 0x3b, 0x4e, 0x3b, -0x4d, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, -0x4d, 0x31, 0x3b, 0x4d, 0x32, 0x3b, 0x4d, 0x33, 0x3b, 0x4d, 0x34, 0x3b, 0x4d, 0x35, 0x3b, 0x4d, 0x36, 0x3b, 0x4d, 0x37, -0x3b, 0x4d, 0x38, 0x3b, 0x4d, 0x39, 0x3b, 0x4d, 0x31, 0x30, 0x3b, 0x4d, 0x31, 0x31, 0x3b, 0x4d, 0x31, 0x32, 0x3b, 0x4d, -0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, -0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x69, 0x6c, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, -0x61, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x61, 0x6e, 0x61, -0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x74, 0x61, 0x6e, 0x75, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, -0x20, 0x77, 0x61, 0x20, 0x73, 0x69, 0x74, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x73, 0x61, -0x62, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6e, 0x61, 0x6e, 0x65, 0x3b, 0x4d, 0x77, 0x65, -0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x74, 0x69, 0x73, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, -0x69, 0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x75, 0x6d, 0x69, -0x20, 0x6e, 0x61, 0x20, 0x6d, 0x6f, 0x6a, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x69, 0x6b, -0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, -0x3b, 0x54, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x2d49, 0x2d4f, 0x2d4f, -0x3b, 0x2d31, 0x2d55, 0x2d30, 0x3b, 0x2d4e, 0x2d30, 0x2d55, 0x3b, 0x2d49, 0x2d31, 0x2d54, 0x3b, 0x2d4e, 0x2d30, 0x2d62, 0x3b, 0x2d62, 0x2d53, 0x2d4f, -0x3b, 0x2d62, 0x2d53, 0x2d4d, 0x3b, 0x2d56, 0x2d53, 0x2d5b, 0x3b, 0x2d5b, 0x2d53, 0x2d5c, 0x3b, 0x2d3d, 0x2d5c, 0x2d53, 0x3b, 0x2d4f, 0x2d53, 0x2d61, -0x3b, 0x2d37, 0x2d53, 0x2d4a, 0x3b, 0x2d49, 0x2d4f, 0x2d4f, 0x2d30, 0x2d62, 0x2d54, 0x3b, 0x2d31, 0x2d55, 0x2d30, 0x2d62, 0x2d55, 0x3b, 0x2d4e, 0x2d30, -0x2d55, 0x2d5a, 0x3b, 0x2d49, 0x2d31, 0x2d54, 0x2d49, 0x2d54, 0x3b, 0x2d4e, 0x2d30, 0x2d62, 0x2d62, 0x2d53, 0x3b, 0x2d62, 0x2d53, 0x2d4f, 0x2d62, 0x2d53, -0x3b, 0x2d62, 0x2d53, 0x2d4d, 0x2d62, 0x2d53, 0x2d63, 0x3b, 0x2d56, 0x2d53, 0x2d5b, 0x2d5c, 0x3b, 0x2d5b, 0x2d53, 0x2d5c, 0x2d30, 0x2d4f, 0x2d31, 0x2d49, -0x2d54, 0x3b, 0x2d3d, 0x2d5c, 0x2d53, 0x2d31, 0x2d54, 0x3b, 0x2d4f, 0x2d53, 0x2d61, 0x2d30, 0x2d4f, 0x2d31, 0x2d49, 0x2d54, 0x3b, 0x2d37, 0x2d53, 0x2d4a, -0x2d30, 0x2d4f, 0x2d31, 0x2d49, 0x2d54, 0x3b, 0x2d49, 0x3b, 0x2d31, 0x3b, 0x2d4e, 0x3b, 0x2d49, 0x3b, 0x2d4e, 0x3b, 0x2d62, 0x3b, 0x2d62, 0x3b, -0x2d56, 0x3b, 0x2d5b, 0x3b, 0x2d3d, 0x3b, 0x2d4f, 0x3b, 0x2d37, 0x3b, 0x69, 0x6e, 0x6e, 0x3b, 0x62, 0x1e5b, 0x61, 0x3b, 0x6d, 0x61, -0x1e5b, 0x3b, 0x69, 0x62, 0x72, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x79, 0x75, 0x6e, 0x3b, 0x79, 0x75, 0x6c, 0x3b, 0x263, 0x75, -0x63, 0x3b, 0x63, 0x75, 0x74, 0x3b, 0x6b, 0x74, 0x75, 0x3b, 0x6e, 0x75, 0x77, 0x3b, 0x64, 0x75, 0x6a, 0x3b, 0x69, 0x6e, -0x6e, 0x61, 0x79, 0x72, 0x3b, 0x62, 0x1e5b, 0x61, 0x79, 0x1e5b, 0x3b, 0x6d, 0x61, 0x1e5b, 0x1e63, 0x3b, 0x69, 0x62, 0x72, 0x69, -0x72, 0x3b, 0x6d, 0x61, 0x79, 0x79, 0x75, 0x3b, 0x79, 0x75, 0x6e, 0x79, 0x75, 0x3b, 0x79, 0x75, 0x6c, 0x79, 0x75, 0x7a, -0x3b, 0x263, 0x75, 0x63, 0x74, 0x3b, 0x63, 0x75, 0x74, 0x61, 0x6e, 0x62, 0x69, 0x72, 0x3b, 0x6b, 0x74, 0x75, 0x62, 0x72, -0x3b, 0x6e, 0x75, 0x77, 0x61, 0x6e, 0x62, 0x69, 0x72, 0x3b, 0x64, 0x75, 0x6a, 0x61, 0x6e, 0x62, 0x69, 0x72, 0x3b, 0x69, -0x3b, 0x62, 0x3b, 0x6d, 0x3b, 0x69, 0x3b, 0x6d, 0x3b, 0x79, 0x3b, 0x79, 0x3b, 0x263, 0x3b, 0x63, 0x3b, 0x6b, 0x3b, 0x6e, -0x3b, 0x64, 0x3b, 0x59, 0x65, 0x6e, 0x3b, 0x46, 0x75, 0x72, 0x3b, 0x4d, 0x65, 0x263, 0x3b, 0x59, 0x65, 0x62, 0x3b, 0x4d, -0x61, 0x79, 0x3b, 0x59, 0x75, 0x6e, 0x3b, 0x59, 0x75, 0x6c, 0x3b, 0x194, 0x75, 0x63, 0x3b, 0x43, 0x74, 0x65, 0x3b, 0x54, -0x75, 0x62, 0x3b, 0x57, 0x61, 0x6d, 0x3b, 0x44, 0x75, 0x6a, 0x3b, 0x59, 0x65, 0x6e, 0x6e, 0x61, 0x79, 0x65, 0x72, 0x3b, -0x46, 0x75, 0x1e5b, 0x61, 0x72, 0x3b, 0x4d, 0x65, 0x263, 0x72, 0x65, 0x73, 0x3b, 0x59, 0x65, 0x62, 0x72, 0x69, 0x72, 0x3b, -0x4d, 0x61, 0x79, 0x79, 0x75, 0x3b, 0x59, 0x75, 0x6e, 0x79, 0x75, 0x3b, 0x59, 0x75, 0x6c, 0x79, 0x75, 0x3b, 0x194, 0x75, -0x63, 0x74, 0x3b, 0x43, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x1e5b, 0x3b, 0x54, 0x75, 0x62, 0x65, 0x1e5b, 0x3b, 0x57, 0x61, 0x6d, -0x62, 0x65, 0x1e5b, 0x3b, 0x44, 0x75, 0x1e7, 0x65, 0x6d, 0x62, 0x65, 0x1e5b, 0x3b, 0x59, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x59, -0x3b, 0x4d, 0x3b, 0x59, 0x3b, 0x59, 0x3b, 0x194, 0x3b, 0x43, 0x3b, 0x54, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x59, 0x65, 0x6e, -0x3b, 0x46, 0x75, 0x72, 0x3b, 0x4d, 0x65, 0x263, 0x3b, 0x59, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x59, 0x75, 0x6e, -0x3b, 0x59, 0x75, 0x6c, 0x3b, 0x194, 0x75, 0x63, 0x3b, 0x43, 0x74, 0x65, 0x3b, 0x54, 0x75, 0x62, 0x3b, 0x4e, 0x75, 0x6e, -0x3b, 0x44, 0x75, 0x1e7, 0x3b, 0x59, 0x65, 0x6e, 0x6e, 0x61, 0x79, 0x65, 0x72, 0x3b, 0x46, 0x75, 0x1e5b, 0x61, 0x72, 0x3b, -0x4d, 0x65, 0x263, 0x72, 0x65, 0x73, 0x3b, 0x59, 0x65, 0x62, 0x72, 0x69, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x79, 0x75, 0x3b, -0x59, 0x75, 0x6e, 0x79, 0x75, 0x3b, 0x59, 0x75, 0x6c, 0x79, 0x75, 0x3b, 0x194, 0x75, 0x63, 0x74, 0x3b, 0x43, 0x74, 0x65, -0x6d, 0x62, 0x65, 0x1e5b, 0x3b, 0x54, 0x75, 0x62, 0x65, 0x1e5b, 0x3b, 0x4e, 0x75, 0x6e, 0x65, 0x6d, 0x62, 0x65, 0x1e5b, 0x3b, -0x44, 0x75, 0x1e7, 0x65, 0x6d, 0x62, 0x65, 0x1e5b, 0x3b, 0x59, 0x3b, 0x46, 0x3b, 0x194, 0x3b, 0x42, 0x3b, 0x4d, 0x3b, 0x4e, -0x3b, 0x4c, 0x3b, 0x43, 0x3b, 0x54, 0x3b, 0x52, 0x3b, 0x57, 0x3b, 0x44, 0x3b, 0x4b, 0x42, 0x5a, 0x3b, 0x4b, 0x42, 0x52, -0x3b, 0x4b, 0x53, 0x54, 0x3b, 0x4b, 0x4b, 0x4e, 0x3b, 0x4b, 0x54, 0x4e, 0x3b, 0x4b, 0x4d, 0x4b, 0x3b, 0x4b, 0x4d, 0x53, -0x3b, 0x4b, 0x4d, 0x4e, 0x3b, 0x4b, 0x4d, 0x57, 0x3b, 0x4b, 0x4b, 0x4d, 0x3b, 0x4b, 0x4e, 0x4b, 0x3b, 0x4b, 0x4e, 0x42, -0x3b, 0x4f, 0x6b, 0x77, 0x6f, 0x6b, 0x75, 0x62, 0x61, 0x6e, 0x7a, 0x61, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6b, 0x61, 0x62, -0x69, 0x72, 0x69, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6b, 0x61, 0x73, 0x68, 0x61, 0x74, 0x75, 0x3b, 0x4f, 0x6b, 0x77, 0x61, -0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6b, 0x61, 0x74, 0x61, 0x61, 0x6e, 0x61, 0x3b, 0x4f, 0x6b, 0x77, -0x61, 0x6d, 0x75, 0x6b, 0x61, 0x61, 0x67, 0x61, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6d, 0x75, 0x73, 0x68, 0x61, 0x6e, 0x6a, -0x75, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6d, 0x75, 0x6e, 0x61, 0x61, 0x6e, 0x61, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6d, 0x77, -0x65, 0x6e, 0x64, 0x61, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x69, -0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6b, 0x75, 0x6d, 0x77, 0x65, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x69, 0x6b, -0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x69, 0x62, 0x69, 0x72, 0x69, 0x3b, 0x48, 0x75, 0x74, 0x3b, 0x56, 0x69, 0x6c, -0x3b, 0x44, 0x61, 0x74, 0x3b, 0x54, 0x61, 0x69, 0x3b, 0x48, 0x61, 0x6e, 0x3b, 0x53, 0x69, 0x74, 0x3b, 0x53, 0x61, 0x62, -0x3b, 0x4e, 0x61, 0x6e, 0x3b, 0x54, 0x69, 0x73, 0x3b, 0x4b, 0x75, 0x6d, 0x3b, 0x4b, 0x6d, 0x6a, 0x3b, 0x4b, 0x6d, 0x62, -0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x68, 0x75, 0x74, 0x61, 0x6c, -0x61, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x77, 0x75, 0x76, 0x69, -0x6c, 0x69, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x77, 0x75, 0x64, -0x61, 0x74, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x77, 0x75, -0x74, 0x61, 0x69, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x77, 0x75, -0x68, 0x61, 0x6e, 0x75, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x73, -0x69, 0x74, 0x61, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x73, 0x61, -0x62, 0x61, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x6e, 0x61, 0x6e, -0x65, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x74, 0x69, 0x73, 0x61, -0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x6b, 0x75, 0x6d, 0x69, 0x3b, -0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, 0x20, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, -0x61, 0x20, 0x6d, 0x6f, 0x6a, 0x61, 0x3b, 0x70, 0x61, 0x20, 0x6d, 0x77, 0x65, 0x64, 0x7a, 0x69, 0x20, 0x67, 0x77, 0x61, -0x20, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x62, 0x69, 0x6c, 0x69, 0x3b, 0x48, 0x3b, 0x56, 0x3b, 0x44, -0x3b, 0x54, 0x3b, 0x48, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4a, -0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x68, -0x69, 0x3b, 0x41, 0x70, 0x72, 0x69, 0x6c, 0x79, 0x69, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x79, 0x69, 0x3b, -0x4a, 0x75, 0x6c, 0x79, 0x61, 0x69, 0x3b, 0x41, 0x67, 0x75, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, -0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x65, -0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x7a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x77, -0x69, 0x3b, 0x6d, 0x25b, 0x3b, 0x7a, 0x75, 0x77, 0x3b, 0x7a, 0x75, 0x6c, 0x3b, 0x75, 0x74, 0x69, 0x3b, 0x73, 0x25b, 0x74, -0x3b, 0x254, 0x6b, 0x75, 0x3b, 0x6e, 0x6f, 0x77, 0x3b, 0x64, 0x65, 0x73, 0x3b, 0x7a, 0x61, 0x6e, 0x77, 0x75, 0x79, 0x65, -0x3b, 0x66, 0x65, 0x62, 0x75, 0x72, 0x75, 0x79, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x69, 0x73, 0x69, 0x3b, 0x61, 0x77, 0x69, -0x72, 0x69, 0x6c, 0x69, 0x3b, 0x6d, 0x25b, 0x3b, 0x7a, 0x75, 0x77, 0x25b, 0x6e, 0x3b, 0x7a, 0x75, 0x6c, 0x75, 0x79, 0x65, -0x3b, 0x75, 0x74, 0x69, 0x3b, 0x73, 0x25b, 0x74, 0x61, 0x6e, 0x62, 0x75, 0x72, 0x75, 0x3b, 0x254, 0x6b, 0x75, 0x74, 0x254, -0x62, 0x75, 0x72, 0x75, 0x3b, 0x6e, 0x6f, 0x77, 0x61, 0x6e, 0x62, 0x75, 0x72, 0x75, 0x3b, 0x64, 0x65, 0x73, 0x61, 0x6e, -0x62, 0x75, 0x72, 0x75, 0x3b, 0x5a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x5a, 0x3b, 0x5a, 0x3b, 0x55, -0x3b, 0x53, 0x3b, 0x186, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4d, 0x62, 0x65, 0x3b, 0x4b, 0x61, 0x69, 0x3b, 0x4b, 0x61, 0x74, -0x3b, 0x4b, 0x61, 0x6e, 0x3b, 0x47, 0x61, 0x74, 0x3b, 0x47, 0x61, 0x6e, 0x3b, 0x4d, 0x75, 0x67, 0x3b, 0x4b, 0x6e, 0x6e, -0x3b, 0x4b, 0x65, 0x6e, 0x3b, 0x49, 0x6b, 0x75, 0x3b, 0x49, 0x6d, 0x77, 0x3b, 0x49, 0x67, 0x69, 0x3b, 0x4d, 0x77, 0x65, -0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6d, 0x62, 0x65, 0x72, 0x65, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, -0x20, 0x6b, 0x61, 0x129, 0x72, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x74, 0x68, -0x61, 0x74, 0x169, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x61, 0x6e, 0x61, 0x3b, 0x4d, 0x77, -0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, -0x77, 0x61, 0x20, 0x67, 0x61, 0x74, 0x61, 0x6e, 0x74, 0x61, 0x74, 0x169, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, -0x61, 0x20, 0x6d, 0x169, 0x67, 0x77, 0x61, 0x6e, 0x6a, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, -0x6b, 0x61, 0x6e, 0x61, 0x6e, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x6b, 0x65, 0x6e, 0x64, -0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x169, 0x6d, 0x69, 0x3b, 0x4d, 0x77, 0x65, -0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x169, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x169, 0x6d, 0x77, 0x65, 0x3b, -0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x61, 0x20, 0x69, 0x6b, 0x169, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x4b, 0x61, -0x129, 0x72, 0x129, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x47, 0x3b, 0x47, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, -0x4b, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x13a4, 0x13c3, 0x3b, 0x13a7, 0x13a6, 0x3b, 0x13a0, 0x13c5, 0x3b, 0x13a7, 0x13ec, 0x3b, -0x13a0, 0x13c2, 0x3b, 0x13d5, 0x13ad, 0x3b, 0x13ab, 0x13f0, 0x3b, 0x13a6, 0x13b6, 0x3b, 0x13da, 0x13b5, 0x3b, 0x13da, 0x13c2, 0x3b, 0x13c5, 0x13d3, -0x3b, 0x13a5, 0x13cd, 0x3b, 0x13a4, 0x13c3, 0x13b8, 0x13d4, 0x13c5, 0x3b, 0x13a7, 0x13a6, 0x13b5, 0x3b, 0x13a0, 0x13c5, 0x13f1, 0x3b, 0x13a7, 0x13ec, -0x13c2, 0x3b, 0x13a0, 0x13c2, 0x13cd, 0x13ac, 0x13d8, 0x3b, 0x13d5, 0x13ad, 0x13b7, 0x13f1, 0x3b, 0x13ab, 0x13f0, 0x13c9, 0x13c2, 0x3b, 0x13a6, 0x13b6, -0x13c2, 0x3b, 0x13da, 0x13b5, 0x13cd, 0x13d7, 0x3b, 0x13da, 0x13c2, 0x13c5, 0x13d7, 0x3b, 0x13c5, 0x13d3, 0x13d5, 0x13c6, 0x3b, 0x13a5, 0x13cd, 0x13a9, -0x13f1, 0x3b, 0x13a4, 0x3b, 0x13a7, 0x3b, 0x13a0, 0x3b, 0x13a7, 0x3b, 0x13a0, 0x3b, 0x13d5, 0x3b, 0x13ab, 0x3b, 0x13a6, 0x3b, 0x13da, 0x3b, -0x13da, 0x3b, 0x13c5, 0x3b, 0x13a5, 0x3b, 0x7a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x76, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x76, -0x72, 0x3b, 0x6d, 0x65, 0x3b, 0x7a, 0x69, 0x6e, 0x3b, 0x7a, 0x69, 0x6c, 0x3b, 0x6f, 0x75, 0x74, 0x3b, 0x73, 0x65, 0x70, -0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x73, 0x3b, 0x7a, 0x61, 0x6e, 0x76, 0x69, 0x65, 0x3b, -0x66, 0x65, 0x76, 0x72, 0x69, 0x79, 0x65, 0x3b, 0x6d, 0x61, 0x72, 0x73, 0x3b, 0x61, 0x76, 0x72, 0x69, 0x6c, 0x3b, 0x6d, -0x65, 0x3b, 0x7a, 0x69, 0x6e, 0x3b, 0x7a, 0x69, 0x6c, 0x79, 0x65, 0x3b, 0x6f, 0x75, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, -0x61, 0x6d, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x3b, 0x6e, 0x6f, 0x76, 0x61, 0x6d, 0x3b, 0x64, 0x65, 0x73, 0x61, 0x6d, -0x3b, 0x7a, 0x3b, 0x66, 0x3b, 0x6d, 0x3b, 0x61, 0x3b, 0x6d, 0x3b, 0x7a, 0x3b, 0x7a, 0x3b, 0x6f, 0x3b, 0x73, 0x3b, 0x6f, -0x3b, 0x6e, 0x3b, 0x64, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x4e, 0x74, 0x61, 0x6e, 0x64, 0x69, 0x3b, 0x4d, 0x77, -0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x50, 0x69, 0x6c, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, -0x20, 0x54, 0x61, 0x74, 0x75, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x63, 0x68, 0x65, 0x63, -0x68, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, -0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x55, 0x6d, -0x6f, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, -0x20, 0x4d, 0x69, 0x76, 0x69, 0x6c, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, -0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x4d, 0x69, 0x74, 0x61, 0x74, 0x75, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, -0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x4e, 0x63, 0x68, 0x65, 0x63, 0x68, 0x69, -0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, -0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x3b, 0x4d, 0x77, 0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, -0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x55, 0x3b, 0x4d, 0x77, -0x65, 0x64, 0x69, 0x20, 0x77, 0x61, 0x20, 0x4e, 0x6e, 0x79, 0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x4e, 0x6e, 0x79, -0x61, 0x6e, 0x6f, 0x20, 0x6e, 0x61, 0x20, 0x4d, 0x3b, 0x46, 0xfa, 0x6e, 0x67, 0x61, 0x74, 0x268, 0x3b, 0x4e, 0x61, 0x61, -0x6e, 0x268, 0x3b, 0x4b, 0x65, 0x65, 0x6e, 0x64, 0x61, 0x3b, 0x49, 0x6b, 0xfa, 0x6d, 0x69, 0x3b, 0x49, 0x6e, 0x79, 0x61, -0x6d, 0x62, 0x61, 0x6c, 0x61, 0x3b, 0x49, 0x64, 0x77, 0x61, 0x61, 0x74, 0x61, 0x3b, 0x4d, 0x289, 0x289, 0x6e, 0x63, 0x68, -0x268, 0x3b, 0x56, 0x268, 0x268, 0x72, 0x268, 0x3b, 0x53, 0x61, 0x61, 0x74, 0x289, 0x3b, 0x49, 0x6e, 0x79, 0x69, 0x3b, 0x53, -0x61, 0x61, 0x6e, 0x6f, 0x3b, 0x53, 0x61, 0x73, 0x61, 0x74, 0x289, 0x3b, 0x4b, 0x289, 0x66, 0xfa, 0x6e, 0x67, 0x61, 0x74, -0x268, 0x3b, 0x4b, 0x289, 0x6e, 0x61, 0x61, 0x6e, 0x268, 0x3b, 0x4b, 0x289, 0x6b, 0x65, 0x65, 0x6e, 0x64, 0x61, 0x3b, 0x4b, -0x77, 0x69, 0x69, 0x6b, 0x75, 0x6d, 0x69, 0x3b, 0x4b, 0x77, 0x69, 0x69, 0x6e, 0x79, 0x61, 0x6d, 0x62, 0xe1, 0x6c, 0x61, -0x3b, 0x4b, 0x77, 0x69, 0x69, 0x64, 0x77, 0x61, 0x61, 0x74, 0x61, 0x3b, 0x4b, 0x289, 0x6d, 0x289, 0x289, 0x6e, 0x63, 0x68, -0x268, 0x3b, 0x4b, 0x289, 0x76, 0x268, 0x268, 0x72, 0x268, 0x3b, 0x4b, 0x289, 0x73, 0x61, 0x61, 0x74, 0x289, 0x3b, 0x4b, 0x77, -0x69, 0x69, 0x6e, 0x79, 0x69, 0x3b, 0x4b, 0x289, 0x73, 0x61, 0x61, 0x6e, 0x6f, 0x3b, 0x4b, 0x289, 0x73, 0x61, 0x73, 0x61, -0x74, 0x289, 0x3b, 0x46, 0x3b, 0x4e, 0x3b, 0x4b, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x49, 0x3b, 0x4d, 0x3b, 0x56, 0x3b, 0x53, -0x3b, 0x49, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, -0x70, 0x75, 0x3b, 0x4d, 0x61, 0x61, 0x3b, 0x4a, 0x75, 0x75, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x75, 0x3b, 0x53, -0x65, 0x62, 0x3b, 0x4f, 0x6b, 0x69, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x77, 0x61, -0x6c, 0x69, 0x79, 0x6f, 0x3b, 0x46, 0x65, 0x62, 0x77, 0x61, 0x6c, 0x69, 0x79, 0x6f, 0x3b, 0x4d, 0x61, 0x72, 0x69, 0x73, -0x69, 0x3b, 0x41, 0x70, 0x75, 0x6c, 0x69, 0x3b, 0x4d, 0x61, 0x61, 0x79, 0x69, 0x3b, 0x4a, 0x75, 0x75, 0x6e, 0x69, 0x3b, -0x4a, 0x75, 0x6c, 0x61, 0x61, 0x79, 0x69, 0x3b, 0x41, 0x67, 0x75, 0x73, 0x69, 0x74, 0x6f, 0x3b, 0x53, 0x65, 0x62, 0x75, -0x74, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x69, 0x74, 0x6f, 0x62, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, -0x6d, 0x62, 0x61, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, -0x4d, 0x61, 0x63, 0x3b, 0x45, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, -0x4f, 0x67, 0x61, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b, -0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x63, -0x68, 0x69, 0x3b, 0x45, 0x70, 0x72, 0x65, 0x6f, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, -0x6c, 0x61, 0x69, 0x3b, 0x4f, 0x67, 0x61, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, -0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x65, 0x6d, -0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x4a, 0x3b, 0x4f, 0x3b, 0x53, -0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, -0x62, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, -0x65, 0x74, 0x3b, 0x4f, 0x74, 0x75, 0x3b, 0x4e, 0x75, 0x76, 0x3b, 0x44, 0x69, 0x7a, 0x3b, 0x4a, 0x61, 0x6e, 0x65, 0x72, -0x75, 0x3b, 0x46, 0x65, 0x62, 0x72, 0x65, 0x72, 0x75, 0x3b, 0x4d, 0x61, 0x72, 0x73, 0x75, 0x3b, 0x41, 0x62, 0x72, 0x69, -0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x75, 0x3b, 0x4a, 0x75, 0x6e, 0x68, 0x75, 0x3b, 0x4a, 0x75, 0x6c, 0x68, 0x75, 0x3b, 0x41, -0x67, 0x6f, 0x73, 0x74, 0x75, 0x3b, 0x53, 0x65, 0x74, 0x65, 0x6e, 0x62, 0x72, 0x75, 0x3b, 0x4f, 0x74, 0x75, 0x62, 0x72, -0x75, 0x3b, 0x4e, 0x75, 0x76, 0x65, 0x6e, 0x62, 0x72, 0x75, 0x3b, 0x44, 0x69, 0x7a, 0x65, 0x6e, 0x62, 0x72, 0x75, 0x3b, -0x4a, 0x41, 0x4e, 0x3b, 0x46, 0x45, 0x42, 0x3b, 0x4d, 0x41, 0x43, 0x3b, 0x128, 0x50, 0x55, 0x3b, 0x4d, 0x128, 0x128, 0x3b, -0x4e, 0x4a, 0x55, 0x3b, 0x4e, 0x4a, 0x52, 0x3b, 0x41, 0x47, 0x41, 0x3b, 0x53, 0x50, 0x54, 0x3b, 0x4f, 0x4b, 0x54, 0x3b, -0x4e, 0x4f, 0x56, 0x3b, 0x44, 0x45, 0x43, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x129, 0x3b, 0x46, 0x65, 0x62, 0x75, -0x72, 0x75, 0x61, 0x72, 0x129, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x3b, 0x128, 0x70, 0x75, 0x72, 0x169, 0x3b, 0x4d, 0x129, -0x129, 0x3b, 0x4e, 0x6a, 0x75, 0x6e, 0x69, 0x3b, 0x4e, 0x6a, 0x75, 0x72, 0x61, 0x129, 0x3b, 0x41, 0x67, 0x61, 0x73, 0x74, -0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x169, 0x62, 0x61, 0x3b, 0x4e, 0x6f, -0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x63, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, -0x128, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x4e, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4d, 0x75, -0x6c, 0x3b, 0x4e, 0x67, 0x61, 0x74, 0x3b, 0x54, 0x61, 0x61, 0x3b, 0x49, 0x77, 0x6f, 0x3b, 0x4d, 0x61, 0x6d, 0x3b, 0x50, -0x61, 0x61, 0x3b, 0x4e, 0x67, 0x65, 0x3b, 0x52, 0x6f, 0x6f, 0x3b, 0x42, 0x75, 0x72, 0x3b, 0x45, 0x70, 0x65, 0x3b, 0x4b, -0x70, 0x74, 0x3b, 0x4b, 0x70, 0x61, 0x3b, 0x4d, 0x75, 0x6c, 0x67, 0x75, 0x6c, 0x3b, 0x4e, 0x67, 0x2019, 0x61, 0x74, 0x79, -0x61, 0x61, 0x74, 0x6f, 0x3b, 0x4b, 0x69, 0x70, 0x74, 0x61, 0x61, 0x6d, 0x6f, 0x3b, 0x49, 0x77, 0x6f, 0x6f, 0x74, 0x6b, -0x75, 0x75, 0x74, 0x3b, 0x4d, 0x61, 0x6d, 0x75, 0x75, 0x74, 0x3b, 0x50, 0x61, 0x61, 0x67, 0x69, 0x3b, 0x4e, 0x67, 0x2019, -0x65, 0x69, 0x79, 0x65, 0x65, 0x74, 0x3b, 0x52, 0x6f, 0x6f, 0x70, 0x74, 0x75, 0x69, 0x3b, 0x42, 0x75, 0x72, 0x65, 0x65, -0x74, 0x3b, 0x45, 0x70, 0x65, 0x65, 0x73, 0x6f, 0x3b, 0x4b, 0x69, 0x70, 0x73, 0x75, 0x75, 0x6e, 0x64, 0x65, 0x20, 0x6e, -0x65, 0x20, 0x74, 0x61, 0x61, 0x69, 0x3b, 0x4b, 0x69, 0x70, 0x73, 0x75, 0x75, 0x6e, 0x64, 0x65, 0x20, 0x6e, 0x65, 0x62, -0x6f, 0x20, 0x61, 0x65, 0x6e, 0x67, 0x2019, 0x3b, 0x4d, 0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x49, 0x3b, 0x4d, 0x3b, 0x50, 0x3b, -0x4e, 0x3b, 0x52, 0x3b, 0x42, 0x3b, 0x45, 0x3b, 0x4b, 0x3b, 0x4b, 0x3b, 0x1c3, 0x4b, 0x68, 0x61, 0x6e, 0x6e, 0x69, 0x3b, -0x1c3, 0x4b, 0x68, 0x61, 0x6e, 0x1c0, 0x67, 0xf4, 0x61, 0x62, 0x3b, 0x1c0, 0x4b, 0x68, 0x75, 0x75, 0x1c1, 0x6b, 0x68, 0xe2, -0x62, 0x3b, 0x1c3, 0x48, 0xf4, 0x61, 0x1c2, 0x6b, 0x68, 0x61, 0x69, 0x62, 0x3b, 0x1c3, 0x4b, 0x68, 0x61, 0x69, 0x74, 0x73, -0xe2, 0x62, 0x3b, 0x47, 0x61, 0x6d, 0x61, 0x1c0, 0x61, 0x65, 0x62, 0x3b, 0x1c2, 0x4b, 0x68, 0x6f, 0x65, 0x73, 0x61, 0x6f, -0x62, 0x3b, 0x41, 0x6f, 0x1c1, 0x6b, 0x68, 0x75, 0x75, 0x6d, 0xfb, 0x1c1, 0x6b, 0x68, 0xe2, 0x62, 0x3b, 0x54, 0x61, 0x72, -0x61, 0x1c0, 0x6b, 0x68, 0x75, 0x75, 0x6d, 0xfb, 0x1c1, 0x6b, 0x68, 0xe2, 0x62, 0x3b, 0x1c2, 0x4e, 0xfb, 0x1c1, 0x6e, 0xe2, -0x69, 0x73, 0x65, 0x62, 0x3b, 0x1c0, 0x48, 0x6f, 0x6f, 0x1c2, 0x67, 0x61, 0x65, 0x62, 0x3b, 0x48, 0xf4, 0x61, 0x73, 0x6f, -0x72, 0x65, 0x1c1, 0x6b, 0x68, 0xe2, 0x62, 0x3b, 0x4a, 0x61, 0x6e, 0x2e, 0x3b, 0x46, 0xe4, 0x62, 0x2e, 0x3b, 0x4d, 0xe4, -0x7a, 0x2e, 0x3b, 0x41, 0x70, 0x72, 0x2e, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x2e, 0x3b, 0x4a, 0x75, 0x6c, -0x2e, 0x3b, 0x4f, 0x75, 0x6a, 0x2e, 0x3b, 0x53, 0xe4, 0x70, 0x2e, 0x3b, 0x4f, 0x6b, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, -0x2e, 0x3b, 0x44, 0x65, 0x7a, 0x2e, 0x3b, 0x4a, 0x61, 0x6e, 0x6e, 0x65, 0x77, 0x61, 0x3b, 0x46, 0xe4, 0x62, 0x72, 0x6f, -0x77, 0x61, 0x3b, 0x4d, 0xe4, 0xe4, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x65, 0x6c, 0x6c, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, -0x75, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x75, 0x6c, 0x69, 0x3b, 0x4f, 0x75, 0x6a, 0x6f, 0xdf, 0x3b, 0x53, 0x65, 0x70, -0x74, 0xe4, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x68, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x6f, 0x76, 0xe4, -0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x7a, 0xe4, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0xe4, -0x62, 0x3b, 0x4d, 0xe4, 0x7a, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, -0x6c, 0x3b, 0x4f, 0x75, 0x6a, 0x3b, 0x53, 0xe4, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, -0x7a, 0x3b, 0x44, 0x61, 0x6c, 0x3b, 0x41, 0x72, 0xe1, 0x3b, 0x186, 0x25b, 0x6e, 0x3b, 0x44, 0x6f, 0x79, 0x3b, 0x4c, 0xe9, -0x70, 0x3b, 0x52, 0x6f, 0x6b, 0x3b, 0x53, 0xe1, 0x73, 0x3b, 0x42, 0x254, 0x301, 0x72, 0x3b, 0x4b, 0xfa, 0x73, 0x3b, 0x47, -0xed, 0x73, 0x3b, 0x53, 0x68, 0x289, 0x301, 0x3b, 0x4e, 0x74, 0x289, 0x301, 0x3b, 0x4f, 0x6c, 0x61, 0x64, 0x61, 0x6c, 0x289, -0x301, 0x3b, 0x41, 0x72, 0xe1, 0x74, 0x3b, 0x186, 0x25b, 0x6e, 0x268, 0x301, 0x254, 0x268, 0x14b, 0x254, 0x6b, 0x3b, 0x4f, 0x6c, -0x6f, 0x64, 0x6f, 0x79, 0xed, 0xf3, 0x72, 0xed, 0xea, 0x20, 0x69, 0x6e, 0x6b, 0xf3, 0x6b, 0xfa, 0xe2, 0x3b, 0x4f, 0x6c, -0x6f, 0x69, 0x6c, 0xe9, 0x70, 0x16b, 0x6e, 0x79, 0x12b, 0x113, 0x20, 0x69, 0x6e, 0x6b, 0xf3, 0x6b, 0xfa, 0xe2, 0x3b, 0x4b, -0xfa, 0x6a, 0xfa, 0x254, 0x72, 0x254, 0x6b, 0x3b, 0x4d, 0xf3, 0x72, 0x75, 0x73, 0xe1, 0x73, 0x69, 0x6e, 0x3b, 0x186, 0x6c, -0x254, 0x301, 0x268, 0x301, 0x62, 0x254, 0x301, 0x72, 0xe1, 0x72, 0x25b, 0x3b, 0x4b, 0xfa, 0x73, 0x68, 0xee, 0x6e, 0x3b, 0x4f, -0x6c, 0x67, 0xed, 0x73, 0x61, 0x6e, 0x3b, 0x50, 0x289, 0x73, 0x68, 0x289, 0x301, 0x6b, 0x61, 0x3b, 0x4e, 0x74, 0x289, 0x301, -0x14b, 0x289, 0x301, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, -0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x70, -0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, -0x3b, 0x4d, 0x61, 0x63, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, -0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x63, -0x3b, 0x52, 0x61, 0x72, 0x3b, 0x4d, 0x75, 0x6b, 0x3b, 0x4b, 0x77, 0x61, 0x3b, 0x44, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72, -0x3b, 0x4d, 0x6f, 0x64, 0x3b, 0x4a, 0x6f, 0x6c, 0x3b, 0x50, 0x65, 0x64, 0x3b, 0x53, 0x6f, 0x6b, 0x3b, 0x54, 0x69, 0x62, -0x3b, 0x4c, 0x61, 0x62, 0x3b, 0x50, 0x6f, 0x6f, 0x3b, 0x4f, 0x72, 0x61, 0x72, 0x61, 0x3b, 0x4f, 0x6d, 0x75, 0x6b, 0x3b, -0x4f, 0x6b, 0x77, 0x61, 0x6d, 0x67, 0x2019, 0x3b, 0x4f, 0x64, 0x75, 0x6e, 0x67, 0x2019, 0x65, 0x6c, 0x3b, 0x4f, 0x6d, 0x61, -0x72, 0x75, 0x6b, 0x3b, 0x4f, 0x6d, 0x6f, 0x64, 0x6f, 0x6b, 0x2019, 0x6b, 0x69, 0x6e, 0x67, 0x2019, 0x6f, 0x6c, 0x3b, 0x4f, -0x6a, 0x6f, 0x6c, 0x61, 0x3b, 0x4f, 0x70, 0x65, 0x64, 0x65, 0x6c, 0x3b, 0x4f, 0x73, 0x6f, 0x6b, 0x6f, 0x73, 0x6f, 0x6b, -0x6f, 0x6d, 0x61, 0x3b, 0x4f, 0x74, 0x69, 0x62, 0x61, 0x72, 0x3b, 0x4f, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x3b, 0x4f, 0x70, -0x6f, 0x6f, 0x3b, 0x52, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x44, 0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x50, 0x3b, 0x53, -0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x50, 0x3b, 0x17d, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x65, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, -0x77, 0x69, 0x3b, 0x4d, 0x65, 0x3b, 0x17d, 0x75, 0x77, 0x3b, 0x17d, 0x75, 0x79, 0x3b, 0x55, 0x74, 0x3b, 0x53, 0x65, 0x6b, -0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x6f, 0x3b, 0x44, 0x65, 0x65, 0x3b, 0x17d, 0x61, 0x6e, 0x77, 0x69, 0x79, 0x65, -0x3b, 0x46, 0x65, 0x65, 0x77, 0x69, 0x72, 0x69, 0x79, 0x65, 0x3b, 0x4d, 0x61, 0x72, 0x73, 0x69, 0x3b, 0x41, 0x77, 0x69, -0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x65, 0x3b, 0x17d, 0x75, 0x77, 0x65, 0x14b, 0x3b, 0x17d, 0x75, 0x79, 0x79, 0x65, 0x3b, 0x55, -0x74, 0x3b, 0x53, 0x65, 0x6b, 0x74, 0x61, 0x6e, 0x62, 0x75, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x6f, 0x62, 0x75, 0x72, -0x3b, 0x4e, 0x6f, 0x6f, 0x77, 0x61, 0x6e, 0x62, 0x75, 0x72, 0x3b, 0x44, 0x65, 0x65, 0x73, 0x61, 0x6e, 0x62, 0x75, 0x72, -0x3b, 0x17d, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x17d, 0x3b, 0x17d, 0x3b, 0x55, 0x3b, 0x53, 0x3b, 0x4f, -0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x44, 0x41, 0x43, 0x3b, 0x44, 0x41, 0x52, 0x3b, 0x44, 0x41, 0x44, 0x3b, 0x44, 0x41, 0x4e, -0x3b, 0x44, 0x41, 0x48, 0x3b, 0x44, 0x41, 0x55, 0x3b, 0x44, 0x41, 0x4f, 0x3b, 0x44, 0x41, 0x42, 0x3b, 0x44, 0x4f, 0x43, -0x3b, 0x44, 0x41, 0x50, 0x3b, 0x44, 0x47, 0x49, 0x3b, 0x44, 0x41, 0x47, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, -0x20, 0x41, 0x63, 0x68, 0x69, 0x65, 0x6c, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x72, 0x69, 0x79, -0x6f, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x64, 0x65, 0x6b, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, -0x61, 0x72, 0x20, 0x41, 0x6e, 0x67, 0x2019, 0x77, 0x65, 0x6e, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, -0x62, 0x69, 0x63, 0x68, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x75, 0x63, 0x68, 0x69, 0x65, 0x6c, -0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x62, 0x69, 0x72, 0x69, 0x79, 0x6f, 0x3b, 0x44, 0x77, 0x65, -0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x62, 0x6f, 0x72, 0x6f, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x4f, -0x63, 0x68, 0x69, 0x6b, 0x6f, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x70, 0x61, 0x72, 0x3b, 0x44, -0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x67, 0x69, 0x20, 0x61, 0x63, 0x68, 0x69, 0x65, 0x6c, 0x3b, 0x44, 0x77, 0x65, -0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x70, 0x61, 0x72, 0x20, 0x67, 0x69, 0x20, 0x61, 0x72, 0x69, 0x79, 0x6f, 0x3b, 0x43, -0x3b, 0x52, 0x3b, 0x44, 0x3b, 0x4e, 0x3b, 0x42, 0x3b, 0x55, 0x3b, 0x42, 0x3b, 0x42, 0x3b, 0x43, 0x3b, 0x50, 0x3b, 0x43, -0x3b, 0x50, 0x3b, 0x59, 0x65, 0x6e, 0x3b, 0x59, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x49, 0x62, 0x72, 0x3b, 0x4d, -0x61, 0x79, 0x3b, 0x59, 0x75, 0x6e, 0x3b, 0x59, 0x75, 0x6c, 0x3b, 0x194, 0x75, 0x63, 0x3b, 0x43, 0x75, 0x74, 0x3b, 0x4b, -0x1e6d, 0x75, 0x3b, 0x4e, 0x77, 0x61, 0x3b, 0x44, 0x75, 0x6a, 0x3b, 0x59, 0x65, 0x6e, 0x6e, 0x61, 0x79, 0x65, 0x72, 0x3b, -0x59, 0x65, 0x62, 0x72, 0x61, 0x79, 0x65, 0x72, 0x3b, 0x4d, 0x61, 0x72, 0x73, 0x3b, 0x49, 0x62, 0x72, 0x69, 0x72, 0x3b, -0x4d, 0x61, 0x79, 0x79, 0x75, 0x3b, 0x59, 0x75, 0x6e, 0x79, 0x75, 0x3b, 0x59, 0x75, 0x6c, 0x79, 0x75, 0x7a, 0x3b, 0x194, -0x75, 0x63, 0x74, 0x3b, 0x43, 0x75, 0x74, 0x61, 0x6e, 0x62, 0x69, 0x72, 0x3b, 0x4b, 0x1e6d, 0x75, 0x62, 0x65, 0x72, 0x3b, -0x4e, 0x77, 0x61, 0x6e, 0x62, 0x69, 0x72, 0x3b, 0x44, 0x75, 0x6a, 0x61, 0x6e, 0x62, 0x69, 0x72, 0x3b, 0x59, 0x3b, 0x59, -0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x4d, 0x3b, 0x59, 0x3b, 0x59, 0x3b, 0x194, 0x3b, 0x43, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x44, -0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x69, 0x3b, 0x46, 0x65, 0x62, 0x6c, 0x75, 0x61, 0x6c, 0x69, 0x3b, 0x4d, 0x61, -0x63, 0x68, 0x69, 0x3b, 0x41, 0x70, 0x6c, 0x69, 0x6c, 0x69, 0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, -0x4a, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x41, 0x67, 0x6f, 0x73, 0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, -0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x65, 0x73, -0x65, 0x6d, 0x62, 0x61, 0x3b, 0x91c, 0x93e, 0x928, 0x941, 0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, -0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x938, 0x3b, 0x90f, 0x92b, 0x94d, 0x930, 0x93f, 0x932, 0x3b, 0x92e, 0x947, -0x3b, 0x91c, 0x941, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x907, 0x3b, 0x906, 0x917, 0x938, 0x94d, 0x925, 0x3b, 0x938, 0x947, 0x92c, -0x925, 0x947, 0x91c, 0x94d, 0x92c, 0x93c, 0x930, 0x3b, 0x905, 0x916, 0x925, 0x92c, 0x930, 0x3b, 0x928, 0x92c, 0x947, 0x91c, 0x94d, 0x92c, -0x93c, 0x930, 0x3b, 0x926, 0x93f, 0x938, 0x947, 0x91c, 0x94d, 0x92c, 0x93c, 0x930, 0x3b, 0x91c, 0x3b, 0x92b, 0x947, 0x3b, 0x92e, 0x93e, -0x3b, 0x90f, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x941, 0x3b, 0x91c, 0x941, 0x3b, 0x906, 0x3b, 0x938, 0x947, 0x3b, 0x905, 0x3b, 0x928, -0x3b, 0x926, 0x93f, 0x3b, 0x456, 0x486, 0x430, 0x2de9, 0x487, 0x3b, 0x444, 0x435, 0x2de1, 0x487, 0x3b, 0x43c, 0x430, 0x2dec, 0x487, 0x3b, -0x430, 0x486, 0x43f, 0x2dec, 0x487, 0x3b, 0x43c, 0x430, 0xa675, 0x3b, 0x456, 0x486, 0xa64b, 0x2de9, 0x487, 0x3b, 0x456, 0x486, 0xa64b, 0x2de7, -0x487, 0x3b, 0x430, 0x486, 0x301, 0x475, 0x2de2, 0x487, 0x3b, 0x441, 0x435, 0x2deb, 0x487, 0x3b, 0x47b, 0x486, 0x43a, 0x2dee, 0x3b, 0x43d, -0x43e, 0x435, 0x2de8, 0x3b, 0x434, 0x435, 0x2de6, 0x487, 0x3b, 0x456, 0x486, 0x430, 0x43d, 0x43d, 0xa64b, 0x430, 0x301, 0x440, 0x457, 0x439, -0x3b, 0x444, 0x435, 0x432, 0x440, 0xa64b, 0x430, 0x301, 0x440, 0x457, 0x439, 0x3b, 0x43c, 0x430, 0x301, 0x440, 0x442, 0x44a, 0x3b, 0x430, -0x486, 0x43f, 0x440, 0x456, 0x301, 0x43b, 0x43b, 0x457, 0x439, 0x3b, 0x43c, 0x430, 0x301, 0x457, 0x439, 0x3b, 0x456, 0x486, 0xa64b, 0x301, -0x43d, 0x457, 0x439, 0x3b, 0x456, 0x486, 0xa64b, 0x301, 0x43b, 0x457, 0x439, 0x3b, 0x430, 0x486, 0x301, 0x475, 0x433, 0xa64b, 0x441, 0x442, -0x44a, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x435, 0x301, 0x43c, 0x432, 0x440, 0x457, 0x439, 0x3b, 0x47b, 0x486, 0x43a, 0x442, 0x461, 0x301, -0x432, 0x440, 0x457, 0x439, 0x3b, 0x43d, 0x43e, 0x435, 0x301, 0x43c, 0x432, 0x440, 0x457, 0x439, 0x3b, 0x434, 0x435, 0x43a, 0x435, 0x301, -0x43c, 0x432, 0x440, 0x457, 0x439, 0x3b, 0x406, 0x486, 0x3b, 0x424, 0x3b, 0x41c, 0x3b, 0x410, 0x486, 0x3b, 0x41c, 0x3b, 0x406, 0x486, -0x3b, 0x406, 0x486, 0x3b, 0x410, 0x486, 0x3b, 0x421, 0x3b, 0x47a, 0x486, 0x3b, 0x41d, 0x3b, 0x414, 0x3b, 0x456, 0x486, 0x430, 0x43d, -0x43d, 0xa64b, 0x430, 0x301, 0x440, 0x457, 0x430, 0x3b, 0x444, 0x435, 0x432, 0x440, 0xa64b, 0x430, 0x301, 0x440, 0x457, 0x430, 0x3b, 0x43c, -0x430, 0x301, 0x440, 0x442, 0x430, 0x3b, 0x430, 0x486, 0x43f, 0x440, 0x456, 0x301, 0x43b, 0x43b, 0x457, 0x430, 0x3b, 0x43c, 0x430, 0x301, -0x457, 0x430, 0x3b, 0x456, 0x486, 0xa64b, 0x301, 0x43d, 0x457, 0x430, 0x3b, 0x456, 0x486, 0xa64b, 0x301, 0x43b, 0x457, 0x430, 0x3b, 0x430, -0x486, 0x301, 0x475, 0x433, 0xa64b, 0x441, 0x442, 0x430, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x435, 0x301, 0x43c, 0x432, 0x440, 0x457, 0x430, -0x3b, 0x47b, 0x486, 0x43a, 0x442, 0x461, 0x301, 0x432, 0x440, 0x457, 0x430, 0x3b, 0x43d, 0x43e, 0x435, 0x301, 0x43c, 0x432, 0x440, 0x457, -0x430, 0x3b, 0x434, 0x435, 0x43a, 0x435, 0x301, 0x43c, 0x432, 0x440, 0x457, 0x430, 0x3b, 0x43, 0x69, 0x6f, 0x3b, 0x4c, 0x75, 0x69, -0x3b, 0x4c, 0x75, 0x73, 0x3b, 0x4d, 0x75, 0x75, 0x3b, 0x4c, 0x75, 0x6d, 0x3b, 0x4c, 0x75, 0x66, 0x3b, 0x4b, 0x61, 0x62, -0x3b, 0x4c, 0x75, 0x73, 0x68, 0x3b, 0x4c, 0x75, 0x74, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4b, 0x61, 0x73, 0x3b, 0x43, 0x69, -0x73, 0x3b, 0x43, 0x69, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x4c, 0xf9, 0x69, 0x73, 0x68, 0x69, 0x3b, 0x4c, 0x75, 0x73, 0xf2, -0x6c, 0x6f, 0x3b, 0x4d, 0xf9, 0x75, 0x79, 0xe0, 0x3b, 0x4c, 0x75, 0x6d, 0xf9, 0x6e, 0x67, 0xf9, 0x6c, 0xf9, 0x3b, 0x4c, -0x75, 0x66, 0x75, 0x69, 0x6d, 0x69, 0x3b, 0x4b, 0x61, 0x62, 0xe0, 0x6c, 0xe0, 0x73, 0x68, 0xec, 0x70, 0xf9, 0x3b, 0x4c, -0xf9, 0x73, 0x68, 0xec, 0x6b, 0xe0, 0x3b, 0x4c, 0x75, 0x74, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x6f, 0x3b, 0x4c, 0x75, 0x6e, -0x67, 0xf9, 0x64, 0x69, 0x3b, 0x4b, 0x61, 0x73, 0x77, 0xe8, 0x6b, 0xe8, 0x73, 0xe8, 0x3b, 0x43, 0x69, 0x73, 0x77, 0xe0, -0x3b, 0x43, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4b, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4c, -0x3b, 0x4b, 0x3b, 0x43, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0xe4, 0x65, 0x3b, 0x41, 0x62, 0x72, -0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x75, 0x67, 0x3b, 0x53, 0x65, 0x70, -0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x7a, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, -0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x4d, 0xe4, 0x65, 0x72, 0x7a, 0x3b, 0x41, 0x62, 0x72, 0xeb, 0x6c, 0x6c, -0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x75, 0x73, -0x74, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, -0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x7a, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, 0x61, -0x6e, 0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, 0x4d, 0xe4, 0x65, 0x2e, 0x3b, 0x41, 0x62, 0x72, 0x2e, 0x3b, 0x4d, 0x65, -0x65, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x2e, 0x3b, 0x53, 0x65, 0x70, -0x2e, 0x3b, 0x4f, 0x6b, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x65, 0x7a, 0x2e, 0x3b, 0x6e, 0xf9, 0x6d, -0x3b, 0x6b, 0x268, 0x7a, 0x3b, 0x74, 0x268, 0x64, 0x3b, 0x74, 0x61, 0x61, 0x3b, 0x73, 0x65, 0x65, 0x3b, 0x6e, 0x7a, 0x75, -0x3b, 0x64, 0x75, 0x6d, 0x3b, 0x66, 0x254, 0x65, 0x3b, 0x64, 0x7a, 0x75, 0x3b, 0x6c, 0x254, 0x6d, 0x3b, 0x6b, 0x61, 0x61, -0x3b, 0x66, 0x77, 0x6f, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x6e, 0xf9, 0x6d, 0x3b, 0x6e, 0x64, 0x7a, -0x254, 0x300, 0x14b, 0x254, 0x300, 0x6b, 0x197, 0x300, 0x7a, 0xf9, 0x294, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, -0x74, 0x197, 0x300, 0x64, 0x289, 0x300, 0x67, 0x68, 0xe0, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x74, 0x1ce, -0x61, 0x66, 0x289, 0x304, 0x67, 0x68, 0x101, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0xe8, 0x73, 0xe8, 0x65, 0x3b, 0x6e, -0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x6e, 0x7a, 0xf9, 0x67, 0x68, 0xf2, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, -0x254, 0x300, 0x64, 0xf9, 0x6d, 0x6c, 0x6f, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x6b, 0x77, 0xee, 0x66, -0x254, 0x300, 0x65, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x74, 0x197, 0x300, 0x66, 0x289, 0x300, 0x67, 0x68, -0xe0, 0x64, 0x7a, 0x75, 0x67, 0x68, 0xf9, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x67, 0x68, 0x1d4, 0x75, -0x77, 0x65, 0x6c, 0x254, 0x300, 0x6d, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x63, 0x68, 0x77, 0x61, 0x294, -0xe0, 0x6b, 0x61, 0x61, 0x20, 0x77, 0x6f, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0xe8, 0x66, 0x77, 0xf2, 0x6f, 0x3b, -0x6e, 0x3b, 0x6b, 0x3b, 0x74, 0x3b, 0x74, 0x3b, 0x73, 0x3b, 0x7a, 0x3b, 0x6b, 0x3b, 0x66, 0x3b, 0x64, 0x3b, 0x6c, 0x3b, -0x63, 0x3b, 0x66, 0x3b, 0x6b, 0x254, 0x6e, 0x3b, 0x6d, 0x61, 0x63, 0x3b, 0x6d, 0x61, 0x74, 0x3b, 0x6d, 0x74, 0x6f, 0x3b, -0x6d, 0x70, 0x75, 0x3b, 0x68, 0x69, 0x6c, 0x3b, 0x6e, 0x6a, 0x65, 0x3b, 0x68, 0x69, 0x6b, 0x3b, 0x64, 0x69, 0x70, 0x3b, -0x62, 0x69, 0x6f, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x6c, 0x69, 0x253, 0x3b, 0x4b, 0x254, 0x6e, 0x64, 0x254, 0x14b, 0x3b, 0x4d, -0xe0, 0x63, 0x25b, 0x302, 0x6c, 0x3b, 0x4d, 0xe0, 0x74, 0xf9, 0x6d, 0x62, 0x3b, 0x4d, 0xe0, 0x74, 0x6f, 0x70, 0x3b, 0x4d, -0x300, 0x70, 0x75, 0x79, 0x25b, 0x3b, 0x48, 0xec, 0x6c, 0xf2, 0x6e, 0x64, 0x25b, 0x300, 0x3b, 0x4e, 0x6a, 0xe8, 0x62, 0xe0, -0x3b, 0x48, 0xec, 0x6b, 0x61, 0x14b, 0x3b, 0x44, 0xec, 0x70, 0x254, 0x300, 0x73, 0x3b, 0x42, 0xec, 0xf2, 0xf4, 0x6d, 0x3b, -0x4d, 0xe0, 0x79, 0x25b, 0x73, 0xe8, 0x70, 0x3b, 0x4c, 0xec, 0x62, 0x75, 0x79, 0x20, 0x6c, 0x69, 0x20, 0x144, 0x79, 0xe8, -0x65, 0x3b, 0x6b, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x68, 0x3b, 0x6e, 0x3b, 0x68, 0x3b, 0x64, 0x3b, -0x62, 0x3b, 0x6d, 0x3b, 0x6c, 0x3b, 0x64, 0x69, 0x3b, 0x14b, 0x67, 0x254, 0x6e, 0x3b, 0x73, 0x254, 0x14b, 0x3b, 0x64, 0x69, -0x253, 0x3b, 0x65, 0x6d, 0x69, 0x3b, 0x65, 0x73, 0x254, 0x3b, 0x6d, 0x61, 0x64, 0x3b, 0x64, 0x69, 0x14b, 0x3b, 0x6e, 0x79, -0x25b, 0x74, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x74, 0x69, 0x6e, 0x3b, 0x65, 0x6c, 0xe1, 0x3b, 0x64, 0x69, 0x6d, 0x254, 0x301, -0x64, 0x69, 0x3b, 0x14b, 0x67, 0x254, 0x6e, 0x64, 0x25b, 0x3b, 0x73, 0x254, 0x14b, 0x25b, 0x3b, 0x64, 0x69, 0x253, 0xe1, 0x253, -0xe1, 0x3b, 0x65, 0x6d, 0x69, 0x61, 0x73, 0x65, 0x6c, 0x65, 0x3b, 0x65, 0x73, 0x254, 0x70, 0x25b, 0x73, 0x254, 0x70, 0x25b, -0x3b, 0x6d, 0x61, 0x64, 0x69, 0x253, 0x25b, 0x301, 0x64, 0xed, 0x253, 0x25b, 0x301, 0x3b, 0x64, 0x69, 0x14b, 0x67, 0x69, 0x6e, -0x64, 0x69, 0x3b, 0x6e, 0x79, 0x25b, 0x74, 0x25b, 0x6b, 0x69, 0x3b, 0x6d, 0x61, 0x79, 0xe9, 0x73, 0x25b, 0x301, 0x3b, 0x74, -0x69, 0x6e, 0xed, 0x6e, 0xed, 0x3b, 0x65, 0x6c, 0xe1, 0x14b, 0x67, 0x25b, 0x301, 0x3b, 0x64, 0x3b, 0x14b, 0x3b, 0x73, 0x3b, -0x64, 0x3b, 0x65, 0x3b, 0x65, 0x3b, 0x6d, 0x3b, 0x64, 0x3b, 0x6e, 0x3b, 0x6d, 0x3b, 0x74, 0x3b, 0x65, 0x3b, 0x53, 0x61, -0x3b, 0x46, 0x65, 0x3b, 0x4d, 0x61, 0x3b, 0x41, 0x62, 0x3b, 0x4d, 0x65, 0x3b, 0x53, 0x75, 0x3b, 0x53, 0xfa, 0x3b, 0x55, -0x74, 0x3b, 0x53, 0x65, 0x3b, 0x4f, 0x6b, 0x3b, 0x4e, 0x6f, 0x3b, 0x44, 0x65, 0x3b, 0x53, 0x61, 0x6e, 0x76, 0x69, 0x65, -0x3b, 0x46, 0xe9, 0x62, 0x69, 0x72, 0x69, 0x65, 0x3b, 0x4d, 0x61, 0x72, 0x73, 0x3b, 0x41, 0x62, 0x75, 0x72, 0x69, 0x6c, -0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x53, 0x75, 0x65, 0x14b, 0x3b, 0x53, 0xfa, 0x75, 0x79, 0x65, 0x65, 0x3b, 0x55, 0x74, 0x3b, -0x53, 0x65, 0x74, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x4e, 0x6f, -0x76, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x44, 0x69, 0x73, 0x61, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x53, 0x3b, 0x46, 0x3b, -0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x55, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, -0x6e, 0x67, 0x6f, 0x3b, 0x6e, 0x67, 0x62, 0x3b, 0x6e, 0x67, 0x6c, 0x3b, 0x6e, 0x67, 0x6e, 0x3b, 0x6e, 0x67, 0x74, 0x3b, -0x6e, 0x67, 0x73, 0x3b, 0x6e, 0x67, 0x7a, 0x3b, 0x6e, 0x67, 0x6d, 0x3b, 0x6e, 0x67, 0x65, 0x3b, 0x6e, 0x67, 0x61, 0x3b, -0x6e, 0x67, 0x61, 0x64, 0x3b, 0x6e, 0x67, 0x61, 0x62, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x6f, 0x73, 0xfa, 0x3b, 0x6e, -0x67, 0x254, 0x6e, 0x20, 0x62, 0x25b, 0x30c, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x6c, 0xe1, 0x6c, 0x61, 0x3b, 0x6e, 0x67, -0x254, 0x6e, 0x20, 0x6e, 0x79, 0x69, 0x6e, 0x61, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x74, 0xe1, 0x6e, 0x61, 0x3b, 0x6e, -0x67, 0x254, 0x6e, 0x20, 0x73, 0x61, 0x6d, 0x259, 0x6e, 0x61, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x7a, 0x61, 0x6d, 0x67, -0x62, 0xe1, 0x6c, 0x61, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x6d, 0x77, 0x6f, 0x6d, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, -0x65, 0x62, 0x75, 0x6c, 0xfa, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x61, 0x77, 0xf3, 0x6d, 0x3b, 0x6e, 0x67, 0x254, 0x6e, -0x20, 0x61, 0x77, 0xf3, 0x6d, 0x20, 0x61, 0x69, 0x20, 0x64, 0x7a, 0x69, 0xe1, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x61, -0x77, 0xf3, 0x6d, 0x20, 0x61, 0x69, 0x20, 0x62, 0x25b, 0x30c, 0x3b, 0x6f, 0x3b, 0x62, 0x3b, 0x6c, 0x3b, 0x6e, 0x3b, 0x74, -0x3b, 0x73, 0x3b, 0x7a, 0x3b, 0x6d, 0x3b, 0x65, 0x3b, 0x61, 0x3b, 0x64, 0x3b, 0x62, 0x3b, 0x14b, 0x31, 0x3b, 0x14b, 0x32, -0x3b, 0x14b, 0x33, 0x3b, 0x14b, 0x34, 0x3b, 0x14b, 0x35, 0x3b, 0x14b, 0x36, 0x3b, 0x14b, 0x37, 0x3b, 0x14b, 0x38, 0x3b, 0x14b, -0x39, 0x3b, 0x14b, 0x31, 0x30, 0x3b, 0x14b, 0x31, 0x31, 0x3b, 0x14b, 0x31, 0x32, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, -0x20, 0x6e, 0x74, 0x254, 0x301, 0x6e, 0x74, 0x254, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x62, 0x25b, -0x301, 0x25b, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x72, 0xe1, 0xe1, 0x3b, 0x14b, 0x77, 0xed, 0xed, -0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x6e, 0x69, 0x6e, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x74, 0xe1, -0x61, 0x6e, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x74, 0xe1, 0x61, 0x66, 0x254, 0x6b, 0x3b, 0x14b, -0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x74, 0xe1, 0x61, 0x62, 0x25b, 0x25b, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, -0x61, 0x6b, 0x1dd, 0x20, 0x74, 0xe1, 0x61, 0x72, 0x61, 0x61, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, -0x74, 0xe1, 0x61, 0x6e, 0x69, 0x6e, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x6e, 0x74, 0x25b, 0x6b, -0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x6e, 0x74, 0x25b, 0x6b, 0x20, 0x64, 0x69, 0x20, 0x62, 0x254, -0x301, 0x6b, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x6e, 0x74, 0x25b, 0x6b, 0x20, 0x64, 0x69, 0x20, -0x62, 0x25b, 0x301, 0x25b, 0x3b, 0x4b, 0x77, 0x61, 0x3b, 0x55, 0x6e, 0x61, 0x3b, 0x52, 0x61, 0x72, 0x3b, 0x43, 0x68, 0x65, -0x3b, 0x54, 0x68, 0x61, 0x3b, 0x4d, 0x6f, 0x63, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4e, 0x61, 0x6e, 0x3b, 0x54, 0x69, 0x73, -0x3b, 0x4b, 0x75, 0x6d, 0x3b, 0x4d, 0x6f, 0x6a, 0x3b, 0x59, 0x65, 0x6c, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, -0x6f, 0x20, 0x6b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x75, 0x6e, -0x61, 0x79, 0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x75, 0x6e, 0x65, 0x72, 0x61, -0x72, 0x75, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x75, 0x6e, 0x65, 0x63, 0x68, 0x65, 0x73, 0x68, -0x65, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x75, 0x6e, 0x65, 0x74, 0x68, 0x61, 0x6e, 0x75, 0x3b, -0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x75, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x6f, -0x63, 0x68, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x73, 0x61, 0x62, 0x61, 0x3b, 0x4d, 0x77, -0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x6e, 0x61, 0x6e, 0x65, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, -0x20, 0x74, 0x69, 0x73, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x6b, 0x75, 0x6d, 0x69, 0x3b, -0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x6f, 0x6a, -0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x79, -0x65, 0x6c, 0x2019, 0x6c, 0x69, 0x3b, 0x4b, 0x3b, 0x55, 0x3b, 0x52, 0x3b, 0x43, 0x3b, 0x54, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, -0x4e, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x59, 0x3b, 0x46, 0x4c, 0x4f, 0x3b, 0x43, 0x4c, 0x41, 0x3b, 0x43, 0x4b, -0x49, 0x3b, 0x46, 0x4d, 0x46, 0x3b, 0x4d, 0x41, 0x44, 0x3b, 0x4d, 0x42, 0x49, 0x3b, 0x4d, 0x4c, 0x49, 0x3b, 0x4d, 0x41, -0x4d, 0x3b, 0x46, 0x44, 0x45, 0x3b, 0x46, 0x4d, 0x55, 0x3b, 0x46, 0x47, 0x57, 0x3b, 0x46, 0x59, 0x55, 0x3b, 0x46, 0x129, -0x69, 0x20, 0x4c, 0x6f, 0x6f, 0x3b, 0x43, 0x6f, 0x6b, 0x63, 0x77, 0x61, 0x6b, 0x6c, 0x61, 0x14b, 0x6e, 0x65, 0x3b, 0x43, -0x6f, 0x6b, 0x63, 0x77, 0x61, 0x6b, 0x6c, 0x69, 0x69, 0x3b, 0x46, 0x129, 0x69, 0x20, 0x4d, 0x61, 0x72, 0x66, 0x6f, 0x6f, -0x3b, 0x4d, 0x61, 0x64, 0x1dd, 0x1dd, 0x75, 0x75, 0x74, 0x1dd, 0x62, 0x69, 0x6a, 0x61, 0x14b, 0x3b, 0x4d, 0x61, 0x6d, 0x1dd, -0x14b, 0x67, 0x77, 0xe3, 0x61, 0x66, 0x61, 0x68, 0x62, 0x69, 0x69, 0x3b, 0x4d, 0x61, 0x6d, 0x1dd, 0x14b, 0x67, 0x77, 0xe3, -0x61, 0x6c, 0x69, 0x69, 0x3b, 0x4d, 0x61, 0x64, 0x1dd, 0x6d, 0x62, 0x69, 0x69, 0x3b, 0x46, 0x129, 0x69, 0x20, 0x44, 0x1dd, -0x253, 0x6c, 0x69, 0x69, 0x3b, 0x46, 0x129, 0x69, 0x20, 0x4d, 0x75, 0x6e, 0x64, 0x61, 0x14b, 0x3b, 0x46, 0x129, 0x69, 0x20, -0x47, 0x77, 0x61, 0x68, 0x6c, 0x6c, 0x65, 0x3b, 0x46, 0x129, 0x69, 0x20, 0x59, 0x75, 0x72, 0x75, 0x3b, 0x4f, 0x3b, 0x41, -0x3b, 0x49, 0x3b, 0x46, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x55, 0x3b, 0x57, 0x3b, 0x59, -0x3b, 0x6e, 0x67, 0x31, 0x3b, 0x6e, 0x67, 0x32, 0x3b, 0x6e, 0x67, 0x33, 0x3b, 0x6e, 0x67, 0x34, 0x3b, 0x6e, 0x67, 0x35, -0x3b, 0x6e, 0x67, 0x36, 0x3b, 0x6e, 0x67, 0x37, 0x3b, 0x6e, 0x67, 0x38, 0x3b, 0x6e, 0x67, 0x39, 0x3b, 0x6e, 0x67, 0x31, -0x30, 0x3b, 0x6e, 0x67, 0x31, 0x31, 0x3b, 0x6b, 0x72, 0x69, 0x73, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x6d, 0x61, -0x74, 0xe1, 0x68, 0x72, 0x61, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x144, 0x6d, 0x62, 0x61, 0x3b, 0x6e, 0x67, 0x77, -0x25b, 0x6e, 0x20, 0x144, 0x6c, 0x61, 0x6c, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x144, 0x6e, 0x61, 0x3b, 0x6e, 0x67, -0x77, 0x25b, 0x6e, 0x20, 0x144, 0x74, 0x61, 0x6e, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x144, 0x74, 0x75, 0xf3, 0x3b, -0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x68, 0x25b, 0x6d, 0x62, 0x75, 0x25b, 0x72, 0xed, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, -0x20, 0x6c, 0x254, 0x6d, 0x62, 0x69, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x72, 0x25b, 0x62, 0x76, 0x75, 0xe2, 0x3b, -0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x77, 0x75, 0x6d, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x77, 0x75, 0x6d, 0x20, -0x6e, 0x61, 0x76, 0x1d4, 0x72, 0x3b, 0x6b, 0x72, 0xed, 0x73, 0x69, 0x6d, 0x69, 0x6e, 0x3b, 0x54, 0x69, 0x6f, 0x70, 0x3b, -0x50, 0x25b, 0x74, 0x3b, 0x44, 0x75, 0x254, 0x331, 0x254, 0x331, 0x3b, 0x47, 0x75, 0x61, 0x6b, 0x3b, 0x44, 0x75, 0xe4, 0x3b, -0x4b, 0x6f, 0x72, 0x3b, 0x50, 0x61, 0x79, 0x3b, 0x54, 0x68, 0x6f, 0x6f, 0x3b, 0x54, 0x25b, 0x25b, 0x3b, 0x4c, 0x61, 0x61, -0x3b, 0x4b, 0x75, 0x72, 0x3b, 0x54, 0x69, 0x64, 0x3b, 0x54, 0x69, 0x6f, 0x70, 0x20, 0x74, 0x68, 0x61, 0x72, 0x20, 0x70, -0x25b, 0x74, 0x3b, 0x50, 0x25b, 0x74, 0x3b, 0x44, 0x75, 0x254, 0x331, 0x254, 0x331, 0x14b, 0x3b, 0x47, 0x75, 0x61, 0x6b, 0x3b, -0x44, 0x75, 0xe4, 0x74, 0x3b, 0x4b, 0x6f, 0x72, 0x6e, 0x79, 0x6f, 0x6f, 0x74, 0x3b, 0x50, 0x61, 0x79, 0x20, 0x79, 0x69, -0x65, 0x331, 0x74, 0x6e, 0x69, 0x3b, 0x54, 0x68, 0x6f, 0x331, 0x6f, 0x331, 0x72, 0x3b, 0x54, 0x25b, 0x25b, 0x72, 0x3b, 0x4c, -0x61, 0x61, 0x74, 0x68, 0x3b, 0x4b, 0x75, 0x72, 0x3b, 0x54, 0x69, 0x6f, 0x331, 0x70, 0x20, 0x69, 0x6e, 0x20, 0x64, 0x69, -0x331, 0x69, 0x331, 0x74, 0x3b, 0x54, 0x3b, 0x50, 0x3b, 0x44, 0x3b, 0x47, 0x3b, 0x44, 0x3b, 0x4b, 0x3b, 0x50, 0x3b, 0x54, -0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x422, 0x43e, 0x445, 0x441, 0x3b, 0x41e, 0x43b, 0x443, 0x43d, 0x3b, 0x41a, -0x43b, 0x43d, 0x3b, 0x41c, 0x441, 0x443, 0x3b, 0x42b, 0x430, 0x43c, 0x3b, 0x411, 0x44d, 0x441, 0x3b, 0x41e, 0x442, 0x439, 0x3b, 0x410, -0x442, 0x440, 0x3b, 0x411, 0x43b, 0x495, 0x3b, 0x410, 0x43b, 0x442, 0x3b, 0x421, 0x44d, 0x442, 0x3b, 0x410, 0x445, 0x441, 0x3b, 0x442, -0x43e, 0x445, 0x441, 0x443, 0x43d, 0x43d, 0x44c, 0x443, 0x3b, 0x43e, 0x43b, 0x443, 0x43d, 0x43d, 0x44c, 0x443, 0x3b, 0x43a, 0x443, 0x43b, -0x443, 0x43d, 0x20, 0x442, 0x443, 0x442, 0x430, 0x440, 0x3b, 0x43c, 0x443, 0x443, 0x441, 0x20, 0x443, 0x441, 0x442, 0x430, 0x440, 0x3b, -0x44b, 0x430, 0x43c, 0x20, 0x44b, 0x439, 0x430, 0x3b, 0x431, 0x44d, 0x441, 0x20, 0x44b, 0x439, 0x430, 0x3b, 0x43e, 0x442, 0x20, 0x44b, -0x439, 0x430, 0x3b, 0x430, 0x442, 0x44b, 0x440, 0x434, 0x44c, 0x44b, 0x445, 0x20, 0x44b, 0x439, 0x430, 0x3b, 0x431, 0x430, 0x43b, 0x430, -0x495, 0x430, 0x43d, 0x20, 0x44b, 0x439, 0x430, 0x3b, 0x430, 0x43b, 0x442, 0x44b, 0x43d, 0x43d, 0x44c, 0x44b, 0x3b, 0x441, 0x44d, 0x442, -0x438, 0x43d, 0x43d, 0x44c, 0x438, 0x3b, 0x430, 0x445, 0x441, 0x44b, 0x43d, 0x43d, 0x44c, 0x44b, 0x3b, 0x422, 0x3b, 0x41e, 0x3b, 0x41a, -0x3b, 0x41c, 0x3b, 0x42b, 0x3b, 0x411, 0x3b, 0x41e, 0x3b, 0x410, 0x3b, 0x411, 0x3b, 0x410, 0x3b, 0x421, 0x3b, 0x410, 0x3b, 0x422, -0x43e, 0x445, 0x441, 0x443, 0x43d, 0x43d, 0x44c, 0x443, 0x3b, 0x41e, 0x43b, 0x443, 0x43d, 0x43d, 0x44c, 0x443, 0x3b, 0x41a, 0x443, 0x43b, -0x443, 0x43d, 0x20, 0x442, 0x443, 0x442, 0x430, 0x440, 0x3b, 0x41c, 0x443, 0x443, 0x441, 0x20, 0x443, 0x441, 0x442, 0x430, 0x440, 0x3b, -0x42b, 0x430, 0x43c, 0x20, 0x44b, 0x439, 0x44b, 0x43d, 0x3b, 0x411, 0x44d, 0x441, 0x20, 0x44b, 0x439, 0x44b, 0x43d, 0x3b, 0x41e, 0x442, -0x20, 0x44b, 0x439, 0x44b, 0x43d, 0x3b, 0x410, 0x442, 0x44b, 0x440, 0x434, 0x44c, 0x44b, 0x445, 0x20, 0x44b, 0x439, 0x44b, 0x43d, 0x3b, -0x411, 0x430, 0x43b, 0x430, 0x495, 0x430, 0x43d, 0x20, 0x44b, 0x439, 0x44b, 0x43d, 0x3b, 0x410, 0x43b, 0x442, 0x44b, 0x43d, 0x43d, 0x44c, -0x44b, 0x3b, 0x421, 0x44d, 0x442, 0x438, 0x43d, 0x43d, 0x44c, 0x438, 0x3b, 0x430, 0x445, 0x441, 0x44b, 0x43d, 0x43d, 0x44c, 0x44b, 0x3b, -0x4d, 0x75, 0x70, 0x3b, 0x4d, 0x77, 0x69, 0x3b, 0x4d, 0x73, 0x68, 0x3b, 0x4d, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x67, 0x3b, -0x4d, 0x75, 0x6a, 0x3b, 0x4d, 0x73, 0x70, 0x3b, 0x4d, 0x70, 0x67, 0x3b, 0x4d, 0x79, 0x65, 0x3b, 0x4d, 0x6f, 0x6b, 0x3b, -0x4d, 0x75, 0x73, 0x3b, 0x4d, 0x75, 0x68, 0x3b, 0x4d, 0x75, 0x70, 0x61, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x6c, 0x77, 0x61, -0x3b, 0x4d, 0x77, 0x69, 0x74, 0x6f, 0x70, 0x65, 0x3b, 0x4d, 0x75, 0x73, 0x68, 0x65, 0x6e, 0x64, 0x65, 0x3b, 0x4d, 0x75, -0x6e, 0x79, 0x69, 0x3b, 0x4d, 0x75, 0x73, 0x68, 0x65, 0x6e, 0x64, 0x65, 0x20, 0x4d, 0x61, 0x67, 0x61, 0x6c, 0x69, 0x3b, -0x4d, 0x75, 0x6a, 0x69, 0x6d, 0x62, 0x69, 0x3b, 0x4d, 0x75, 0x73, 0x68, 0x69, 0x70, 0x65, 0x70, 0x6f, 0x3b, 0x4d, 0x75, -0x70, 0x75, 0x67, 0x75, 0x74, 0x6f, 0x3b, 0x4d, 0x75, 0x6e, 0x79, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x4d, 0x6f, 0x6b, 0x68, -0x75, 0x3b, 0x4d, 0x75, 0x73, 0x6f, 0x6e, 0x67, 0x61, 0x6e, 0x64, 0x65, 0x6d, 0x62, 0x77, 0x65, 0x3b, 0x4d, 0x75, 0x68, -0x61, 0x61, 0x6e, 0x6f, 0x3b, 0xa5a8, 0xa595, 0xa51e, 0x3b, 0xa552, 0xa561, 0x3b, 0xa57e, 0xa5ba, 0x3b, 0xa5a2, 0xa595, 0x3b, 0xa591, 0xa571, -0x3b, 0xa5b1, 0xa60b, 0x3b, 0xa5b1, 0xa55e, 0x3b, 0xa5db, 0xa515, 0x3b, 0xa562, 0xa54c, 0x3b, 0xa56d, 0xa583, 0x3b, 0xa51e, 0xa60b, 0x3b, 0xa5a8, -0xa595, 0xa5cf, 0x3b, 0xa5a8, 0xa595, 0x20, 0xa56a, 0xa574, 0x20, 0xa51e, 0xa500, 0xa56e, 0xa54a, 0x3b, 0xa552, 0xa561, 0xa59d, 0xa595, 0x3b, 0xa57e, -0xa5ba, 0x3b, 0xa5a2, 0xa595, 0x3b, 0xa591, 0xa571, 0x3b, 0xa5b1, 0xa60b, 0x3b, 0xa5b1, 0xa55e, 0xa524, 0x3b, 0xa5db, 0xa515, 0x3b, 0xa562, 0xa54c, -0x3b, 0xa56d, 0xa583, 0x3b, 0xa51e, 0xa60b, 0xa554, 0xa57f, 0x20, 0xa578, 0xa583, 0xa5cf, 0x3b, 0xa5a8, 0xa595, 0x20, 0xa56a, 0xa574, 0x20, 0xa5cf, -0xa5ba, 0xa56e, 0xa54a, 0x3b, 0x4a, 0x65, 0x6e, 0x3b, 0x48, 0x6f, 0x72, 0x3b, 0x4d, 0xe4, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, -0x4d, 0x65, 0x69, 0x3b, 0x42, 0x72, 0xe1, 0x3b, 0x48, 0x65, 0x69, 0x3b, 0xd6, 0x69, 0x67, 0x3b, 0x48, 0x65, 0x72, 0x3b, -0x57, 0xed, 0x6d, 0x3b, 0x57, 0x69, 0x6e, 0x3b, 0x43, 0x68, 0x72, 0x3b, 0x4a, 0x65, 0x6e, 0x6e, 0x65, 0x72, 0x3b, 0x48, -0x6f, 0x72, 0x6e, 0x69, 0x67, 0x3b, 0x4d, 0xe4, 0x72, 0x7a, 0x65, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x6c, 0x6c, 0x65, 0x3b, -0x4d, 0x65, 0x69, 0x6a, 0x65, 0x3b, 0x42, 0x72, 0xe1, 0x10d, 0x65, 0x74, 0x3b, 0x48, 0x65, 0x69, 0x77, 0x65, 0x74, 0x3b, -0xd6, 0x69, 0x67, 0x161, 0x74, 0x65, 0x3b, 0x48, 0x65, 0x72, 0x62, 0x161, 0x74, 0x6d, 0xe1, 0x6e, 0x65, 0x74, 0x3b, 0x57, -0xed, 0x6d, 0xe1, 0x6e, 0x65, 0x74, 0x3b, 0x57, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0xe1, 0x6e, 0x65, 0x74, 0x3b, 0x43, -0x68, 0x72, 0x69, 0x161, 0x74, 0x6d, 0xe1, 0x6e, 0x65, 0x74, 0x3b, 0x4a, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, -0x3b, 0x42, 0x3b, 0x48, 0x3b, 0xd6, 0x3b, 0x48, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x43, 0x3b, 0x6f, 0x2e, 0x31, 0x3b, 0x6f, -0x2e, 0x32, 0x3b, 0x6f, 0x2e, 0x33, 0x3b, 0x6f, 0x2e, 0x34, 0x3b, 0x6f, 0x2e, 0x35, 0x3b, 0x6f, 0x2e, 0x36, 0x3b, 0x6f, -0x2e, 0x37, 0x3b, 0x6f, 0x2e, 0x38, 0x3b, 0x6f, 0x2e, 0x39, 0x3b, 0x6f, 0x2e, 0x31, 0x30, 0x3b, 0x6f, 0x2e, 0x31, 0x31, -0x3b, 0x6f, 0x2e, 0x31, 0x32, 0x3b, 0x70, 0x69, 0x6b, 0xed, 0x74, 0xed, 0x6b, 0xed, 0x74, 0x69, 0x65, 0x2c, 0x20, 0x6f, -0xf3, 0x6c, 0xed, 0x20, 0xfa, 0x20, 0x6b, 0x75, 0x74, 0xfa, 0x61, 0x6e, 0x3b, 0x73, 0x69, 0x25b, 0x79, 0x25b, 0x301, 0x2c, -0x20, 0x6f, 0xf3, 0x6c, 0x69, 0x20, 0xfa, 0x20, 0x6b, 0xe1, 0x6e, 0x64, 0xed, 0x25b, 0x3b, 0x254, 0x6e, 0x73, 0xfa, 0x6d, -0x62, 0x254, 0x6c, 0x2c, 0x20, 0x6f, 0xf3, 0x6c, 0x69, 0x20, 0xfa, 0x20, 0x6b, 0xe1, 0x74, 0xe1, 0x74, 0xfa, 0x25b, 0x3b, -0x6d, 0x65, 0x73, 0x69, 0x14b, 0x2c, 0x20, 0x6f, 0xf3, 0x6c, 0x69, 0x20, 0xfa, 0x20, 0x6b, 0xe9, 0x6e, 0x69, 0x65, 0x3b, -0x65, 0x6e, 0x73, 0x69, 0x6c, 0x2c, 0x20, 0x6f, 0xf3, 0x6c, 0x69, 0x20, 0xfa, 0x20, 0x6b, 0xe1, 0x74, 0xe1, 0x6e, 0x75, -0x25b, 0x3b, 0x254, 0x73, 0x254, 0x6e, 0x3b, 0x65, 0x66, 0x75, 0x74, 0x65, 0x3b, 0x70, 0x69, 0x73, 0x75, 0x79, 0xfa, 0x3b, -0x69, 0x6d, 0x25b, 0x14b, 0x20, 0x69, 0x20, 0x70, 0x75, 0x254, 0x73, 0x3b, 0x69, 0x6d, 0x25b, 0x14b, 0x20, 0x69, 0x20, 0x70, -0x75, 0x74, 0xfa, 0x6b, 0x2c, 0x6f, 0xf3, 0x6c, 0x69, 0x20, 0xfa, 0x20, 0x6b, 0xe1, 0x74, 0xed, 0x25b, 0x3b, 0x6d, 0x61, -0x6b, 0x61, 0x6e, 0x64, 0x69, 0x6b, 0x25b, 0x3b, 0x70, 0x69, 0x6c, 0x254, 0x6e, 0x64, 0x254, 0x301, 0x3b, 0x58, 0x69, 0x6e, -0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x58, 0x75, 0x6e, -0x3b, 0x58, 0x6e, 0x74, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x63, 0x68, 0x3b, 0x50, 0x61, 0x79, -0x3b, 0x41, 0x76, 0x69, 0x3b, 0x78, 0x69, 0x6e, 0x65, 0x72, 0x75, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x65, 0x72, 0x75, 0x3b, -0x6d, 0x61, 0x72, 0x7a, 0x75, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x75, 0x3b, 0x78, 0x75, 0x6e, -0x75, 0x3b, 0x78, 0x75, 0x6e, 0x65, 0x74, 0x75, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x75, 0x3b, 0x73, 0x65, 0x74, 0x69, -0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x63, 0x68, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x70, 0x61, 0x79, 0x61, 0x72, 0x65, -0x73, 0x3b, 0x61, 0x76, 0x69, 0x65, 0x6e, 0x74, 0x75, 0x3b, 0x58, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, -0x58, 0x3b, 0x58, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x50, 0x3b, 0x41, 0x3b, 0x78, 0x69, 0x6e, 0x3b, 0x66, 0x65, -0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x62, 0x72, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x78, 0x75, 0x6e, 0x3b, 0x78, 0x6e, -0x74, 0x3b, 0x61, 0x67, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x3b, 0x6f, 0x63, 0x68, 0x3b, 0x70, 0x61, 0x79, 0x3b, 0x61, 0x76, -0x69, 0x3b, 0x64, 0x65, 0x20, 0x78, 0x69, 0x6e, 0x65, 0x72, 0x75, 0x3b, 0x64, 0x65, 0x20, 0x66, 0x65, 0x62, 0x72, 0x65, -0x72, 0x75, 0x3b, 0x64, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x7a, 0x75, 0x3b, 0x64, 0x2019, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, -0x64, 0x65, 0x20, 0x6d, 0x61, 0x79, 0x75, 0x3b, 0x64, 0x65, 0x20, 0x78, 0x75, 0x6e, 0x75, 0x3b, 0x64, 0x65, 0x20, 0x78, -0x75, 0x6e, 0x65, 0x74, 0x75, 0x3b, 0x64, 0x2019, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x75, 0x3b, 0x64, 0x65, 0x20, 0x73, 0x65, -0x74, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x2019, 0x6f, 0x63, 0x68, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x65, -0x20, 0x70, 0x61, 0x79, 0x61, 0x72, 0x65, 0x73, 0x3b, 0x64, 0x2019, 0x61, 0x76, 0x69, 0x65, 0x6e, 0x74, 0x75, 0x3b, 0x4e, -0x64, 0x75, 0x14b, 0x6d, 0x62, 0x69, 0x20, 0x53, 0x61, 0x14b, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x50, 0x25b, 0x301, -0x70, 0xe1, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x50, 0x25b, 0x301, 0x74, 0xe1, 0x74, 0x3b, 0x50, 0x25b, 0x73, 0x61, -0x14b, 0x20, 0x50, 0x25b, 0x301, 0x6e, 0x25b, 0x301, 0x6b, 0x77, 0x61, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x50, 0x61, -0x74, 0x61, 0x61, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x50, 0x25b, 0x301, 0x6e, 0x25b, 0x301, 0x6e, 0x74, 0xfa, 0x6b, -0xfa, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x53, 0x61, 0x61, 0x6d, 0x62, 0xe1, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, -0x20, 0x50, 0x25b, 0x301, 0x6e, 0x25b, 0x301, 0x66, 0x254, 0x6d, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x50, 0x25b, 0x301, -0x6e, 0x25b, 0x301, 0x70, 0x66, 0xfa, 0xa78b, 0xfa, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x4e, 0x25b, 0x67, 0x25b, 0x301, -0x6d, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x4e, 0x74, 0x73, 0x254, 0x30c, 0x70, 0x6d, 0x254, 0x301, 0x3b, 0x50, 0x25b, -0x73, 0x61, 0x14b, 0x20, 0x4e, 0x74, 0x73, 0x254, 0x30c, 0x70, 0x70, 0xe1, 0x3b, 0x70, 0x61, 0x6d, 0x62, 0x61, 0x3b, 0x77, -0x61, 0x6e, 0x6a, 0x61, 0x3b, 0x6d, 0x62, 0x69, 0x79, 0x254, 0x20, 0x6d, 0x25b, 0x6e, 0x64, 0x6f, 0x14b, 0x67, 0x254, 0x3b, -0x4e, 0x79, 0x254, 0x6c, 0x254, 0x6d, 0x62, 0x254, 0x14b, 0x67, 0x254, 0x3b, 0x4d, 0x254, 0x6e, 0x254, 0x20, 0x14b, 0x67, 0x62, -0x61, 0x6e, 0x6a, 0x61, 0x3b, 0x4e, 0x79, 0x61, 0x14b, 0x67, 0x77, 0x25b, 0x20, 0x14b, 0x67, 0x62, 0x61, 0x6e, 0x6a, 0x61, -0x3b, 0x6b, 0x75, 0x14b, 0x67, 0x77, 0x25b, 0x3b, 0x66, 0x25b, 0x3b, 0x6e, 0x6a, 0x61, 0x70, 0x69, 0x3b, 0x6e, 0x79, 0x75, -0x6b, 0x75, 0x6c, 0x3b, 0x4d, 0x31, 0x31, 0x3b, 0x253, 0x75, 0x6c, 0x253, 0x75, 0x73, 0x25b, 0x3b, 0x6d, 0x62, 0x65, 0x67, -0x74, 0x75, 0x67, 0x3b, 0x69, 0x6d, 0x65, 0x67, 0x20, 0xe0, 0x62, 0xf9, 0x62, 0xec, 0x3b, 0x69, 0x6d, 0x65, 0x67, 0x20, -0x6d, 0x62, 0x259, 0x14b, 0x63, 0x68, 0x75, 0x62, 0x69, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6e, 0x67, 0x77, 0x259, 0x300, -0x74, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x66, 0x6f, 0x67, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x69, 0x63, 0x68, 0x69, -0x69, 0x62, 0x254, 0x64, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0xe0, 0x64, 0xf9, 0x6d, 0x62, 0x259, 0x300, 0x14b, 0x3b, 0x69, -0x6d, 0x259, 0x67, 0x20, 0x69, 0x63, 0x68, 0x69, 0x6b, 0x61, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6b, 0x75, 0x64, 0x3b, -0x69, 0x6d, 0x259, 0x67, 0x20, 0x74, 0xe8, 0x73, 0x69, 0x2bc, 0x65, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x7a, 0xf2, 0x3b, -0x69, 0x6d, 0x259, 0x67, 0x20, 0x6b, 0x72, 0x69, 0x7a, 0x6d, 0x65, 0x64, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6d, 0x62, -0x65, 0x67, 0x74, 0x75, 0x67, 0x3b, 0x69, 0x6d, 0x65, 0x67, 0x20, 0xe0, 0x62, 0xf9, 0x62, 0xec, 0x3b, 0x69, 0x6d, 0x65, -0x67, 0x20, 0x6d, 0x62, 0x259, 0x14b, 0x63, 0x68, 0x75, 0x62, 0x69, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6e, 0x67, 0x77, -0x259, 0x300, 0x74, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x66, 0x6f, 0x67, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x69, 0x63, -0x68, 0x69, 0x69, 0x62, 0x254, 0x64, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0xe0, 0x64, 0xf9, 0x6d, 0x62, 0x259, 0x300, 0x14b, -0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x69, 0x63, 0x68, 0x69, 0x6b, 0x61, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6b, 0x75, -0x64, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x74, 0xe8, 0x73, 0x69, 0x2bc, 0x65, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x7a, -0xf2, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6b, 0x72, 0x69, 0x7a, 0x6d, 0x65, 0x64, 0x3b, 0x4d, 0x31, 0x3b, 0x41, 0x32, -0x3b, 0x4d, 0x33, 0x3b, 0x4e, 0x34, 0x3b, 0x46, 0x35, 0x3b, 0x49, 0x36, 0x3b, 0x41, 0x37, 0x3b, 0x49, 0x38, 0x3b, 0x4b, -0x39, 0x3b, 0x31, 0x30, 0x3b, 0x31, 0x31, 0x3b, 0x31, 0x32, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x74, 0x73, 0x65, 0x74, 0x73, -0x25b, 0x300, 0x25b, 0x20, 0x6c, 0xf9, 0x6d, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x6b, 0xe0, 0x67, 0x20, 0x6e, 0x67, 0x77, 0xf3, -0x14b, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x6c, 0x65, 0x70, 0x79, 0xe8, 0x20, 0x73, 0x68, 0xfa, 0x6d, 0x3b, 0x73, 0x61, 0x14b, -0x20, 0x63, 0xff, 0xf3, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x74, 0x73, 0x25b, 0x300, 0x25b, 0x20, 0x63, 0xff, 0xf3, 0x3b, 0x73, -0x61, 0x14b, 0x20, 0x6e, 0x6a, 0xff, 0x6f, 0x6c, 0xe1, 0x2bc, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x74, 0x79, 0x25b, 0x300, 0x62, -0x20, 0x74, 0x79, 0x25b, 0x300, 0x62, 0x20, 0x6d, 0x62, 0x289, 0x300, 0x14b, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x6d, 0x62, 0x289, -0x300, 0x14b, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x6e, 0x67, 0x77, 0x254, 0x300, 0x2bc, 0x20, 0x6d, 0x62, 0xff, 0x25b, 0x3b, 0x73, -0x61, 0x14b, 0x20, 0x74, 0xe0, 0x14b, 0x61, 0x20, 0x74, 0x73, 0x65, 0x74, 0x73, 0xe1, 0x2bc, 0x3b, 0x73, 0x61, 0x14b, 0x20, -0x6d, 0x65, 0x6a, 0x77, 0x6f, 0x14b, 0xf3, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x6c, 0xf9, 0x6d, 0x3b, 0x99c, 0x9be, 0x9a8, 0x9c1, -0x3b, 0x9ab, 0x9c7, 0x9ac, 0x9cd, 0x9b0, 0x9c1, 0x3b, 0x9ae, 0x9be, 0x9b0, 0x3b, 0x98f, 0x9aa, 0x9cd, 0x9b0, 0x9bf, 0x3b, 0x9ae, 0x9c7, -0x3b, 0x99c, 0x9c1, 0x9a8, 0x3b, 0x99c, 0x9c1, 0x9b2, 0x9be, 0x3b, 0x986, 0x997, 0x3b, 0x9b8, 0x9c7, 0x9aa, 0x9cd, 0x99f, 0x3b, 0x993, -0x995, 0x9cd, 0x99f, 0x9cb, 0x3b, 0x9a8, 0x9ad, 0x9c7, 0x3b, 0x9a1, 0x9bf, 0x9b8, 0x9c7, 0x3b, 0x99c, 0x9be, 0x9a8, 0x9c1, 0x9f1, 0x9be, -0x9b0, 0x9bf, 0x3b, 0x9ab, 0x9c7, 0x9ac, 0x9cd, 0x9b0, 0x9c1, 0x9f1, 0x9be, 0x9b0, 0x9bf, 0x3b, 0x9ae, 0x9be, 0x9b0, 0x9cd, 0x99a, 0x3b, -0x98f, 0x9aa, 0x9cd, 0x9b0, 0x9bf, 0x9b2, 0x3b, 0x9ae, 0x9c7, 0x3b, 0x99c, 0x9c1, 0x9a8, 0x3b, 0x99c, 0x9c1, 0x9b2, 0x9be, 0x987, 0x3b, -0x986, 0x997, 0x9b8, 0x9cd, 0x99f, 0x3b, 0x9b8, 0x9c7, 0x9aa, 0x9cd, 0x99f, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, 0x993, 0x995, 0x9cd, -0x99f, 0x9cb, 0x9ac, 0x9b0, 0x3b, 0x9a8, 0x9ad, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, 0x9a1, 0x9bf, 0x9b8, 0x9c7, 0x9ae, 0x9cd, 0x9ac, -0x9b0, 0x3b, 0x99c, 0x9be, 0x3b, 0x9ab, 0x9c7, 0x3b, 0x9ae, 0x9be, 0x9b0, 0x3b, 0x98f, 0x9aa, 0x3b, 0x9ae, 0x9c7, 0x3b, 0x99c, 0x9c1, -0x9a8, 0x3b, 0x99c, 0x9c1, 0x9b2, 0x3b, 0x986, 0x3b, 0x9b8, 0x9c7, 0x3b, 0x993, 0x3b, 0x9a8, 0x9ac, 0x3b, 0x9a1, 0x9bf, 0x3b, 0x99c, +0x65, 0x73, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x63, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, +0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x70, 0x3b, 0x4f, +0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x63, 0x3b, 0x52, 0x61, 0x72, 0x3b, 0x4d, 0x75, 0x6b, 0x3b, 0x4b, +0x77, 0x61, 0x3b, 0x44, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x4d, 0x6f, 0x64, 0x3b, 0x4a, 0x6f, 0x6c, 0x3b, 0x50, +0x65, 0x64, 0x3b, 0x53, 0x6f, 0x6b, 0x3b, 0x54, 0x69, 0x62, 0x3b, 0x4c, 0x61, 0x62, 0x3b, 0x50, 0x6f, 0x6f, 0x3b, 0x4f, +0x72, 0x61, 0x72, 0x61, 0x3b, 0x4f, 0x6d, 0x75, 0x6b, 0x3b, 0x4f, 0x6b, 0x77, 0x61, 0x6d, 0x67, 0x2019, 0x3b, 0x4f, 0x64, +0x75, 0x6e, 0x67, 0x2019, 0x65, 0x6c, 0x3b, 0x4f, 0x6d, 0x61, 0x72, 0x75, 0x6b, 0x3b, 0x4f, 0x6d, 0x6f, 0x64, 0x6f, 0x6b, +0x2019, 0x6b, 0x69, 0x6e, 0x67, 0x2019, 0x6f, 0x6c, 0x3b, 0x4f, 0x6a, 0x6f, 0x6c, 0x61, 0x3b, 0x4f, 0x70, 0x65, 0x64, 0x65, +0x6c, 0x3b, 0x4f, 0x73, 0x6f, 0x6b, 0x6f, 0x73, 0x6f, 0x6b, 0x6f, 0x6d, 0x61, 0x3b, 0x4f, 0x74, 0x69, 0x62, 0x61, 0x72, +0x3b, 0x4f, 0x6c, 0x61, 0x62, 0x6f, 0x72, 0x3b, 0x4f, 0x70, 0x6f, 0x6f, 0x3b, 0x52, 0x3b, 0x4d, 0x3b, 0x4b, 0x3b, 0x44, +0x3b, 0x4d, 0x3b, 0x4d, 0x3b, 0x4a, 0x3b, 0x50, 0x3b, 0x53, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x50, 0x3b, 0x17d, 0x61, 0x6e, +0x3b, 0x46, 0x65, 0x65, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x77, 0x69, 0x3b, 0x4d, 0x65, 0x3b, 0x17d, 0x75, 0x77, 0x3b, +0x17d, 0x75, 0x79, 0x3b, 0x55, 0x74, 0x3b, 0x53, 0x65, 0x6b, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x6f, 0x3b, 0x44, +0x65, 0x65, 0x3b, 0x17d, 0x61, 0x6e, 0x77, 0x69, 0x79, 0x65, 0x3b, 0x46, 0x65, 0x65, 0x77, 0x69, 0x72, 0x69, 0x79, 0x65, +0x3b, 0x4d, 0x61, 0x72, 0x73, 0x69, 0x3b, 0x41, 0x77, 0x69, 0x72, 0x69, 0x6c, 0x3b, 0x4d, 0x65, 0x3b, 0x17d, 0x75, 0x77, +0x65, 0x14b, 0x3b, 0x17d, 0x75, 0x79, 0x79, 0x65, 0x3b, 0x55, 0x74, 0x3b, 0x53, 0x65, 0x6b, 0x74, 0x61, 0x6e, 0x62, 0x75, +0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x6f, 0x62, 0x75, 0x72, 0x3b, 0x4e, 0x6f, 0x6f, 0x77, 0x61, 0x6e, 0x62, 0x75, 0x72, +0x3b, 0x44, 0x65, 0x65, 0x73, 0x61, 0x6e, 0x62, 0x75, 0x72, 0x3b, 0x17d, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, +0x3b, 0x17d, 0x3b, 0x17d, 0x3b, 0x55, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x44, 0x41, 0x43, 0x3b, 0x44, +0x41, 0x52, 0x3b, 0x44, 0x41, 0x44, 0x3b, 0x44, 0x41, 0x4e, 0x3b, 0x44, 0x41, 0x48, 0x3b, 0x44, 0x41, 0x55, 0x3b, 0x44, +0x41, 0x4f, 0x3b, 0x44, 0x41, 0x42, 0x3b, 0x44, 0x4f, 0x43, 0x3b, 0x44, 0x41, 0x50, 0x3b, 0x44, 0x47, 0x49, 0x3b, 0x44, +0x41, 0x47, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x63, 0x68, 0x69, 0x65, 0x6c, 0x3b, 0x44, 0x77, +0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x72, 0x69, 0x79, 0x6f, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, +0x41, 0x64, 0x65, 0x6b, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x6e, 0x67, 0x2019, 0x77, 0x65, 0x6e, +0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x62, 0x69, 0x63, 0x68, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, +0x61, 0x72, 0x20, 0x41, 0x75, 0x63, 0x68, 0x69, 0x65, 0x6c, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, +0x62, 0x69, 0x72, 0x69, 0x79, 0x6f, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x62, 0x6f, 0x72, 0x6f, +0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x4f, 0x63, 0x68, 0x69, 0x6b, 0x6f, 0x3b, 0x44, 0x77, 0x65, 0x20, +0x6d, 0x61, 0x72, 0x20, 0x41, 0x70, 0x61, 0x72, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x67, 0x69, 0x20, +0x61, 0x63, 0x68, 0x69, 0x65, 0x6c, 0x3b, 0x44, 0x77, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x20, 0x41, 0x70, 0x61, 0x72, 0x20, +0x67, 0x69, 0x20, 0x61, 0x72, 0x69, 0x79, 0x6f, 0x3b, 0x43, 0x3b, 0x52, 0x3b, 0x44, 0x3b, 0x4e, 0x3b, 0x42, 0x3b, 0x55, +0x3b, 0x42, 0x3b, 0x42, 0x3b, 0x43, 0x3b, 0x50, 0x3b, 0x43, 0x3b, 0x50, 0x3b, 0x59, 0x65, 0x6e, 0x3b, 0x59, 0x65, 0x62, +0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x49, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x59, 0x75, 0x6e, 0x3b, 0x59, 0x75, 0x6c, +0x3b, 0x194, 0x75, 0x63, 0x3b, 0x43, 0x75, 0x74, 0x3b, 0x4b, 0x1e6d, 0x75, 0x3b, 0x4e, 0x77, 0x61, 0x3b, 0x44, 0x75, 0x6a, +0x3b, 0x59, 0x65, 0x6e, 0x6e, 0x61, 0x79, 0x65, 0x72, 0x3b, 0x59, 0x65, 0x62, 0x72, 0x61, 0x79, 0x65, 0x72, 0x3b, 0x4d, +0x61, 0x72, 0x73, 0x3b, 0x49, 0x62, 0x72, 0x69, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x79, 0x75, 0x3b, 0x59, 0x75, 0x6e, 0x79, +0x75, 0x3b, 0x59, 0x75, 0x6c, 0x79, 0x75, 0x7a, 0x3b, 0x194, 0x75, 0x63, 0x74, 0x3b, 0x43, 0x75, 0x74, 0x61, 0x6e, 0x62, +0x69, 0x72, 0x3b, 0x4b, 0x1e6d, 0x75, 0x62, 0x65, 0x72, 0x3b, 0x4e, 0x77, 0x61, 0x6e, 0x62, 0x69, 0x72, 0x3b, 0x44, 0x75, +0x6a, 0x61, 0x6e, 0x62, 0x69, 0x72, 0x3b, 0x59, 0x3b, 0x59, 0x3b, 0x4d, 0x3b, 0x49, 0x3b, 0x4d, 0x3b, 0x59, 0x3b, 0x59, +0x3b, 0x194, 0x3b, 0x43, 0x3b, 0x4b, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x69, 0x3b, 0x46, +0x65, 0x62, 0x6c, 0x75, 0x61, 0x6c, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x3b, 0x41, 0x70, 0x6c, 0x69, 0x6c, 0x69, +0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x41, 0x67, 0x6f, 0x73, +0x74, 0x69, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x3b, 0x4e, +0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x65, 0x73, 0x65, 0x6d, 0x62, 0x61, 0x3b, 0x91c, 0x93e, 0x928, 0x941, 0x935, +0x93e, 0x930, 0x940, 0x3b, 0x92b, 0x947, 0x92c, 0x94d, 0x930, 0x941, 0x935, 0x93e, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x938, +0x3b, 0x90f, 0x92b, 0x94d, 0x930, 0x93f, 0x932, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x941, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x907, +0x3b, 0x906, 0x917, 0x938, 0x94d, 0x925, 0x3b, 0x938, 0x947, 0x92c, 0x925, 0x947, 0x91c, 0x94d, 0x92c, 0x93c, 0x930, 0x3b, 0x905, 0x916, +0x925, 0x92c, 0x930, 0x3b, 0x928, 0x92c, 0x947, 0x91c, 0x94d, 0x92c, 0x93c, 0x930, 0x3b, 0x926, 0x93f, 0x938, 0x947, 0x91c, 0x94d, 0x92c, +0x93c, 0x930, 0x3b, 0x91c, 0x3b, 0x92b, 0x947, 0x3b, 0x92e, 0x93e, 0x3b, 0x90f, 0x3b, 0x92e, 0x947, 0x3b, 0x91c, 0x941, 0x3b, 0x91c, +0x941, 0x3b, 0x906, 0x3b, 0x938, 0x947, 0x3b, 0x905, 0x3b, 0x928, 0x3b, 0x926, 0x93f, 0x3b, 0x43, 0x69, 0x6f, 0x3b, 0x4c, 0x75, +0x69, 0x3b, 0x4c, 0x75, 0x73, 0x3b, 0x4d, 0x75, 0x75, 0x3b, 0x4c, 0x75, 0x6d, 0x3b, 0x4c, 0x75, 0x66, 0x3b, 0x4b, 0x61, +0x62, 0x3b, 0x4c, 0x75, 0x73, 0x68, 0x3b, 0x4c, 0x75, 0x74, 0x3b, 0x4c, 0x75, 0x6e, 0x3b, 0x4b, 0x61, 0x73, 0x3b, 0x43, +0x69, 0x73, 0x3b, 0x43, 0x69, 0x6f, 0x6e, 0x67, 0x6f, 0x3b, 0x4c, 0xf9, 0x69, 0x73, 0x68, 0x69, 0x3b, 0x4c, 0x75, 0x73, +0xf2, 0x6c, 0x6f, 0x3b, 0x4d, 0xf9, 0x75, 0x79, 0xe0, 0x3b, 0x4c, 0x75, 0x6d, 0xf9, 0x6e, 0x67, 0xf9, 0x6c, 0xf9, 0x3b, +0x4c, 0x75, 0x66, 0x75, 0x69, 0x6d, 0x69, 0x3b, 0x4b, 0x61, 0x62, 0xe0, 0x6c, 0xe0, 0x73, 0x68, 0xec, 0x70, 0xf9, 0x3b, +0x4c, 0xf9, 0x73, 0x68, 0xec, 0x6b, 0xe0, 0x3b, 0x4c, 0x75, 0x74, 0x6f, 0x6e, 0x67, 0x6f, 0x6c, 0x6f, 0x3b, 0x4c, 0x75, +0x6e, 0x67, 0xf9, 0x64, 0x69, 0x3b, 0x4b, 0x61, 0x73, 0x77, 0xe8, 0x6b, 0xe8, 0x73, 0xe8, 0x3b, 0x43, 0x69, 0x73, 0x77, +0xe0, 0x3b, 0x43, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, 0x4b, 0x3b, 0x4c, 0x3b, 0x4c, 0x3b, +0x4c, 0x3b, 0x4b, 0x3b, 0x43, 0x3b, 0x4a, 0x61, 0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0xe4, 0x65, 0x3b, 0x41, 0x62, +0x72, 0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x41, 0x75, 0x67, 0x3b, 0x53, 0x65, +0x70, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x76, 0x3b, 0x44, 0x65, 0x7a, 0x3b, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x72, +0x3b, 0x46, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x4d, 0xe4, 0x65, 0x72, 0x7a, 0x3b, 0x41, 0x62, 0x72, 0xeb, 0x6c, +0x6c, 0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x75, +0x73, 0x74, 0x3b, 0x53, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, +0x3b, 0x4e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x44, 0x65, 0x7a, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x4a, +0x61, 0x6e, 0x2e, 0x3b, 0x46, 0x65, 0x62, 0x2e, 0x3b, 0x4d, 0xe4, 0x65, 0x2e, 0x3b, 0x41, 0x62, 0x72, 0x2e, 0x3b, 0x4d, +0x65, 0x65, 0x3b, 0x4a, 0x75, 0x6e, 0x69, 0x3b, 0x4a, 0x75, 0x6c, 0x69, 0x3b, 0x41, 0x75, 0x67, 0x2e, 0x3b, 0x53, 0x65, +0x70, 0x2e, 0x3b, 0x4f, 0x6b, 0x74, 0x2e, 0x3b, 0x4e, 0x6f, 0x76, 0x2e, 0x3b, 0x44, 0x65, 0x7a, 0x2e, 0x3b, 0x6e, 0xf9, +0x6d, 0x3b, 0x6b, 0x268, 0x7a, 0x3b, 0x74, 0x268, 0x64, 0x3b, 0x74, 0x61, 0x61, 0x3b, 0x73, 0x65, 0x65, 0x3b, 0x6e, 0x7a, +0x75, 0x3b, 0x64, 0x75, 0x6d, 0x3b, 0x66, 0x254, 0x65, 0x3b, 0x64, 0x7a, 0x75, 0x3b, 0x6c, 0x254, 0x6d, 0x3b, 0x6b, 0x61, +0x61, 0x3b, 0x66, 0x77, 0x6f, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x6e, 0xf9, 0x6d, 0x3b, 0x6e, 0x64, +0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x6b, 0x197, 0x300, 0x7a, 0xf9, 0x294, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, +0x300, 0x74, 0x197, 0x300, 0x64, 0x289, 0x300, 0x67, 0x68, 0xe0, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x74, +0x1ce, 0x61, 0x66, 0x289, 0x304, 0x67, 0x68, 0x101, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0xe8, 0x73, 0xe8, 0x65, 0x3b, +0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x6e, 0x7a, 0xf9, 0x67, 0x68, 0xf2, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, +0x14b, 0x254, 0x300, 0x64, 0xf9, 0x6d, 0x6c, 0x6f, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x6b, 0x77, 0xee, +0x66, 0x254, 0x300, 0x65, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x74, 0x197, 0x300, 0x66, 0x289, 0x300, 0x67, +0x68, 0xe0, 0x64, 0x7a, 0x75, 0x67, 0x68, 0xf9, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x67, 0x68, 0x1d4, +0x75, 0x77, 0x65, 0x6c, 0x254, 0x300, 0x6d, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0x254, 0x300, 0x63, 0x68, 0x77, 0x61, +0x294, 0xe0, 0x6b, 0x61, 0x61, 0x20, 0x77, 0x6f, 0x3b, 0x6e, 0x64, 0x7a, 0x254, 0x300, 0x14b, 0xe8, 0x66, 0x77, 0xf2, 0x6f, +0x3b, 0x6e, 0x3b, 0x6b, 0x3b, 0x74, 0x3b, 0x74, 0x3b, 0x73, 0x3b, 0x7a, 0x3b, 0x6b, 0x3b, 0x66, 0x3b, 0x64, 0x3b, 0x6c, +0x3b, 0x63, 0x3b, 0x66, 0x3b, 0x6b, 0x254, 0x6e, 0x3b, 0x6d, 0x61, 0x63, 0x3b, 0x6d, 0x61, 0x74, 0x3b, 0x6d, 0x74, 0x6f, +0x3b, 0x6d, 0x70, 0x75, 0x3b, 0x68, 0x69, 0x6c, 0x3b, 0x6e, 0x6a, 0x65, 0x3b, 0x68, 0x69, 0x6b, 0x3b, 0x64, 0x69, 0x70, +0x3b, 0x62, 0x69, 0x6f, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x6c, 0x69, 0x253, 0x3b, 0x4b, 0x254, 0x6e, 0x64, 0x254, 0x14b, 0x3b, +0x4d, 0xe0, 0x63, 0x25b, 0x302, 0x6c, 0x3b, 0x4d, 0xe0, 0x74, 0xf9, 0x6d, 0x62, 0x3b, 0x4d, 0xe0, 0x74, 0x6f, 0x70, 0x3b, +0x4d, 0x300, 0x70, 0x75, 0x79, 0x25b, 0x3b, 0x48, 0xec, 0x6c, 0xf2, 0x6e, 0x64, 0x25b, 0x300, 0x3b, 0x4e, 0x6a, 0xe8, 0x62, +0xe0, 0x3b, 0x48, 0xec, 0x6b, 0x61, 0x14b, 0x3b, 0x44, 0xec, 0x70, 0x254, 0x300, 0x73, 0x3b, 0x42, 0xec, 0xf2, 0xf4, 0x6d, +0x3b, 0x4d, 0xe0, 0x79, 0x25b, 0x73, 0xe8, 0x70, 0x3b, 0x4c, 0xec, 0x62, 0x75, 0x79, 0x20, 0x6c, 0x69, 0x20, 0x144, 0x79, +0xe8, 0x65, 0x3b, 0x6b, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x6d, 0x3b, 0x68, 0x3b, 0x6e, 0x3b, 0x68, 0x3b, 0x64, +0x3b, 0x62, 0x3b, 0x6d, 0x3b, 0x6c, 0x3b, 0x64, 0x69, 0x3b, 0x14b, 0x67, 0x254, 0x6e, 0x3b, 0x73, 0x254, 0x14b, 0x3b, 0x64, +0x69, 0x253, 0x3b, 0x65, 0x6d, 0x69, 0x3b, 0x65, 0x73, 0x254, 0x3b, 0x6d, 0x61, 0x64, 0x3b, 0x64, 0x69, 0x14b, 0x3b, 0x6e, +0x79, 0x25b, 0x74, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x74, 0x69, 0x6e, 0x3b, 0x65, 0x6c, 0xe1, 0x3b, 0x64, 0x69, 0x6d, 0x254, +0x301, 0x64, 0x69, 0x3b, 0x14b, 0x67, 0x254, 0x6e, 0x64, 0x25b, 0x3b, 0x73, 0x254, 0x14b, 0x25b, 0x3b, 0x64, 0x69, 0x253, 0xe1, +0x253, 0xe1, 0x3b, 0x65, 0x6d, 0x69, 0x61, 0x73, 0x65, 0x6c, 0x65, 0x3b, 0x65, 0x73, 0x254, 0x70, 0x25b, 0x73, 0x254, 0x70, +0x25b, 0x3b, 0x6d, 0x61, 0x64, 0x69, 0x253, 0x25b, 0x301, 0x64, 0xed, 0x253, 0x25b, 0x301, 0x3b, 0x64, 0x69, 0x14b, 0x67, 0x69, +0x6e, 0x64, 0x69, 0x3b, 0x6e, 0x79, 0x25b, 0x74, 0x25b, 0x6b, 0x69, 0x3b, 0x6d, 0x61, 0x79, 0xe9, 0x73, 0x25b, 0x301, 0x3b, +0x74, 0x69, 0x6e, 0xed, 0x6e, 0xed, 0x3b, 0x65, 0x6c, 0xe1, 0x14b, 0x67, 0x25b, 0x301, 0x3b, 0x64, 0x3b, 0x14b, 0x3b, 0x73, +0x3b, 0x64, 0x3b, 0x65, 0x3b, 0x65, 0x3b, 0x6d, 0x3b, 0x64, 0x3b, 0x6e, 0x3b, 0x6d, 0x3b, 0x74, 0x3b, 0x65, 0x3b, 0x53, +0x61, 0x3b, 0x46, 0x65, 0x3b, 0x4d, 0x61, 0x3b, 0x41, 0x62, 0x3b, 0x4d, 0x65, 0x3b, 0x53, 0x75, 0x3b, 0x53, 0xfa, 0x3b, +0x55, 0x74, 0x3b, 0x53, 0x65, 0x3b, 0x4f, 0x6b, 0x3b, 0x4e, 0x6f, 0x3b, 0x44, 0x65, 0x3b, 0x53, 0x61, 0x6e, 0x76, 0x69, +0x65, 0x3b, 0x46, 0xe9, 0x62, 0x69, 0x72, 0x69, 0x65, 0x3b, 0x4d, 0x61, 0x72, 0x73, 0x3b, 0x41, 0x62, 0x75, 0x72, 0x69, +0x6c, 0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x53, 0x75, 0x65, 0x14b, 0x3b, 0x53, 0xfa, 0x75, 0x79, 0x65, 0x65, 0x3b, 0x55, 0x74, +0x3b, 0x53, 0x65, 0x74, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x4f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x4e, +0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x44, 0x69, 0x73, 0x61, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x53, 0x3b, 0x46, +0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x55, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, +0x3b, 0x6e, 0x67, 0x6f, 0x3b, 0x6e, 0x67, 0x62, 0x3b, 0x6e, 0x67, 0x6c, 0x3b, 0x6e, 0x67, 0x6e, 0x3b, 0x6e, 0x67, 0x74, +0x3b, 0x6e, 0x67, 0x73, 0x3b, 0x6e, 0x67, 0x7a, 0x3b, 0x6e, 0x67, 0x6d, 0x3b, 0x6e, 0x67, 0x65, 0x3b, 0x6e, 0x67, 0x61, +0x3b, 0x6e, 0x67, 0x61, 0x64, 0x3b, 0x6e, 0x67, 0x61, 0x62, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x6f, 0x73, 0xfa, 0x3b, +0x6e, 0x67, 0x254, 0x6e, 0x20, 0x62, 0x25b, 0x30c, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x6c, 0xe1, 0x6c, 0x61, 0x3b, 0x6e, +0x67, 0x254, 0x6e, 0x20, 0x6e, 0x79, 0x69, 0x6e, 0x61, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x74, 0xe1, 0x6e, 0x61, 0x3b, +0x6e, 0x67, 0x254, 0x6e, 0x20, 0x73, 0x61, 0x6d, 0x259, 0x6e, 0x61, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x7a, 0x61, 0x6d, +0x67, 0x62, 0xe1, 0x6c, 0x61, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x6d, 0x77, 0x6f, 0x6d, 0x3b, 0x6e, 0x67, 0x254, 0x6e, +0x20, 0x65, 0x62, 0x75, 0x6c, 0xfa, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, 0x61, 0x77, 0xf3, 0x6d, 0x3b, 0x6e, 0x67, 0x254, +0x6e, 0x20, 0x61, 0x77, 0xf3, 0x6d, 0x20, 0x61, 0x69, 0x20, 0x64, 0x7a, 0x69, 0xe1, 0x3b, 0x6e, 0x67, 0x254, 0x6e, 0x20, +0x61, 0x77, 0xf3, 0x6d, 0x20, 0x61, 0x69, 0x20, 0x62, 0x25b, 0x30c, 0x3b, 0x6f, 0x3b, 0x62, 0x3b, 0x6c, 0x3b, 0x6e, 0x3b, +0x74, 0x3b, 0x73, 0x3b, 0x7a, 0x3b, 0x6d, 0x3b, 0x65, 0x3b, 0x61, 0x3b, 0x64, 0x3b, 0x62, 0x3b, 0x14b, 0x31, 0x3b, 0x14b, +0x32, 0x3b, 0x14b, 0x33, 0x3b, 0x14b, 0x34, 0x3b, 0x14b, 0x35, 0x3b, 0x14b, 0x36, 0x3b, 0x14b, 0x37, 0x3b, 0x14b, 0x38, 0x3b, +0x14b, 0x39, 0x3b, 0x14b, 0x31, 0x30, 0x3b, 0x14b, 0x31, 0x31, 0x3b, 0x14b, 0x31, 0x32, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, +0x61, 0x20, 0x6e, 0x74, 0x254, 0x301, 0x6e, 0x74, 0x254, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x62, +0x25b, 0x301, 0x25b, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x72, 0xe1, 0xe1, 0x3b, 0x14b, 0x77, 0xed, +0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x6e, 0x69, 0x6e, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x74, +0xe1, 0x61, 0x6e, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x74, 0xe1, 0x61, 0x66, 0x254, 0x6b, 0x3b, +0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x74, 0xe1, 0x61, 0x62, 0x25b, 0x25b, 0x3b, 0x14b, 0x77, 0xed, 0xed, +0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x74, 0xe1, 0x61, 0x72, 0x61, 0x61, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, +0x20, 0x74, 0xe1, 0x61, 0x6e, 0x69, 0x6e, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x6e, 0x74, 0x25b, +0x6b, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x6e, 0x74, 0x25b, 0x6b, 0x20, 0x64, 0x69, 0x20, 0x62, +0x254, 0x301, 0x6b, 0x3b, 0x14b, 0x77, 0xed, 0xed, 0x20, 0x61, 0x6b, 0x1dd, 0x20, 0x6e, 0x74, 0x25b, 0x6b, 0x20, 0x64, 0x69, +0x20, 0x62, 0x25b, 0x301, 0x25b, 0x3b, 0x4b, 0x77, 0x61, 0x3b, 0x55, 0x6e, 0x61, 0x3b, 0x52, 0x61, 0x72, 0x3b, 0x43, 0x68, +0x65, 0x3b, 0x54, 0x68, 0x61, 0x3b, 0x4d, 0x6f, 0x63, 0x3b, 0x53, 0x61, 0x62, 0x3b, 0x4e, 0x61, 0x6e, 0x3b, 0x54, 0x69, +0x73, 0x3b, 0x4b, 0x75, 0x6d, 0x3b, 0x4d, 0x6f, 0x6a, 0x3b, 0x59, 0x65, 0x6c, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, +0x77, 0x6f, 0x20, 0x6b, 0x77, 0x61, 0x6e, 0x7a, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x75, +0x6e, 0x61, 0x79, 0x65, 0x6c, 0x69, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x75, 0x6e, 0x65, 0x72, +0x61, 0x72, 0x75, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x75, 0x6e, 0x65, 0x63, 0x68, 0x65, 0x73, +0x68, 0x65, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x75, 0x6e, 0x65, 0x74, 0x68, 0x61, 0x6e, 0x75, +0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x75, 0x20, 0x6e, 0x61, 0x20, 0x6d, +0x6f, 0x63, 0x68, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x73, 0x61, 0x62, 0x61, 0x3b, 0x4d, +0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x6e, 0x61, 0x6e, 0x65, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, +0x6f, 0x20, 0x74, 0x69, 0x73, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x6b, 0x75, 0x6d, 0x69, +0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, 0x6d, 0x6f, +0x6a, 0x61, 0x3b, 0x4d, 0x77, 0x65, 0x72, 0x69, 0x20, 0x77, 0x6f, 0x20, 0x6b, 0x75, 0x6d, 0x69, 0x20, 0x6e, 0x61, 0x20, +0x79, 0x65, 0x6c, 0x2019, 0x6c, 0x69, 0x3b, 0x4b, 0x3b, 0x55, 0x3b, 0x52, 0x3b, 0x43, 0x3b, 0x54, 0x3b, 0x4d, 0x3b, 0x53, +0x3b, 0x4e, 0x3b, 0x54, 0x3b, 0x4b, 0x3b, 0x4d, 0x3b, 0x59, 0x3b, 0x46, 0x4c, 0x4f, 0x3b, 0x43, 0x4c, 0x41, 0x3b, 0x43, +0x4b, 0x49, 0x3b, 0x46, 0x4d, 0x46, 0x3b, 0x4d, 0x41, 0x44, 0x3b, 0x4d, 0x42, 0x49, 0x3b, 0x4d, 0x4c, 0x49, 0x3b, 0x4d, +0x41, 0x4d, 0x3b, 0x46, 0x44, 0x45, 0x3b, 0x46, 0x4d, 0x55, 0x3b, 0x46, 0x47, 0x57, 0x3b, 0x46, 0x59, 0x55, 0x3b, 0x46, +0x129, 0x69, 0x20, 0x4c, 0x6f, 0x6f, 0x3b, 0x43, 0x6f, 0x6b, 0x63, 0x77, 0x61, 0x6b, 0x6c, 0x61, 0x14b, 0x6e, 0x65, 0x3b, +0x43, 0x6f, 0x6b, 0x63, 0x77, 0x61, 0x6b, 0x6c, 0x69, 0x69, 0x3b, 0x46, 0x129, 0x69, 0x20, 0x4d, 0x61, 0x72, 0x66, 0x6f, +0x6f, 0x3b, 0x4d, 0x61, 0x64, 0x1dd, 0x1dd, 0x75, 0x75, 0x74, 0x1dd, 0x62, 0x69, 0x6a, 0x61, 0x14b, 0x3b, 0x4d, 0x61, 0x6d, +0x1dd, 0x14b, 0x67, 0x77, 0xe3, 0x61, 0x66, 0x61, 0x68, 0x62, 0x69, 0x69, 0x3b, 0x4d, 0x61, 0x6d, 0x1dd, 0x14b, 0x67, 0x77, +0xe3, 0x61, 0x6c, 0x69, 0x69, 0x3b, 0x4d, 0x61, 0x64, 0x1dd, 0x6d, 0x62, 0x69, 0x69, 0x3b, 0x46, 0x129, 0x69, 0x20, 0x44, +0x1dd, 0x253, 0x6c, 0x69, 0x69, 0x3b, 0x46, 0x129, 0x69, 0x20, 0x4d, 0x75, 0x6e, 0x64, 0x61, 0x14b, 0x3b, 0x46, 0x129, 0x69, +0x20, 0x47, 0x77, 0x61, 0x68, 0x6c, 0x6c, 0x65, 0x3b, 0x46, 0x129, 0x69, 0x20, 0x59, 0x75, 0x72, 0x75, 0x3b, 0x4f, 0x3b, +0x41, 0x3b, 0x49, 0x3b, 0x46, 0x3b, 0x44, 0x3b, 0x42, 0x3b, 0x4c, 0x3b, 0x4d, 0x3b, 0x45, 0x3b, 0x55, 0x3b, 0x57, 0x3b, +0x59, 0x3b, 0x6e, 0x67, 0x31, 0x3b, 0x6e, 0x67, 0x32, 0x3b, 0x6e, 0x67, 0x33, 0x3b, 0x6e, 0x67, 0x34, 0x3b, 0x6e, 0x67, +0x35, 0x3b, 0x6e, 0x67, 0x36, 0x3b, 0x6e, 0x67, 0x37, 0x3b, 0x6e, 0x67, 0x38, 0x3b, 0x6e, 0x67, 0x39, 0x3b, 0x6e, 0x67, +0x31, 0x30, 0x3b, 0x6e, 0x67, 0x31, 0x31, 0x3b, 0x6b, 0x72, 0x69, 0x73, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x6d, +0x61, 0x74, 0xe1, 0x68, 0x72, 0x61, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x144, 0x6d, 0x62, 0x61, 0x3b, 0x6e, 0x67, +0x77, 0x25b, 0x6e, 0x20, 0x144, 0x6c, 0x61, 0x6c, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x144, 0x6e, 0x61, 0x3b, 0x6e, +0x67, 0x77, 0x25b, 0x6e, 0x20, 0x144, 0x74, 0x61, 0x6e, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x144, 0x74, 0x75, 0xf3, +0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x68, 0x25b, 0x6d, 0x62, 0x75, 0x25b, 0x72, 0xed, 0x3b, 0x6e, 0x67, 0x77, 0x25b, +0x6e, 0x20, 0x6c, 0x254, 0x6d, 0x62, 0x69, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x72, 0x25b, 0x62, 0x76, 0x75, 0xe2, +0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x77, 0x75, 0x6d, 0x3b, 0x6e, 0x67, 0x77, 0x25b, 0x6e, 0x20, 0x77, 0x75, 0x6d, +0x20, 0x6e, 0x61, 0x76, 0x1d4, 0x72, 0x3b, 0x6b, 0x72, 0xed, 0x73, 0x69, 0x6d, 0x69, 0x6e, 0x3b, 0x54, 0x69, 0x6f, 0x70, +0x3b, 0x50, 0x25b, 0x74, 0x3b, 0x44, 0x75, 0x254, 0x331, 0x254, 0x331, 0x3b, 0x47, 0x75, 0x61, 0x6b, 0x3b, 0x44, 0x75, 0xe4, +0x3b, 0x4b, 0x6f, 0x72, 0x3b, 0x50, 0x61, 0x79, 0x3b, 0x54, 0x68, 0x6f, 0x6f, 0x3b, 0x54, 0x25b, 0x25b, 0x3b, 0x4c, 0x61, +0x61, 0x3b, 0x4b, 0x75, 0x72, 0x3b, 0x54, 0x69, 0x64, 0x3b, 0x54, 0x69, 0x6f, 0x70, 0x20, 0x74, 0x68, 0x61, 0x72, 0x20, +0x70, 0x25b, 0x74, 0x3b, 0x50, 0x25b, 0x74, 0x3b, 0x44, 0x75, 0x254, 0x331, 0x254, 0x331, 0x14b, 0x3b, 0x47, 0x75, 0x61, 0x6b, +0x3b, 0x44, 0x75, 0xe4, 0x74, 0x3b, 0x4b, 0x6f, 0x72, 0x6e, 0x79, 0x6f, 0x6f, 0x74, 0x3b, 0x50, 0x61, 0x79, 0x20, 0x79, +0x69, 0x65, 0x331, 0x74, 0x6e, 0x69, 0x3b, 0x54, 0x68, 0x6f, 0x331, 0x6f, 0x331, 0x72, 0x3b, 0x54, 0x25b, 0x25b, 0x72, 0x3b, +0x4c, 0x61, 0x61, 0x74, 0x68, 0x3b, 0x4b, 0x75, 0x72, 0x3b, 0x54, 0x69, 0x6f, 0x331, 0x70, 0x20, 0x69, 0x6e, 0x20, 0x64, +0x69, 0x331, 0x69, 0x331, 0x74, 0x3b, 0x54, 0x3b, 0x50, 0x3b, 0x44, 0x3b, 0x47, 0x3b, 0x44, 0x3b, 0x4b, 0x3b, 0x50, 0x3b, +0x54, 0x3b, 0x54, 0x3b, 0x4c, 0x3b, 0x4b, 0x3b, 0x54, 0x3b, 0x422, 0x43e, 0x445, 0x441, 0x3b, 0x41e, 0x43b, 0x443, 0x43d, 0x3b, +0x41a, 0x43b, 0x43d, 0x3b, 0x41c, 0x441, 0x443, 0x3b, 0x42b, 0x430, 0x43c, 0x3b, 0x411, 0x44d, 0x441, 0x3b, 0x41e, 0x442, 0x439, 0x3b, +0x410, 0x442, 0x440, 0x3b, 0x411, 0x43b, 0x495, 0x3b, 0x410, 0x43b, 0x442, 0x3b, 0x421, 0x44d, 0x442, 0x3b, 0x410, 0x445, 0x441, 0x3b, +0x442, 0x43e, 0x445, 0x441, 0x443, 0x43d, 0x43d, 0x44c, 0x443, 0x3b, 0x43e, 0x43b, 0x443, 0x43d, 0x43d, 0x44c, 0x443, 0x3b, 0x43a, 0x443, +0x43b, 0x443, 0x43d, 0x20, 0x442, 0x443, 0x442, 0x430, 0x440, 0x3b, 0x43c, 0x443, 0x443, 0x441, 0x20, 0x443, 0x441, 0x442, 0x430, 0x440, +0x3b, 0x44b, 0x430, 0x43c, 0x20, 0x44b, 0x439, 0x430, 0x3b, 0x431, 0x44d, 0x441, 0x20, 0x44b, 0x439, 0x430, 0x3b, 0x43e, 0x442, 0x20, +0x44b, 0x439, 0x430, 0x3b, 0x430, 0x442, 0x44b, 0x440, 0x434, 0x44c, 0x44b, 0x445, 0x20, 0x44b, 0x439, 0x430, 0x3b, 0x431, 0x430, 0x43b, +0x430, 0x495, 0x430, 0x43d, 0x20, 0x44b, 0x439, 0x430, 0x3b, 0x430, 0x43b, 0x442, 0x44b, 0x43d, 0x43d, 0x44c, 0x44b, 0x3b, 0x441, 0x44d, +0x442, 0x438, 0x43d, 0x43d, 0x44c, 0x438, 0x3b, 0x430, 0x445, 0x441, 0x44b, 0x43d, 0x43d, 0x44c, 0x44b, 0x3b, 0x422, 0x3b, 0x41e, 0x3b, +0x41a, 0x3b, 0x41c, 0x3b, 0x42b, 0x3b, 0x411, 0x3b, 0x41e, 0x3b, 0x410, 0x3b, 0x411, 0x3b, 0x410, 0x3b, 0x421, 0x3b, 0x410, 0x3b, +0x422, 0x43e, 0x445, 0x441, 0x443, 0x43d, 0x43d, 0x44c, 0x443, 0x3b, 0x41e, 0x43b, 0x443, 0x43d, 0x43d, 0x44c, 0x443, 0x3b, 0x41a, 0x443, +0x43b, 0x443, 0x43d, 0x20, 0x442, 0x443, 0x442, 0x430, 0x440, 0x3b, 0x41c, 0x443, 0x443, 0x441, 0x20, 0x443, 0x441, 0x442, 0x430, 0x440, +0x3b, 0x42b, 0x430, 0x43c, 0x20, 0x44b, 0x439, 0x44b, 0x43d, 0x3b, 0x411, 0x44d, 0x441, 0x20, 0x44b, 0x439, 0x44b, 0x43d, 0x3b, 0x41e, +0x442, 0x20, 0x44b, 0x439, 0x44b, 0x43d, 0x3b, 0x410, 0x442, 0x44b, 0x440, 0x434, 0x44c, 0x44b, 0x445, 0x20, 0x44b, 0x439, 0x44b, 0x43d, +0x3b, 0x411, 0x430, 0x43b, 0x430, 0x495, 0x430, 0x43d, 0x20, 0x44b, 0x439, 0x44b, 0x43d, 0x3b, 0x410, 0x43b, 0x442, 0x44b, 0x43d, 0x43d, +0x44c, 0x44b, 0x3b, 0x421, 0x44d, 0x442, 0x438, 0x43d, 0x43d, 0x44c, 0x438, 0x3b, 0x430, 0x445, 0x441, 0x44b, 0x43d, 0x43d, 0x44c, 0x44b, +0x3b, 0x4d, 0x75, 0x70, 0x3b, 0x4d, 0x77, 0x69, 0x3b, 0x4d, 0x73, 0x68, 0x3b, 0x4d, 0x75, 0x6e, 0x3b, 0x4d, 0x61, 0x67, +0x3b, 0x4d, 0x75, 0x6a, 0x3b, 0x4d, 0x73, 0x70, 0x3b, 0x4d, 0x70, 0x67, 0x3b, 0x4d, 0x79, 0x65, 0x3b, 0x4d, 0x6f, 0x6b, +0x3b, 0x4d, 0x75, 0x73, 0x3b, 0x4d, 0x75, 0x68, 0x3b, 0x4d, 0x75, 0x70, 0x61, 0x6c, 0x61, 0x6e, 0x67, 0x75, 0x6c, 0x77, +0x61, 0x3b, 0x4d, 0x77, 0x69, 0x74, 0x6f, 0x70, 0x65, 0x3b, 0x4d, 0x75, 0x73, 0x68, 0x65, 0x6e, 0x64, 0x65, 0x3b, 0x4d, +0x75, 0x6e, 0x79, 0x69, 0x3b, 0x4d, 0x75, 0x73, 0x68, 0x65, 0x6e, 0x64, 0x65, 0x20, 0x4d, 0x61, 0x67, 0x61, 0x6c, 0x69, +0x3b, 0x4d, 0x75, 0x6a, 0x69, 0x6d, 0x62, 0x69, 0x3b, 0x4d, 0x75, 0x73, 0x68, 0x69, 0x70, 0x65, 0x70, 0x6f, 0x3b, 0x4d, +0x75, 0x70, 0x75, 0x67, 0x75, 0x74, 0x6f, 0x3b, 0x4d, 0x75, 0x6e, 0x79, 0x65, 0x6e, 0x73, 0x65, 0x3b, 0x4d, 0x6f, 0x6b, +0x68, 0x75, 0x3b, 0x4d, 0x75, 0x73, 0x6f, 0x6e, 0x67, 0x61, 0x6e, 0x64, 0x65, 0x6d, 0x62, 0x77, 0x65, 0x3b, 0x4d, 0x75, +0x68, 0x61, 0x61, 0x6e, 0x6f, 0x3b, 0xa5a8, 0xa595, 0xa51e, 0x3b, 0xa552, 0xa561, 0x3b, 0xa57e, 0xa5ba, 0x3b, 0xa5a2, 0xa595, 0x3b, 0xa591, +0xa571, 0x3b, 0xa5b1, 0xa60b, 0x3b, 0xa5b1, 0xa55e, 0x3b, 0xa5db, 0xa515, 0x3b, 0xa562, 0xa54c, 0x3b, 0xa56d, 0xa583, 0x3b, 0xa51e, 0xa60b, 0x3b, +0xa5a8, 0xa595, 0xa5cf, 0x3b, 0xa5a8, 0xa595, 0x20, 0xa56a, 0xa574, 0x20, 0xa51e, 0xa500, 0xa56e, 0xa54a, 0x3b, 0xa552, 0xa561, 0xa59d, 0xa595, 0x3b, +0xa57e, 0xa5ba, 0x3b, 0xa5a2, 0xa595, 0x3b, 0xa591, 0xa571, 0x3b, 0xa5b1, 0xa60b, 0x3b, 0xa5b1, 0xa55e, 0xa524, 0x3b, 0xa5db, 0xa515, 0x3b, 0xa562, +0xa54c, 0x3b, 0xa56d, 0xa583, 0x3b, 0xa51e, 0xa60b, 0xa554, 0xa57f, 0x20, 0xa578, 0xa583, 0xa5cf, 0x3b, 0xa5a8, 0xa595, 0x20, 0xa56a, 0xa574, 0x20, +0xa5cf, 0xa5ba, 0xa56e, 0xa54a, 0x3b, 0x4a, 0x65, 0x6e, 0x3b, 0x48, 0x6f, 0x72, 0x3b, 0x4d, 0xe4, 0x72, 0x3b, 0x41, 0x62, 0x72, +0x3b, 0x4d, 0x65, 0x69, 0x3b, 0x42, 0x72, 0xe1, 0x3b, 0x48, 0x65, 0x69, 0x3b, 0xd6, 0x69, 0x67, 0x3b, 0x48, 0x65, 0x72, +0x3b, 0x57, 0xed, 0x6d, 0x3b, 0x57, 0x69, 0x6e, 0x3b, 0x43, 0x68, 0x72, 0x3b, 0x4a, 0x65, 0x6e, 0x6e, 0x65, 0x72, 0x3b, +0x48, 0x6f, 0x72, 0x6e, 0x69, 0x67, 0x3b, 0x4d, 0xe4, 0x72, 0x7a, 0x65, 0x3b, 0x41, 0x62, 0x72, 0x69, 0x6c, 0x6c, 0x65, +0x3b, 0x4d, 0x65, 0x69, 0x6a, 0x65, 0x3b, 0x42, 0x72, 0xe1, 0x10d, 0x65, 0x74, 0x3b, 0x48, 0x65, 0x69, 0x77, 0x65, 0x74, +0x3b, 0xd6, 0x69, 0x67, 0x161, 0x74, 0x65, 0x3b, 0x48, 0x65, 0x72, 0x62, 0x161, 0x74, 0x6d, 0xe1, 0x6e, 0x65, 0x74, 0x3b, +0x57, 0xed, 0x6d, 0xe1, 0x6e, 0x65, 0x74, 0x3b, 0x57, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6d, 0xe1, 0x6e, 0x65, 0x74, 0x3b, +0x43, 0x68, 0x72, 0x69, 0x161, 0x74, 0x6d, 0xe1, 0x6e, 0x65, 0x74, 0x3b, 0x4a, 0x3b, 0x48, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, +0x4d, 0x3b, 0x42, 0x3b, 0x48, 0x3b, 0xd6, 0x3b, 0x48, 0x3b, 0x57, 0x3b, 0x57, 0x3b, 0x43, 0x3b, 0x6f, 0x2e, 0x31, 0x3b, +0x6f, 0x2e, 0x32, 0x3b, 0x6f, 0x2e, 0x33, 0x3b, 0x6f, 0x2e, 0x34, 0x3b, 0x6f, 0x2e, 0x35, 0x3b, 0x6f, 0x2e, 0x36, 0x3b, +0x6f, 0x2e, 0x37, 0x3b, 0x6f, 0x2e, 0x38, 0x3b, 0x6f, 0x2e, 0x39, 0x3b, 0x6f, 0x2e, 0x31, 0x30, 0x3b, 0x6f, 0x2e, 0x31, +0x31, 0x3b, 0x6f, 0x2e, 0x31, 0x32, 0x3b, 0x70, 0x69, 0x6b, 0xed, 0x74, 0xed, 0x6b, 0xed, 0x74, 0x69, 0x65, 0x2c, 0x20, +0x6f, 0xf3, 0x6c, 0xed, 0x20, 0xfa, 0x20, 0x6b, 0x75, 0x74, 0xfa, 0x61, 0x6e, 0x3b, 0x73, 0x69, 0x25b, 0x79, 0x25b, 0x301, +0x2c, 0x20, 0x6f, 0xf3, 0x6c, 0x69, 0x20, 0xfa, 0x20, 0x6b, 0xe1, 0x6e, 0x64, 0xed, 0x25b, 0x3b, 0x254, 0x6e, 0x73, 0xfa, +0x6d, 0x62, 0x254, 0x6c, 0x2c, 0x20, 0x6f, 0xf3, 0x6c, 0x69, 0x20, 0xfa, 0x20, 0x6b, 0xe1, 0x74, 0xe1, 0x74, 0xfa, 0x25b, +0x3b, 0x6d, 0x65, 0x73, 0x69, 0x14b, 0x2c, 0x20, 0x6f, 0xf3, 0x6c, 0x69, 0x20, 0xfa, 0x20, 0x6b, 0xe9, 0x6e, 0x69, 0x65, +0x3b, 0x65, 0x6e, 0x73, 0x69, 0x6c, 0x2c, 0x20, 0x6f, 0xf3, 0x6c, 0x69, 0x20, 0xfa, 0x20, 0x6b, 0xe1, 0x74, 0xe1, 0x6e, +0x75, 0x25b, 0x3b, 0x254, 0x73, 0x254, 0x6e, 0x3b, 0x65, 0x66, 0x75, 0x74, 0x65, 0x3b, 0x70, 0x69, 0x73, 0x75, 0x79, 0xfa, +0x3b, 0x69, 0x6d, 0x25b, 0x14b, 0x20, 0x69, 0x20, 0x70, 0x75, 0x254, 0x73, 0x3b, 0x69, 0x6d, 0x25b, 0x14b, 0x20, 0x69, 0x20, +0x70, 0x75, 0x74, 0xfa, 0x6b, 0x2c, 0x6f, 0xf3, 0x6c, 0x69, 0x20, 0xfa, 0x20, 0x6b, 0xe1, 0x74, 0xed, 0x25b, 0x3b, 0x6d, +0x61, 0x6b, 0x61, 0x6e, 0x64, 0x69, 0x6b, 0x25b, 0x3b, 0x70, 0x69, 0x6c, 0x254, 0x6e, 0x64, 0x254, 0x301, 0x3b, 0x58, 0x69, +0x6e, 0x3b, 0x46, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x62, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x58, 0x75, +0x6e, 0x3b, 0x58, 0x6e, 0x74, 0x3b, 0x41, 0x67, 0x6f, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x63, 0x68, 0x3b, 0x50, 0x61, +0x79, 0x3b, 0x41, 0x76, 0x69, 0x3b, 0x78, 0x69, 0x6e, 0x65, 0x72, 0x75, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x65, 0x72, 0x75, +0x3b, 0x6d, 0x61, 0x72, 0x7a, 0x75, 0x3b, 0x61, 0x62, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x79, 0x75, 0x3b, 0x78, 0x75, +0x6e, 0x75, 0x3b, 0x78, 0x75, 0x6e, 0x65, 0x74, 0x75, 0x3b, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x75, 0x3b, 0x73, 0x65, 0x74, +0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x6f, 0x63, 0x68, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x70, 0x61, 0x79, 0x61, 0x72, +0x65, 0x73, 0x3b, 0x61, 0x76, 0x69, 0x65, 0x6e, 0x74, 0x75, 0x3b, 0x58, 0x3b, 0x46, 0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, +0x3b, 0x58, 0x3b, 0x58, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x50, 0x3b, 0x41, 0x3b, 0x78, 0x69, 0x6e, 0x3b, 0x66, +0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x62, 0x72, 0x3b, 0x6d, 0x61, 0x79, 0x3b, 0x78, 0x75, 0x6e, 0x3b, 0x78, +0x6e, 0x74, 0x3b, 0x61, 0x67, 0x6f, 0x3b, 0x73, 0x65, 0x74, 0x3b, 0x6f, 0x63, 0x68, 0x3b, 0x70, 0x61, 0x79, 0x3b, 0x61, +0x76, 0x69, 0x3b, 0x64, 0x65, 0x20, 0x78, 0x69, 0x6e, 0x65, 0x72, 0x75, 0x3b, 0x64, 0x65, 0x20, 0x66, 0x65, 0x62, 0x72, +0x65, 0x72, 0x75, 0x3b, 0x64, 0x65, 0x20, 0x6d, 0x61, 0x72, 0x7a, 0x75, 0x3b, 0x64, 0x2019, 0x61, 0x62, 0x72, 0x69, 0x6c, +0x3b, 0x64, 0x65, 0x20, 0x6d, 0x61, 0x79, 0x75, 0x3b, 0x64, 0x65, 0x20, 0x78, 0x75, 0x6e, 0x75, 0x3b, 0x64, 0x65, 0x20, +0x78, 0x75, 0x6e, 0x65, 0x74, 0x75, 0x3b, 0x64, 0x2019, 0x61, 0x67, 0x6f, 0x73, 0x74, 0x75, 0x3b, 0x64, 0x65, 0x20, 0x73, +0x65, 0x74, 0x69, 0x65, 0x6d, 0x62, 0x72, 0x65, 0x3b, 0x64, 0x2019, 0x6f, 0x63, 0x68, 0x6f, 0x62, 0x72, 0x65, 0x3b, 0x64, +0x65, 0x20, 0x70, 0x61, 0x79, 0x61, 0x72, 0x65, 0x73, 0x3b, 0x64, 0x2019, 0x61, 0x76, 0x69, 0x65, 0x6e, 0x74, 0x75, 0x3b, +0x4e, 0x64, 0x75, 0x14b, 0x6d, 0x62, 0x69, 0x20, 0x53, 0x61, 0x14b, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x50, 0x25b, +0x301, 0x70, 0xe1, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x50, 0x25b, 0x301, 0x74, 0xe1, 0x74, 0x3b, 0x50, 0x25b, 0x73, +0x61, 0x14b, 0x20, 0x50, 0x25b, 0x301, 0x6e, 0x25b, 0x301, 0x6b, 0x77, 0x61, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x50, +0x61, 0x74, 0x61, 0x61, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x50, 0x25b, 0x301, 0x6e, 0x25b, 0x301, 0x6e, 0x74, 0xfa, +0x6b, 0xfa, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x53, 0x61, 0x61, 0x6d, 0x62, 0xe1, 0x3b, 0x50, 0x25b, 0x73, 0x61, +0x14b, 0x20, 0x50, 0x25b, 0x301, 0x6e, 0x25b, 0x301, 0x66, 0x254, 0x6d, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x50, 0x25b, +0x301, 0x6e, 0x25b, 0x301, 0x70, 0x66, 0xfa, 0xa78b, 0xfa, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x4e, 0x25b, 0x67, 0x25b, +0x301, 0x6d, 0x3b, 0x50, 0x25b, 0x73, 0x61, 0x14b, 0x20, 0x4e, 0x74, 0x73, 0x254, 0x30c, 0x70, 0x6d, 0x254, 0x301, 0x3b, 0x50, +0x25b, 0x73, 0x61, 0x14b, 0x20, 0x4e, 0x74, 0x73, 0x254, 0x30c, 0x70, 0x70, 0xe1, 0x3b, 0x70, 0x61, 0x6d, 0x62, 0x61, 0x3b, +0x77, 0x61, 0x6e, 0x6a, 0x61, 0x3b, 0x6d, 0x62, 0x69, 0x79, 0x254, 0x20, 0x6d, 0x25b, 0x6e, 0x64, 0x6f, 0x14b, 0x67, 0x254, +0x3b, 0x4e, 0x79, 0x254, 0x6c, 0x254, 0x6d, 0x62, 0x254, 0x14b, 0x67, 0x254, 0x3b, 0x4d, 0x254, 0x6e, 0x254, 0x20, 0x14b, 0x67, +0x62, 0x61, 0x6e, 0x6a, 0x61, 0x3b, 0x4e, 0x79, 0x61, 0x14b, 0x67, 0x77, 0x25b, 0x20, 0x14b, 0x67, 0x62, 0x61, 0x6e, 0x6a, +0x61, 0x3b, 0x6b, 0x75, 0x14b, 0x67, 0x77, 0x25b, 0x3b, 0x66, 0x25b, 0x3b, 0x6e, 0x6a, 0x61, 0x70, 0x69, 0x3b, 0x6e, 0x79, +0x75, 0x6b, 0x75, 0x6c, 0x3b, 0x4d, 0x31, 0x31, 0x3b, 0x253, 0x75, 0x6c, 0x253, 0x75, 0x73, 0x25b, 0x3b, 0x6d, 0x62, 0x65, +0x67, 0x74, 0x75, 0x67, 0x3b, 0x69, 0x6d, 0x65, 0x67, 0x20, 0xe0, 0x62, 0xf9, 0x62, 0xec, 0x3b, 0x69, 0x6d, 0x65, 0x67, +0x20, 0x6d, 0x62, 0x259, 0x14b, 0x63, 0x68, 0x75, 0x62, 0x69, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6e, 0x67, 0x77, 0x259, +0x300, 0x74, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x66, 0x6f, 0x67, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x69, 0x63, 0x68, +0x69, 0x69, 0x62, 0x254, 0x64, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0xe0, 0x64, 0xf9, 0x6d, 0x62, 0x259, 0x300, 0x14b, 0x3b, +0x69, 0x6d, 0x259, 0x67, 0x20, 0x69, 0x63, 0x68, 0x69, 0x6b, 0x61, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6b, 0x75, 0x64, +0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x74, 0xe8, 0x73, 0x69, 0x2bc, 0x65, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x7a, 0xf2, +0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6b, 0x72, 0x69, 0x7a, 0x6d, 0x65, 0x64, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6d, +0x62, 0x65, 0x67, 0x74, 0x75, 0x67, 0x3b, 0x69, 0x6d, 0x65, 0x67, 0x20, 0xe0, 0x62, 0xf9, 0x62, 0xec, 0x3b, 0x69, 0x6d, +0x65, 0x67, 0x20, 0x6d, 0x62, 0x259, 0x14b, 0x63, 0x68, 0x75, 0x62, 0x69, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6e, 0x67, +0x77, 0x259, 0x300, 0x74, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x66, 0x6f, 0x67, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x69, +0x63, 0x68, 0x69, 0x69, 0x62, 0x254, 0x64, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0xe0, 0x64, 0xf9, 0x6d, 0x62, 0x259, 0x300, +0x14b, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x69, 0x63, 0x68, 0x69, 0x6b, 0x61, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6b, +0x75, 0x64, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x74, 0xe8, 0x73, 0x69, 0x2bc, 0x65, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, +0x7a, 0xf2, 0x3b, 0x69, 0x6d, 0x259, 0x67, 0x20, 0x6b, 0x72, 0x69, 0x7a, 0x6d, 0x65, 0x64, 0x3b, 0x4d, 0x31, 0x3b, 0x41, +0x32, 0x3b, 0x4d, 0x33, 0x3b, 0x4e, 0x34, 0x3b, 0x46, 0x35, 0x3b, 0x49, 0x36, 0x3b, 0x41, 0x37, 0x3b, 0x49, 0x38, 0x3b, +0x4b, 0x39, 0x3b, 0x31, 0x30, 0x3b, 0x31, 0x31, 0x3b, 0x31, 0x32, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x74, 0x73, 0x65, 0x74, +0x73, 0x25b, 0x300, 0x25b, 0x20, 0x6c, 0xf9, 0x6d, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x6b, 0xe0, 0x67, 0x20, 0x6e, 0x67, 0x77, +0xf3, 0x14b, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x6c, 0x65, 0x70, 0x79, 0xe8, 0x20, 0x73, 0x68, 0xfa, 0x6d, 0x3b, 0x73, 0x61, +0x14b, 0x20, 0x63, 0xff, 0xf3, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x74, 0x73, 0x25b, 0x300, 0x25b, 0x20, 0x63, 0xff, 0xf3, 0x3b, +0x73, 0x61, 0x14b, 0x20, 0x6e, 0x6a, 0xff, 0x6f, 0x6c, 0xe1, 0x2bc, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x74, 0x79, 0x25b, 0x300, +0x62, 0x20, 0x74, 0x79, 0x25b, 0x300, 0x62, 0x20, 0x6d, 0x62, 0x289, 0x300, 0x14b, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x6d, 0x62, +0x289, 0x300, 0x14b, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x6e, 0x67, 0x77, 0x254, 0x300, 0x2bc, 0x20, 0x6d, 0x62, 0xff, 0x25b, 0x3b, +0x73, 0x61, 0x14b, 0x20, 0x74, 0xe0, 0x14b, 0x61, 0x20, 0x74, 0x73, 0x65, 0x74, 0x73, 0xe1, 0x2bc, 0x3b, 0x73, 0x61, 0x14b, +0x20, 0x6d, 0x65, 0x6a, 0x77, 0x6f, 0x14b, 0xf3, 0x3b, 0x73, 0x61, 0x14b, 0x20, 0x6c, 0xf9, 0x6d, 0x3b, 0x91c, 0x928, 0x2e, +0x3b, 0x92b, 0x930, 0x2e, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x948, 0x932, 0x3b, 0x92e, 0x947, +0x908, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x908, 0x3b, 0x905, 0x917, 0x2e, 0x3b, 0x938, 0x93f, 0x924, 0x2e, +0x3b, 0x905, 0x915, 0x94d, 0x924, 0x942, 0x2e, 0x3b, 0x928, 0x935, 0x2e, 0x3b, 0x926, 0x93f, 0x938, 0x2e, 0x3b, 0x91c, 0x928, 0x935, +0x930, 0x940, 0x3b, 0x92b, 0x930, 0x935, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, 0x94d, 0x930, 0x948, +0x932, 0x3b, 0x92e, 0x947, 0x908, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x908, 0x3b, 0x905, 0x917, 0x938, 0x94d, +0x924, 0x3b, 0x938, 0x93f, 0x924, 0x902, 0x92c, 0x930, 0x3b, 0x905, 0x915, 0x94d, 0x924, 0x942, 0x92c, 0x930, 0x3b, 0x928, 0x935, 0x902, +0x92c, 0x930, 0x3b, 0x926, 0x93f, 0x938, 0x902, 0x92c, 0x930, 0x3b, 0x91c, 0x3b, 0x92b, 0x3b, 0x92e, 0x93e, 0x3b, 0x905, 0x3b, 0x92e, +0x947, 0x3b, 0x91c, 0x942, 0x3b, 0x91c, 0x941, 0x3b, 0x905, 0x3b, 0x938, 0x93f, 0x3b, 0x905, 0x3b, 0x928, 0x3b, 0x926, 0x93f, 0x3b, +0x91c, 0x928, 0x935, 0x930, 0x940, 0x3b, 0x92b, 0x930, 0x935, 0x930, 0x940, 0x3b, 0x92e, 0x93e, 0x930, 0x94d, 0x91a, 0x3b, 0x905, 0x92a, +0x94d, 0x930, 0x948, 0x932, 0x3b, 0x92e, 0x947, 0x908, 0x3b, 0x91c, 0x942, 0x928, 0x3b, 0x91c, 0x941, 0x932, 0x93e, 0x908, 0x3b, 0x905, +0x917, 0x938, 0x94d, 0x924, 0x3b, 0x938, 0x93f, 0x924, 0x902, 0x92c, 0x930, 0x3b, 0x905, 0x924, 0x94d, 0x924, 0x942, 0x92c, 0x930, 0x3b, +0x928, 0x935, 0x902, 0x92c, 0x930, 0x3b, 0x926, 0x93f, 0x938, 0x902, 0x92c, 0x930, 0x3b, 0x99c, 0x9be, 0x9a8, 0x9c1, 0x3b, 0x9ab, 0x9c7, +0x9ac, 0x9cd, 0x9b0, 0x9c1, 0x3b, 0x9ae, 0x9be, 0x9b0, 0x3b, 0x98f, 0x9aa, 0x9cd, 0x9b0, 0x9bf, 0x3b, 0x9ae, 0x9c7, 0x3b, 0x99c, 0x9c1, +0x9a8, 0x3b, 0x99c, 0x9c1, 0x9b2, 0x9be, 0x3b, 0x986, 0x997, 0x3b, 0x9b8, 0x9c7, 0x9aa, 0x9cd, 0x99f, 0x3b, 0x993, 0x995, 0x9cd, 0x99f, +0x9cb, 0x3b, 0x9a8, 0x9ad, 0x9c7, 0x3b, 0x9a1, 0x9bf, 0x9b8, 0x9c7, 0x3b, 0x99c, 0x9be, 0x9a8, 0x9c1, 0x9f1, 0x9be, 0x9b0, 0x9bf, 0x3b, +0x9ab, 0x9c7, 0x9ac, 0x9cd, 0x9b0, 0x9c1, 0x9f1, 0x9be, 0x9b0, 0x9bf, 0x3b, 0x9ae, 0x9be, 0x9b0, 0x9cd, 0x99a, 0x3b, 0x98f, 0x9aa, 0x9cd, +0x9b0, 0x9bf, 0x9b2, 0x3b, 0x9ae, 0x9c7, 0x3b, 0x99c, 0x9c1, 0x9a8, 0x3b, 0x99c, 0x9c1, 0x9b2, 0x9be, 0x987, 0x3b, 0x993, 0x997, 0x9b7, +0x9cd, 0x99f, 0x3b, 0x9b8, 0x9c7, 0x9aa, 0x9cd, 0x99f, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, 0x993, 0x995, 0x9cd, 0x99f, 0x9cb, 0x9ac, +0x9b0, 0x3b, 0x9a8, 0x9ac, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, 0x9a1, 0x9bf, 0x9b8, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, 0x99c, 0x9be, 0x3b, 0x9ab, 0x9c7, 0x3b, 0x9ae, 0x9be, 0x9b0, 0x3b, 0x98f, 0x9aa, 0x3b, 0x9ae, 0x9c7, 0x3b, 0x99c, 0x9c1, 0x9a8, 0x3b, 0x99c, -0x9c1, 0x9b2, 0x3b, 0x986, 0x3b, 0x9b8, 0x9c7, 0x3b, 0x993, 0x995, 0x3b, 0x9a8, 0x9ac, 0x3b, 0x9a1, 0x9bf, 0x3b, 0x1c61, 0x1c5f, 0x1c71, -0x3b, 0x1c6f, 0x1c77, 0x1c5f, 0x3b, 0x1c62, 0x1c5f, 0x1c68, 0x3b, 0x1c5f, 0x1c6f, 0x1c68, 0x3b, 0x1c62, 0x1c6e, 0x3b, 0x1c61, 0x1c69, 0x1c71, 0x3b, -0x1c61, 0x1c69, 0x1c5e, 0x3b, 0x1c5f, 0x1c5c, 0x1c5f, 0x3b, 0x1c65, 0x1c6e, 0x1c6f, 0x3b, 0x1c5a, 0x1c60, 0x1c74, 0x3b, 0x1c71, 0x1c5f, 0x1c63, 0x3b, -0x1c6b, 0x1c64, 0x1c65, 0x3b, 0x1c61, 0x1c5f, 0x1c71, 0x1c63, 0x1c5f, 0x1c68, 0x1c64, 0x3b, 0x1c6f, 0x1c77, 0x1c5f, 0x1c68, 0x1c63, 0x1c5f, 0x1c68, 0x1c64, -0x3b, 0x1c62, 0x1c5f, 0x1c68, 0x1c6a, 0x3b, 0x1c5f, 0x1c6f, 0x1c68, 0x1c6e, 0x1c5e, 0x3b, 0x1c62, 0x1c6e, 0x3b, 0x1c61, 0x1c69, 0x1c71, 0x3b, 0x1c61, -0x1c69, 0x1c5e, 0x1c5f, 0x1c6d, 0x3b, 0x1c5f, 0x1c5c, 0x1c5f, 0x1c65, 0x1c5b, 0x3b, 0x1c65, 0x1c6e, 0x1c6f, 0x1c74, 0x1c6e, 0x1c62, 0x1c75, 0x1c5f, 0x1c68, -0x3b, 0x1c5a, 0x1c60, 0x1c74, 0x1c5a, 0x1c75, 0x1c5f, 0x1c68, 0x3b, 0x1c71, 0x1c5f, 0x1c63, 0x1c5f, 0x1c62, 0x1c75, 0x1c5f, 0x1c68, 0x3b, 0x1c6b, 0x1c64, -0x1c65, 0x1c5f, 0x1c62, 0x1c75, 0x1c5f, 0x1c68, 0x3b, 0x1c61, 0x3b, 0x1c6f, 0x3b, 0x1c62, 0x3b, 0x1c5f, 0x3b, 0x1c62, 0x3b, 0x1c61, 0x3b, 0x1c61, -0x3b, 0x1c5f, 0x3b, 0x1c65, 0x3b, 0x1c5a, 0x3b, 0x1c71, 0x3b, 0x1c6b, 0x3b, 0x57, 0x69, 0xf3, 0x74, 0x68, 0x65, 0x21f, 0x69, 0x6b, -0x61, 0x20, 0x57, 0xed, 0x3b, 0x54, 0x68, 0x69, 0x79, 0xf3, 0x21f, 0x65, 0x79, 0x75, 0x14b, 0x6b, 0x61, 0x20, 0x57, 0xed, -0x3b, 0x49, 0x161, 0x74, 0xe1, 0x77, 0x69, 0x10d, 0x68, 0x61, 0x79, 0x61, 0x7a, 0x61, 0x14b, 0x20, 0x57, 0xed, 0x3b, 0x50, -0x21f, 0x65, 0x17e, 0xed, 0x74, 0x21f, 0x6f, 0x20, 0x57, 0xed, 0x3b, 0x10c, 0x68, 0x61, 0x14b, 0x77, 0xe1, 0x70, 0x65, 0x74, -0x21f, 0x6f, 0x20, 0x57, 0xed, 0x3b, 0x57, 0xed, 0x70, 0x61, 0x7a, 0x75, 0x6b, 0x21f, 0x61, 0x2d, 0x77, 0x61, 0x161, 0x74, -0xe9, 0x20, 0x57, 0xed, 0x3b, 0x10c, 0x68, 0x61, 0x14b, 0x70, 0x21f, 0xe1, 0x73, 0x61, 0x70, 0x61, 0x20, 0x57, 0xed, 0x3b, -0x57, 0x61, 0x73, 0xfa, 0x74, 0x21f, 0x75, 0x14b, 0x20, 0x57, 0xed, 0x3b, 0x10c, 0x68, 0x61, 0x14b, 0x77, 0xe1, 0x70, 0x65, -0x1e7, 0x69, 0x20, 0x57, 0xed, 0x3b, 0x10c, 0x68, 0x61, 0x14b, 0x77, 0xe1, 0x70, 0x65, 0x2d, 0x6b, 0x61, 0x73, 0x6e, 0xe1, -0x20, 0x57, 0xed, 0x3b, 0x57, 0x61, 0x6e, 0xed, 0x79, 0x65, 0x74, 0x75, 0x20, 0x57, 0xed, 0x3b, 0x54, 0x21f, 0x61, 0x68, -0xe9, 0x6b, 0x61, 0x70, 0x161, 0x75, 0x14b, 0x20, 0x57, 0xed, 0x3b, 0x6a9, 0x627, 0x646, 0x648, 0x648, 0x646, 0x6cc, 0x20, 0x62f, -0x648, 0x648, 0x6d5, 0x645, 0x3b, 0x634, 0x648, 0x628, 0x627, 0x62a, 0x3b, 0x626, 0x627, 0x632, 0x627, 0x631, 0x3b, 0x646, 0x6cc, 0x633, -0x627, 0x646, 0x3b, 0x626, 0x627, 0x6cc, 0x627, 0x631, 0x3b, 0x62d, 0x648, 0x632, 0x6d5, 0x6cc, 0x631, 0x627, 0x646, 0x3b, 0x62a, 0x6d5, -0x645, 0x648, 0x648, 0x632, 0x3b, 0x626, 0x627, 0x628, 0x3b, 0x626, 0x6d5, 0x6cc, 0x644, 0x648, 0x648, 0x644, 0x3b, 0x62a, 0x634, 0x631, -0x6cc, 0x646, 0x6cc, 0x20, 0x6cc, 0x6d5, 0x6a9, 0x6d5, 0x645, 0x3b, 0x62a, 0x634, 0x631, 0x6cc, 0x646, 0x6cc, 0x20, 0x62f, 0x648, 0x648, -0x6d5, 0x645, 0x3b, 0x6a9, 0x627, 0x646, 0x648, 0x646, 0x6cc, 0x20, 0x6cc, 0x6d5, 0x6a9, 0x6d5, 0x645, 0x3b, 0x6a9, 0x3b, 0x634, 0x3b, -0x626, 0x3b, 0x646, 0x3b, 0x626, 0x3b, 0x62d, 0x3b, 0x62a, 0x3b, 0x626, 0x3b, 0x626, 0x3b, 0x62a, 0x3b, 0x62a, 0x3b, 0x6a9, 0x3b, -0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x11b, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, -0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x77, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, -0x6e, 0x6f, 0x77, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, -0x61, 0x72, 0x3b, 0x6d, 0x11b, 0x72, 0x63, 0x3b, 0x61, 0x70, 0x72, 0x79, 0x6c, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, -0x6e, 0x69, 0x6a, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6a, 0x3b, 0x61, 0x77, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, -0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x77, 0x65, 0x6d, -0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, -0x62, 0x2e, 0x3b, 0x6d, 0x11b, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, 0x6a, 0x2e, 0x3b, 0x6a, 0x75, -0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x77, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, -0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x77, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x61, -0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x61, 0x3b, 0x6d, 0x11b, 0x72, 0x63, 0x61, 0x3b, 0x61, 0x70, 0x72, 0x79, -0x6c, 0x61, 0x3b, 0x6d, 0x61, 0x6a, 0x61, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6a, 0x61, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6a, -0x61, 0x3b, 0x61, 0x77, 0x67, 0x75, 0x73, 0x74, 0x61, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, -0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x61, 0x3b, 0x6e, 0x6f, 0x77, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x64, 0x65, 0x63, -0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x11b, 0x72, 0x3b, 0x61, 0x70, -0x72, 0x3b, 0x6d, 0x65, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x77, 0x67, 0x3b, 0x73, 0x65, -0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x77, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, -0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x11b, 0x72, 0x63, 0x3b, 0x61, 0x70, 0x72, 0x79, 0x6c, 0x3b, -0x6d, 0x65, 0x6a, 0x61, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6a, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6a, 0x3b, 0x61, 0x77, 0x67, -0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, -0x72, 0x3b, 0x6e, 0x6f, 0x77, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, -0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x11b, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, -0x6d, 0x65, 0x6a, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x77, 0x67, 0x2e, 0x3b, -0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x77, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, -0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x61, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x61, 0x3b, 0x6d, 0x11b, 0x72, -0x63, 0x61, 0x3b, 0x61, 0x70, 0x72, 0x79, 0x6c, 0x61, 0x3b, 0x6d, 0x65, 0x6a, 0x65, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6a, -0x61, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6a, 0x61, 0x3b, 0x61, 0x77, 0x67, 0x75, 0x73, 0x74, 0x61, 0x3b, 0x73, 0x65, 0x70, -0x74, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x61, 0x3b, 0x6e, 0x6f, 0x77, 0x65, 0x6d, -0x62, 0x72, 0x61, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x72, 0x61, 0x67, 0x3b, 0x77, 0x61, 0x73, -0x3b, 0x70, 0x16b, 0x6c, 0x3b, 0x73, 0x61, 0x6b, 0x3b, 0x7a, 0x61, 0x6c, 0x3b, 0x73, 0x12b, 0x6d, 0x3b, 0x6c, 0x12b, 0x70, -0x3b, 0x64, 0x61, 0x67, 0x3b, 0x73, 0x69, 0x6c, 0x3b, 0x73, 0x70, 0x61, 0x3b, 0x6c, 0x61, 0x70, 0x3b, 0x73, 0x61, 0x6c, -0x3b, 0x72, 0x61, 0x67, 0x73, 0x3b, 0x77, 0x61, 0x73, 0x73, 0x61, 0x72, 0x69, 0x6e, 0x73, 0x3b, 0x70, 0x16b, 0x6c, 0x69, -0x73, 0x3b, 0x73, 0x61, 0x6b, 0x6b, 0x69, 0x73, 0x3b, 0x7a, 0x61, 0x6c, 0x6c, 0x61, 0x77, 0x73, 0x3b, 0x73, 0x12b, 0x6d, -0x65, 0x6e, 0x69, 0x73, 0x3b, 0x6c, 0x12b, 0x70, 0x61, 0x3b, 0x64, 0x61, 0x67, 0x67, 0x69, 0x73, 0x3b, 0x73, 0x69, 0x6c, -0x6c, 0x69, 0x6e, 0x73, 0x3b, 0x73, 0x70, 0x61, 0x6c, 0x6c, 0x69, 0x6e, 0x73, 0x3b, 0x6c, 0x61, 0x70, 0x6b, 0x72, 0x16b, -0x74, 0x69, 0x73, 0x3b, 0x73, 0x61, 0x6c, 0x6c, 0x61, 0x77, 0x73, 0x3b, 0x52, 0x3b, 0x57, 0x3b, 0x50, 0x3b, 0x53, 0x3b, -0x5a, 0x3b, 0x53, 0x3b, 0x4c, 0x3b, 0x44, 0x3b, 0x53, 0x3b, 0x53, 0x3b, 0x4c, 0x3b, 0x53, 0x3b, 0x75, 0x111, 0x69, 0x76, -0x3b, 0x6b, 0x75, 0x6f, 0x76, 0xe2, 0x3b, 0x6e, 0x6a, 0x75, 0x68, 0x10d, 0xe2, 0x3b, 0x63, 0x75, 0xe1, 0x14b, 0x75, 0x69, -0x3b, 0x76, 0x79, 0x65, 0x73, 0x69, 0x3b, 0x6b, 0x65, 0x73, 0x69, 0x3b, 0x73, 0x79, 0x65, 0x69, 0x6e, 0x69, 0x3b, 0x70, -0x6f, 0x72, 0x67, 0x65, 0x3b, 0x10d, 0x6f, 0x68, 0x10d, 0xe2, 0x3b, 0x72, 0x6f, 0x6f, 0x76, 0x76, 0xe2, 0x64, 0x3b, 0x73, -0x6b, 0x61, 0x6d, 0x6d, 0xe2, 0x3b, 0x6a, 0x75, 0x6f, 0x76, 0x6c, 0xe2, 0x3b, 0x75, 0x111, 0x111, 0xe2, 0x69, 0x76, 0x65, -0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x6b, 0x75, 0x6f, 0x76, 0xe2, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x6e, 0x6a, 0x75, -0x68, 0x10d, 0xe2, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x63, 0x75, 0xe1, 0x14b, 0x75, 0x69, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, -0x3b, 0x76, 0x79, 0x65, 0x73, 0x69, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x6b, 0x65, 0x73, 0x69, 0x6d, 0xe1, 0xe1, 0x6e, -0x75, 0x3b, 0x73, 0x79, 0x65, 0x69, 0x6e, 0x69, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x70, 0x6f, 0x72, 0x67, 0x65, 0x6d, -0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x10d, 0x6f, 0x68, 0x10d, 0xe2, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x72, 0x6f, 0x6f, 0x76, -0x76, 0xe2, 0x64, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x73, 0x6b, 0x61, 0x6d, 0x6d, 0xe2, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, -0x3b, 0x6a, 0x75, 0x6f, 0x76, 0x6c, 0xe2, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x55, 0x3b, 0x4b, 0x3b, 0x4e, 0x4a, 0x3b, -0x43, 0x3b, 0x56, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x50, 0x3b, 0x10c, 0x3b, 0x52, 0x3b, 0x53, 0x3b, 0x4a, 0x3b, 0x62c, 0x627, -0x646, 0x6a4, 0x6cc, 0x6d5, 0x3b, 0x641, 0x626, 0x6a4, 0x631, 0x6cc, 0x6d5, 0x3b, 0x645, 0x627, 0x631, 0x633, 0x3b, 0x622, 0x6a4, 0x631, -0x6cc, 0x644, 0x3b, 0x645, 0x626, 0x6cc, 0x3b, 0x62c, 0x648, 0x659, 0x623, 0x646, 0x3b, 0x62c, 0x648, 0x659, 0x644, 0x627, 0x3b, 0x622, -0x6af, 0x648, 0x633, 0x62a, 0x3b, 0x633, 0x626, 0x67e, 0x62a, 0x627, 0x645, 0x631, 0x3b, 0x626, 0x648, 0x6a9, 0x62a, 0x648, 0x6a4, 0x631, -0x3b, 0x646, 0x648, 0x6a4, 0x627, 0x645, 0x631, 0x3b, 0x62f, 0x626, 0x633, 0x627, 0x645, 0x631, 0x3b, 0x45, 0x3b, 0x50, 0x3b, 0x4d, -0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x48, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, 0x3b, 0x45, -0x6e, 0x3b, 0x50, 0x65, 0x62, 0x3b, 0x4d, 0x61, 0x72, 0x3b, 0x41, 0x70, 0x72, 0x3b, 0x4d, 0x61, 0x79, 0x3b, 0x48, 0x75, -0x6e, 0x3b, 0x48, 0x75, 0x6c, 0x3b, 0x41, 0x67, 0x3b, 0x53, 0x65, 0x74, 0x3b, 0x4f, 0x6b, 0x74, 0x3b, 0x4e, 0x6f, 0x62, -0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0xe9, 0x6e, 0x3b, 0x46, 0x1eb9, 0x301, 0x62, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x3b, 0xc9, -0x70, 0x72, 0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x1ecc, 0x301, 0x67, 0x1ecd, 0x3b, -0x53, 0x1eb9, 0x70, 0x3b, 0x1ecc, 0x6b, 0x74, 0x3b, 0x4e, 0x1ecd, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0xe9, 0x6e, 0xfa, -0xe1, 0x72, 0x69, 0x3b, 0x46, 0x1eb9, 0x301, 0x62, 0xfa, 0xe1, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x3b, 0xc9, 0x70, -0x72, 0x65, 0x6c, 0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x1ecc, 0x67, -0x1ecd, 0x73, 0x74, 0x3b, 0x53, 0x1eb9, 0x70, 0x74, 0x1eb9, 0x301, 0x6d, 0x62, 0x61, 0x3b, 0x1ecc, 0x6b, 0x74, 0xf3, 0x62, 0x61, -0x3b, 0x4e, 0x1ecd, 0x76, 0x1eb9, 0x301, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x1eb9, 0x301, 0x6d, 0x62, 0x61, 0x3b, 0x4a, -0xe9, 0x6e, 0x3b, 0x46, 0x1eb9, 0x301, 0x62, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x3b, 0xc9, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x65, -0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x1ecc, 0x67, 0x1ecd, 0x3b, 0x53, 0x1eb9, 0x70, 0x3b, 0x1ecc, 0x6b, 0x74, -0x3b, 0x4e, 0x1ecd, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b +0x9c1, 0x9b2, 0x3b, 0x986, 0x3b, 0x9b8, 0x9c7, 0x3b, 0x993, 0x3b, 0x9a8, 0x9ac, 0x3b, 0x9a1, 0x9bf, 0x3b, 0x99c, 0x9be, 0x9a8, 0x9c1, +0x9f1, 0x9be, 0x9b0, 0x9bf, 0x3b, 0x9ab, 0x9c7, 0x9ac, 0x9cd, 0x9b0, 0x9c1, 0x9f1, 0x9be, 0x9b0, 0x9bf, 0x3b, 0x9ae, 0x9be, 0x9b0, 0x9cd, +0x99a, 0x3b, 0x98f, 0x9aa, 0x9cd, 0x9b0, 0x9bf, 0x9b2, 0x3b, 0x9ae, 0x9c7, 0x3b, 0x99c, 0x9c1, 0x9a8, 0x3b, 0x99c, 0x9c1, 0x9b2, 0x9be, +0x987, 0x3b, 0x986, 0x997, 0x9b8, 0x9cd, 0x99f, 0x3b, 0x9b8, 0x9c7, 0x9aa, 0x9cd, 0x99f, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, 0x993, +0x995, 0x9cd, 0x99f, 0x9cb, 0x9ac, 0x9b0, 0x3b, 0x9a8, 0x9ad, 0x9c7, 0x9ae, 0x9cd, 0x9ac, 0x9b0, 0x3b, 0x9a1, 0x9bf, 0x9b8, 0x9c7, 0x9ae, +0x9cd, 0x9ac, 0x9b0, 0x3b, 0x99c, 0x9be, 0x3b, 0x9ab, 0x9c7, 0x3b, 0x9ae, 0x9be, 0x9b0, 0x3b, 0x98f, 0x9aa, 0x3b, 0x9ae, 0x9c7, 0x3b, +0x99c, 0x9c1, 0x9a8, 0x3b, 0x99c, 0x9c1, 0x9b2, 0x3b, 0x986, 0x3b, 0x9b8, 0x9c7, 0x3b, 0x993, 0x995, 0x3b, 0x9a8, 0x9ac, 0x3b, 0x9a1, +0x9bf, 0x3b, 0x1c61, 0x1c5f, 0x1c71, 0x3b, 0x1c6f, 0x1c77, 0x1c5f, 0x3b, 0x1c62, 0x1c5f, 0x1c68, 0x3b, 0x1c5f, 0x1c6f, 0x1c68, 0x3b, 0x1c62, 0x1c6e, +0x3b, 0x1c61, 0x1c69, 0x1c71, 0x3b, 0x1c61, 0x1c69, 0x1c5e, 0x3b, 0x1c5f, 0x1c5c, 0x1c5f, 0x3b, 0x1c65, 0x1c6e, 0x1c6f, 0x3b, 0x1c5a, 0x1c60, 0x1c74, +0x3b, 0x1c71, 0x1c5f, 0x1c63, 0x3b, 0x1c6b, 0x1c64, 0x1c65, 0x3b, 0x1c61, 0x1c5f, 0x1c71, 0x1c63, 0x1c5f, 0x1c68, 0x1c64, 0x3b, 0x1c6f, 0x1c77, 0x1c5f, +0x1c68, 0x1c63, 0x1c5f, 0x1c68, 0x1c64, 0x3b, 0x1c62, 0x1c5f, 0x1c68, 0x1c6a, 0x3b, 0x1c5f, 0x1c6f, 0x1c68, 0x1c6e, 0x1c5e, 0x3b, 0x1c62, 0x1c6e, 0x3b, +0x1c61, 0x1c69, 0x1c71, 0x3b, 0x1c61, 0x1c69, 0x1c5e, 0x1c5f, 0x1c6d, 0x3b, 0x1c5f, 0x1c5c, 0x1c5f, 0x1c65, 0x1c5b, 0x3b, 0x1c65, 0x1c6e, 0x1c6f, 0x1c74, +0x1c6e, 0x1c62, 0x1c75, 0x1c5f, 0x1c68, 0x3b, 0x1c5a, 0x1c60, 0x1c74, 0x1c5a, 0x1c75, 0x1c5f, 0x1c68, 0x3b, 0x1c71, 0x1c5f, 0x1c63, 0x1c5f, 0x1c62, 0x1c75, +0x1c5f, 0x1c68, 0x3b, 0x1c6b, 0x1c64, 0x1c65, 0x1c5f, 0x1c62, 0x1c75, 0x1c5f, 0x1c68, 0x3b, 0x1c61, 0x3b, 0x1c6f, 0x3b, 0x1c62, 0x3b, 0x1c5f, 0x3b, +0x1c62, 0x3b, 0x1c61, 0x3b, 0x1c61, 0x3b, 0x1c5f, 0x3b, 0x1c65, 0x3b, 0x1c5a, 0x3b, 0x1c71, 0x3b, 0x1c6b, 0x3b, 0x57, 0x69, 0xf3, 0x74, +0x68, 0x65, 0x21f, 0x69, 0x6b, 0x61, 0x20, 0x57, 0xed, 0x3b, 0x54, 0x68, 0x69, 0x79, 0xf3, 0x21f, 0x65, 0x79, 0x75, 0x14b, +0x6b, 0x61, 0x20, 0x57, 0xed, 0x3b, 0x49, 0x161, 0x74, 0xe1, 0x77, 0x69, 0x10d, 0x68, 0x61, 0x79, 0x61, 0x7a, 0x61, 0x14b, +0x20, 0x57, 0xed, 0x3b, 0x50, 0x21f, 0x65, 0x17e, 0xed, 0x74, 0x21f, 0x6f, 0x20, 0x57, 0xed, 0x3b, 0x10c, 0x68, 0x61, 0x14b, +0x77, 0xe1, 0x70, 0x65, 0x74, 0x21f, 0x6f, 0x20, 0x57, 0xed, 0x3b, 0x57, 0xed, 0x70, 0x61, 0x7a, 0x75, 0x6b, 0x21f, 0x61, +0x2d, 0x77, 0x61, 0x161, 0x74, 0xe9, 0x20, 0x57, 0xed, 0x3b, 0x10c, 0x68, 0x61, 0x14b, 0x70, 0x21f, 0xe1, 0x73, 0x61, 0x70, +0x61, 0x20, 0x57, 0xed, 0x3b, 0x57, 0x61, 0x73, 0xfa, 0x74, 0x21f, 0x75, 0x14b, 0x20, 0x57, 0xed, 0x3b, 0x10c, 0x68, 0x61, +0x14b, 0x77, 0xe1, 0x70, 0x65, 0x1e7, 0x69, 0x20, 0x57, 0xed, 0x3b, 0x10c, 0x68, 0x61, 0x14b, 0x77, 0xe1, 0x70, 0x65, 0x2d, +0x6b, 0x61, 0x73, 0x6e, 0xe1, 0x20, 0x57, 0xed, 0x3b, 0x57, 0x61, 0x6e, 0xed, 0x79, 0x65, 0x74, 0x75, 0x20, 0x57, 0xed, +0x3b, 0x54, 0x21f, 0x61, 0x68, 0xe9, 0x6b, 0x61, 0x70, 0x161, 0x75, 0x14b, 0x20, 0x57, 0xed, 0x3b, 0x6a9, 0x627, 0x646, 0x648, +0x648, 0x646, 0x6cc, 0x20, 0x62f, 0x648, 0x648, 0x6d5, 0x645, 0x3b, 0x634, 0x648, 0x628, 0x627, 0x62a, 0x3b, 0x626, 0x627, 0x632, 0x627, +0x631, 0x3b, 0x646, 0x6cc, 0x633, 0x627, 0x646, 0x3b, 0x626, 0x627, 0x6cc, 0x627, 0x631, 0x3b, 0x62d, 0x648, 0x632, 0x6d5, 0x6cc, 0x631, +0x627, 0x646, 0x3b, 0x62a, 0x6d5, 0x645, 0x648, 0x648, 0x632, 0x3b, 0x626, 0x627, 0x628, 0x3b, 0x626, 0x6d5, 0x6cc, 0x644, 0x648, 0x648, +0x644, 0x3b, 0x62a, 0x634, 0x631, 0x6cc, 0x646, 0x6cc, 0x20, 0x6cc, 0x6d5, 0x6a9, 0x6d5, 0x645, 0x3b, 0x62a, 0x634, 0x631, 0x6cc, 0x646, +0x6cc, 0x20, 0x62f, 0x648, 0x648, 0x6d5, 0x645, 0x3b, 0x6a9, 0x627, 0x646, 0x648, 0x646, 0x6cc, 0x20, 0x6cc, 0x6d5, 0x6a9, 0x6d5, 0x645, +0x3b, 0x6a9, 0x3b, 0x634, 0x3b, 0x626, 0x3b, 0x646, 0x3b, 0x626, 0x3b, 0x62d, 0x3b, 0x62a, 0x3b, 0x626, 0x3b, 0x626, 0x3b, 0x62a, +0x3b, 0x62a, 0x3b, 0x6a9, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x11b, 0x72, 0x3b, 0x61, 0x70, 0x72, +0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x77, 0x67, 0x3b, 0x73, 0x65, 0x70, +0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x77, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, +0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x11b, 0x72, 0x63, 0x3b, 0x61, 0x70, 0x72, 0x79, 0x6c, 0x3b, 0x6d, +0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6a, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6a, 0x3b, 0x61, 0x77, 0x67, 0x75, 0x73, +0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, +0x6e, 0x6f, 0x77, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6a, 0x61, +0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x11b, 0x72, 0x2e, 0x3b, 0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x61, +0x6a, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, 0x61, 0x77, 0x67, 0x2e, 0x3b, 0x73, 0x65, +0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x77, 0x2e, 0x3b, 0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, +0x6e, 0x75, 0x61, 0x72, 0x61, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x61, 0x3b, 0x6d, 0x11b, 0x72, 0x63, 0x61, +0x3b, 0x61, 0x70, 0x72, 0x79, 0x6c, 0x61, 0x3b, 0x6d, 0x61, 0x6a, 0x61, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6a, 0x61, 0x3b, +0x6a, 0x75, 0x6c, 0x69, 0x6a, 0x61, 0x3b, 0x61, 0x77, 0x67, 0x75, 0x73, 0x74, 0x61, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, +0x6d, 0x62, 0x72, 0x61, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x61, 0x3b, 0x6e, 0x6f, 0x77, 0x65, 0x6d, 0x62, 0x72, +0x61, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, +0x11b, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x65, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, +0x77, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x77, 0x3b, 0x64, 0x65, 0x63, 0x3b, 0x6a, +0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x11b, 0x72, 0x63, 0x3b, 0x61, +0x70, 0x72, 0x79, 0x6c, 0x3b, 0x6d, 0x65, 0x6a, 0x61, 0x3b, 0x6a, 0x75, 0x6e, 0x69, 0x6a, 0x3b, 0x6a, 0x75, 0x6c, 0x69, +0x6a, 0x3b, 0x61, 0x77, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6f, +0x6b, 0x74, 0x6f, 0x62, 0x65, 0x72, 0x3b, 0x6e, 0x6f, 0x77, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, +0x6d, 0x62, 0x65, 0x72, 0x3b, 0x6a, 0x61, 0x6e, 0x2e, 0x3b, 0x66, 0x65, 0x62, 0x2e, 0x3b, 0x6d, 0x11b, 0x72, 0x2e, 0x3b, +0x61, 0x70, 0x72, 0x2e, 0x3b, 0x6d, 0x65, 0x6a, 0x2e, 0x3b, 0x6a, 0x75, 0x6e, 0x2e, 0x3b, 0x6a, 0x75, 0x6c, 0x2e, 0x3b, +0x61, 0x77, 0x67, 0x2e, 0x3b, 0x73, 0x65, 0x70, 0x2e, 0x3b, 0x6f, 0x6b, 0x74, 0x2e, 0x3b, 0x6e, 0x6f, 0x77, 0x2e, 0x3b, +0x64, 0x65, 0x63, 0x2e, 0x3b, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x61, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, +0x61, 0x3b, 0x6d, 0x11b, 0x72, 0x63, 0x61, 0x3b, 0x61, 0x70, 0x72, 0x79, 0x6c, 0x61, 0x3b, 0x6d, 0x65, 0x6a, 0x65, 0x3b, +0x6a, 0x75, 0x6e, 0x69, 0x6a, 0x61, 0x3b, 0x6a, 0x75, 0x6c, 0x69, 0x6a, 0x61, 0x3b, 0x61, 0x77, 0x67, 0x75, 0x73, 0x74, +0x61, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x72, 0x61, 0x3b, +0x6e, 0x6f, 0x77, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x72, 0x61, 0x3b, 0x75, 0x111, +0x69, 0x76, 0x3b, 0x6b, 0x75, 0x6f, 0x76, 0xe2, 0x3b, 0x6e, 0x6a, 0x75, 0x68, 0x10d, 0xe2, 0x3b, 0x63, 0x75, 0xe1, 0x14b, +0x75, 0x69, 0x3b, 0x76, 0x79, 0x65, 0x73, 0x69, 0x3b, 0x6b, 0x65, 0x73, 0x69, 0x3b, 0x73, 0x79, 0x65, 0x69, 0x6e, 0x69, +0x3b, 0x70, 0x6f, 0x72, 0x67, 0x65, 0x3b, 0x10d, 0x6f, 0x68, 0x10d, 0xe2, 0x3b, 0x72, 0x6f, 0x6f, 0x76, 0x76, 0xe2, 0x64, +0x3b, 0x73, 0x6b, 0x61, 0x6d, 0x6d, 0xe2, 0x3b, 0x6a, 0x75, 0x6f, 0x76, 0x6c, 0xe2, 0x3b, 0x75, 0x111, 0x111, 0xe2, 0x69, +0x76, 0x65, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x6b, 0x75, 0x6f, 0x76, 0xe2, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x6e, +0x6a, 0x75, 0x68, 0x10d, 0xe2, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x63, 0x75, 0xe1, 0x14b, 0x75, 0x69, 0x6d, 0xe1, 0xe1, +0x6e, 0x75, 0x3b, 0x76, 0x79, 0x65, 0x73, 0x69, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x6b, 0x65, 0x73, 0x69, 0x6d, 0xe1, +0xe1, 0x6e, 0x75, 0x3b, 0x73, 0x79, 0x65, 0x69, 0x6e, 0x69, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x70, 0x6f, 0x72, 0x67, +0x65, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x10d, 0x6f, 0x68, 0x10d, 0xe2, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x72, 0x6f, +0x6f, 0x76, 0x76, 0xe2, 0x64, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x73, 0x6b, 0x61, 0x6d, 0x6d, 0xe2, 0x6d, 0xe1, 0xe1, +0x6e, 0x75, 0x3b, 0x6a, 0x75, 0x6f, 0x76, 0x6c, 0xe2, 0x6d, 0xe1, 0xe1, 0x6e, 0x75, 0x3b, 0x55, 0x3b, 0x4b, 0x3b, 0x4e, +0x4a, 0x3b, 0x43, 0x3b, 0x56, 0x3b, 0x4b, 0x3b, 0x53, 0x3b, 0x50, 0x3b, 0x10c, 0x3b, 0x52, 0x3b, 0x53, 0x3b, 0x4a, 0x3b, +0x62c, 0x627, 0x646, 0x6a4, 0x6cc, 0x6d5, 0x3b, 0x641, 0x626, 0x6a4, 0x631, 0x6cc, 0x6d5, 0x3b, 0x645, 0x627, 0x631, 0x633, 0x3b, 0x622, +0x6a4, 0x631, 0x6cc, 0x644, 0x3b, 0x645, 0x626, 0x6cc, 0x3b, 0x62c, 0x648, 0x659, 0x623, 0x646, 0x3b, 0x62c, 0x648, 0x659, 0x644, 0x627, +0x3b, 0x622, 0x6af, 0x648, 0x633, 0x62a, 0x3b, 0x633, 0x626, 0x67e, 0x62a, 0x627, 0x645, 0x631, 0x3b, 0x626, 0x648, 0x6a9, 0x62a, 0x648, +0x6a4, 0x631, 0x3b, 0x646, 0x648, 0x6a4, 0x627, 0x645, 0x631, 0x3b, 0x62f, 0x626, 0x633, 0x627, 0x645, 0x631, 0x3b, 0x45, 0x3b, 0x50, +0x3b, 0x4d, 0x3b, 0x41, 0x3b, 0x4d, 0x3b, 0x48, 0x3b, 0x48, 0x3b, 0x41, 0x3b, 0x53, 0x3b, 0x4f, 0x3b, 0x4e, 0x3b, 0x44, +0x3b, 0x4a, 0xe9, 0x6e, 0x3b, 0x46, 0x1eb9, 0x301, 0x62, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x3b, 0xc9, 0x70, 0x72, 0x3b, 0x4d, +0x65, 0x65, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x1ecc, 0x301, 0x67, 0x1ecd, 0x3b, 0x53, 0x1eb9, 0x70, 0x3b, +0x1ecc, 0x6b, 0x74, 0x3b, 0x4e, 0x1ecd, 0x76, 0x3b, 0x44, 0x69, 0x73, 0x3b, 0x4a, 0xe9, 0x6e, 0xfa, 0xe1, 0x72, 0x69, 0x3b, +0x46, 0x1eb9, 0x301, 0x62, 0xfa, 0xe1, 0x72, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x3b, 0xc9, 0x70, 0x72, 0x65, 0x6c, 0x3b, +0x4d, 0x65, 0x65, 0x3b, 0x4a, 0x75, 0x6e, 0x3b, 0x4a, 0x75, 0x6c, 0x61, 0x69, 0x3b, 0x1ecc, 0x67, 0x1ecd, 0x73, 0x74, 0x3b, +0x53, 0x1eb9, 0x70, 0x74, 0x1eb9, 0x301, 0x6d, 0x62, 0x61, 0x3b, 0x1ecc, 0x6b, 0x74, 0xf3, 0x62, 0x61, 0x3b, 0x4e, 0x1ecd, 0x76, +0x1eb9, 0x301, 0x6d, 0x62, 0x61, 0x3b, 0x44, 0x69, 0x73, 0x1eb9, 0x301, 0x6d, 0x62, 0x61, 0x3b, 0x4a, 0xe9, 0x6e, 0x3b, 0x46, +0x1eb9, 0x301, 0x62, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x3b, 0xc9, 0x70, 0x72, 0x3b, 0x4d, 0x65, 0x65, 0x3b, 0x4a, 0x75, 0x6e, +0x3b, 0x4a, 0x75, 0x6c, 0x3b, 0x1ecc, 0x67, 0x1ecd, 0x3b, 0x53, 0x1eb9, 0x70, 0x3b, 0x1ecc, 0x6b, 0x74, 0x3b, 0x4e, 0x1ecd, 0x76, +0x3b, 0x44, 0x69, 0x73, 0x3b }; // GENERATED PART ENDS HERE diff -Naur a/qtbase/src/corelib/time/qtimezone.cpp b/qtbase/src/corelib/time/qtimezone.cpp --- a/qtbase/src/corelib/time/qtimezone.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/time/qtimezone.cpp 2022-01-25 17:23:44.148496276 +0000 @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2013 John Layt +** Copyright (C) 2020 John Layt ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtCore module of the Qt Toolkit. @@ -975,9 +975,15 @@ } #ifndef QT_NO_DATASTREAM +// Invalid, as an IANA ID: too long, starts with - and has other invalid characters in it +static inline QString invalidId() { return QStringLiteral("-No Time Zone Specified!"); } + QDataStream &operator<<(QDataStream &ds, const QTimeZone &tz) { - tz.d->serialize(ds); + if (tz.isValid()) + tz.d->serialize(ds); + else + ds << invalidId(); return ds; } @@ -985,7 +991,9 @@ { QString ianaId; ds >> ianaId; - if (ianaId == QLatin1String("OffsetFromUtc")) { + if (ianaId == invalidId()) { + tz = QTimeZone(); + } else if (ianaId == QLatin1String("OffsetFromUtc")) { int utcOffset; QString name; QString abbreviation; diff -Naur a/qtbase/src/corelib/time/qtimezoneprivate_data_p.h b/qtbase/src/corelib/time/qtimezoneprivate_data_p.h --- a/qtbase/src/corelib/time/qtimezoneprivate_data_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/time/qtimezoneprivate_data_p.h 2022-01-25 17:23:44.090496485 +0000 @@ -115,8 +115,8 @@ // GENERATED PART STARTS HERE /* - This part of the file was generated on 2020-02-28 from the - Common Locale Data Repository v36 file supplemental/windowsZones.xml + This part of the file was generated on 2020-11-09 from the + Common Locale Data Repository v38 file supplemental/windowsZones.xml http://www.unicode.org/cldr/ @@ -187,236 +187,235 @@ { 28, 127, 1359 }, // Central European Standard Time / Macedonia { 28, 172, 1373 }, // Central European Standard Time / Poland { 29, 0, 1387 }, // Central Pacific Standard Time / AnyCountry - { 29, 13, 1398 }, // Central Pacific Standard Time / Australia - { 29, 140, 1419 }, // Central Pacific Standard Time / Micronesia - { 29, 153, 1449 }, // Central Pacific Standard Time / New Caledonia - { 29, 193, 1464 }, // Central Pacific Standard Time / Solomon Islands - { 29, 229, 1484 }, // Central Pacific Standard Time / Vanuatu - { 30, 139, 1498 }, // Central Standard Time (Mexico) / Mexico - { 31, 0, 1574 }, // Central Standard Time / AnyCountry - { 31, 38, 1582 }, // Central Standard Time / Canada - { 31, 139, 1657 }, // Central Standard Time / Mexico - { 31, 225, 1675 }, // Central Standard Time / United States - { 32, 44, 1843 }, // China Standard Time / China - { 32, 97, 1857 }, // China Standard Time / Hong Kong - { 32, 126, 1872 }, // China Standard Time / Macau - { 33, 154, 1883 }, // Chatham Islands Standard Time / New Zealand - { 34, 55, 1899 }, // Cuba Standard Time / Cuba - { 35, 0, 1914 }, // Dateline Standard Time / AnyCountry - { 36, 0, 1925 }, // E. Africa Standard Time / AnyCountry - { 36, 8, 1935 }, // E. Africa Standard Time / Antarctica - { 36, 48, 1952 }, // E. Africa Standard Time / Comoros - { 36, 59, 1966 }, // E. Africa Standard Time / Djibouti - { 36, 67, 1982 }, // E. Africa Standard Time / Eritrea - { 36, 69, 1996 }, // E. Africa Standard Time / Ethiopia - { 36, 111, 2015 }, // E. Africa Standard Time / Kenya - { 36, 128, 2030 }, // E. Africa Standard Time / Madagascar - { 36, 138, 2050 }, // E. Africa Standard Time / Mayotte - { 36, 194, 2065 }, // E. Africa Standard Time / Somalia - { 36, 210, 2082 }, // E. Africa Standard Time / Tanzania - { 36, 221, 2103 }, // E. Africa Standard Time / Uganda - { 36, 254, 2118 }, // E. Africa Standard Time / South Sudan - { 37, 13, 2130 }, // E. Australia Standard Time / Australia - { 38, 141, 2168 }, // E. Europe Standard Time / Moldova - { 39, 30, 2184 }, // E. South America Standard Time / Brazil - { 40, 43, 2202 }, // Easter Island Standard Time / Chile - { 41, 0, 2217 }, // Eastern Standard Time / AnyCountry - { 41, 16, 2225 }, // Eastern Standard Time / Bahamas - { 41, 38, 2240 }, // Eastern Standard Time / Canada - { 41, 225, 2345 }, // Eastern Standard Time / United States - { 42, 139, 2502 }, // Eastern Standard Time (Mexico) / Mexico - { 43, 64, 2517 }, // Egypt Standard Time / Egypt - { 44, 178, 2530 }, // Ekaterinburg Standard Time / Russia - { 45, 72, 2549 }, // Fiji Standard Time / Fiji - { 46, 33, 2562 }, // FLE Standard Time / Bulgaria - { 46, 68, 2575 }, // FLE Standard Time / Estonia - { 46, 73, 2590 }, // FLE Standard Time / Finland - { 46, 118, 2606 }, // FLE Standard Time / Latvia - { 46, 124, 2618 }, // FLE Standard Time / Lithuania - { 46, 222, 2633 }, // FLE Standard Time / Ukraine - { 46, 248, 2679 }, // FLE Standard Time / Aland Islands - { 47, 81, 2696 }, // Georgian Standard Time / Georgia - { 48, 71, 2709 }, // GMT Standard Time / Faroe Islands - { 48, 75, 2725 }, // GMT Standard Time / Guernsey - { 48, 104, 2741 }, // GMT Standard Time / Ireland - { 48, 173, 2755 }, // GMT Standard Time / Portugal - { 48, 197, 2786 }, // GMT Standard Time / Spain - { 48, 224, 2802 }, // GMT Standard Time / United Kingdom - { 48, 251, 2816 }, // GMT Standard Time / Isle Of Man - { 48, 252, 2835 }, // GMT Standard Time / Jersey - { 49, 86, 2849 }, // Greenland Standard Time / Greenland - { 50, 34, 2865 }, // Greenwich Standard Time / Burkina Faso - { 50, 53, 2884 }, // Greenwich Standard Time / Ivory Coast - { 50, 80, 2899 }, // Greenwich Standard Time / Gambia - { 50, 83, 2913 }, // Greenwich Standard Time / Ghana - { 50, 91, 2926 }, // Greenwich Standard Time / Guinea - { 50, 92, 2941 }, // Greenwich Standard Time / Guinea Bissau - { 50, 99, 2955 }, // Greenwich Standard Time / Iceland - { 50, 121, 2974 }, // Greenwich Standard Time / Liberia - { 50, 132, 2990 }, // Greenwich Standard Time / Mali - { 50, 136, 3004 }, // Greenwich Standard Time / Mauritania - { 50, 187, 3022 }, // Greenwich Standard Time / Senegal - { 50, 189, 3035 }, // Greenwich Standard Time / Sierra Leone - { 50, 199, 3051 }, // Greenwich Standard Time / Saint Helena - { 50, 212, 3070 }, // Greenwich Standard Time / Togo - { 51, 56, 3082 }, // GTB Standard Time / Cyprus - { 51, 85, 3110 }, // GTB Standard Time / Greece - { 51, 177, 3124 }, // GTB Standard Time / Romania - { 52, 94, 3141 }, // Haiti Standard Time / Haiti - { 53, 0, 3164 }, // Hawaiian Standard Time / AnyCountry - { 53, 51, 3175 }, // Hawaiian Standard Time / Cook Islands - { 53, 77, 3193 }, // Hawaiian Standard Time / French Polynesia - { 53, 225, 3208 }, // Hawaiian Standard Time / United States - { 53, 226, 3225 }, // Hawaiian Standard Time / United States Minor Outlying Islands - { 54, 100, 3242 }, // India Standard Time / India - { 55, 102, 3256 }, // Iran Standard Time / Iran - { 56, 105, 3268 }, // Israel Standard Time / Israel - { 57, 109, 3283 }, // Jordan Standard Time / Jordan - { 58, 178, 3294 }, // Kaliningrad Standard Time / Russia - { 59, 114, 3313 }, // Korea Standard Time / South Korea - { 60, 122, 3324 }, // Libya Standard Time / Libya - { 61, 0, 3339 }, // Line Islands Standard Time / AnyCountry - { 61, 112, 3350 }, // Line Islands Standard Time / Kiribati - { 62, 13, 3369 }, // Lord Howe Standard Time / Australia - { 63, 178, 3389 }, // Magadan Standard Time / Russia - { 64, 43, 3402 }, // Magallanes Standard Time / Chile - { 65, 77, 3423 }, // Marquesas Standard Time / French Polynesia - { 66, 137, 3441 }, // Mauritius Standard Time / Mauritius - { 66, 176, 3458 }, // Mauritius Standard Time / Reunion - { 66, 188, 3473 }, // Mauritius Standard Time / Seychelles - { 67, 119, 3485 }, // Middle East Standard Time / Lebanon - { 68, 227, 3497 }, // Montevideo Standard Time / Uruguay - { 69, 145, 3516 }, // Morocco Standard Time / Morocco - { 69, 236, 3534 }, // Morocco Standard Time / Western Sahara - { 70, 139, 3550 }, // Mountain Standard Time (Mexico) / Mexico - { 71, 0, 3585 }, // Mountain Standard Time / AnyCountry - { 71, 38, 3593 }, // Mountain Standard Time / Canada - { 71, 139, 3667 }, // Mountain Standard Time / Mexico - { 71, 225, 3683 }, // Mountain Standard Time / United States - { 72, 46, 3712 }, // Myanmar Standard Time / Cocos Islands - { 72, 147, 3725 }, // Myanmar Standard Time / Myanmar - { 73, 178, 3738 }, // N. Central Asia Standard Time / Russia - { 74, 148, 3755 }, // Namibia Standard Time / Namibia - { 75, 150, 3771 }, // Nepal Standard Time / Nepal - { 76, 8, 3785 }, // New Zealand Standard Time / Antarctica - { 76, 154, 3804 }, // New Zealand Standard Time / New Zealand - { 77, 38, 3821 }, // Newfoundland Standard Time / Canada - { 78, 159, 3838 }, // Norfolk Standard Time / Norfolk Island - { 79, 178, 3854 }, // North Asia East Standard Time / Russia - { 80, 178, 3867 }, // North Asia Standard Time / Russia - { 81, 113, 3902 }, // North Korea Standard Time / North Korea - { 82, 178, 3917 }, // Omsk Standard Time / Russia - { 83, 43, 3927 }, // Pacific SA Standard Time / Chile - { 84, 0, 3944 }, // Pacific Standard Time / AnyCountry - { 84, 38, 3952 }, // Pacific Standard Time / Canada - { 84, 225, 4004 }, // Pacific Standard Time / United States - { 85, 139, 4024 }, // Pacific Standard Time (Mexico) / Mexico - { 86, 163, 4061 }, // Pakistan Standard Time / Pakistan - { 87, 168, 4074 }, // Paraguay Standard Time / Paraguay - { 88, 110, 4091 }, // Qyzylorda Standard Time / Kazakhstan - { 89, 21, 4106 }, // Romance Standard Time / Belgium - { 89, 58, 4122 }, // Romance Standard Time / Denmark - { 89, 74, 4140 }, // Romance Standard Time / France - { 89, 197, 4153 }, // Romance Standard Time / Spain - { 90, 178, 4180 }, // Russia Time Zone 3 / Russia - { 91, 178, 4194 }, // Russia Time Zone 10 / Russia - { 92, 178, 4213 }, // Russia Time Zone 11 / Russia - { 93, 178, 4240 }, // Russian Standard Time / Russia - { 93, 222, 4267 }, // Russian Standard Time / Ukraine - { 94, 0, 4285 }, // SA Eastern Standard Time / AnyCountry - { 94, 8, 4295 }, // SA Eastern Standard Time / Antarctica - { 94, 30, 4332 }, // SA Eastern Standard Time / Brazil - { 94, 70, 4411 }, // SA Eastern Standard Time / Falkland Islands - { 94, 76, 4428 }, // SA Eastern Standard Time / French Guiana - { 94, 202, 4444 }, // SA Eastern Standard Time / Suriname - { 95, 0, 4463 }, // SA Pacific Standard Time / AnyCountry - { 95, 30, 4473 }, // SA Pacific Standard Time / Brazil - { 95, 38, 4509 }, // SA Pacific Standard Time / Canada - { 95, 40, 4531 }, // SA Pacific Standard Time / Cayman Islands - { 95, 47, 4546 }, // SA Pacific Standard Time / Colombia - { 95, 63, 4561 }, // SA Pacific Standard Time / Ecuador - { 95, 107, 4579 }, // SA Pacific Standard Time / Jamaica - { 95, 166, 4595 }, // SA Pacific Standard Time / Panama - { 95, 169, 4610 }, // SA Pacific Standard Time / Peru - { 96, 0, 4623 }, // SA Western Standard Time / AnyCountry - { 96, 7, 4633 }, // SA Western Standard Time / Anguilla - { 96, 9, 4650 }, // SA Western Standard Time / Antigua And Barbuda - { 96, 12, 4666 }, // SA Western Standard Time / Aruba - { 96, 19, 4680 }, // SA Western Standard Time / Barbados - { 96, 26, 4697 }, // SA Western Standard Time / Bolivia - { 96, 30, 4712 }, // SA Western Standard Time / Brazil - { 96, 38, 4765 }, // SA Western Standard Time / Canada - { 96, 60, 4786 }, // SA Western Standard Time / Dominica - { 96, 61, 4803 }, // SA Western Standard Time / Dominican Republic - { 96, 87, 4825 }, // SA Western Standard Time / Grenada - { 96, 88, 4841 }, // SA Western Standard Time / Guadeloupe - { 96, 93, 4860 }, // SA Western Standard Time / Guyana - { 96, 135, 4875 }, // SA Western Standard Time / Martinique - { 96, 144, 4894 }, // SA Western Standard Time / Montserrat - { 96, 152, 4913 }, // SA Western Standard Time / Cura Sao - { 96, 174, 4929 }, // SA Western Standard Time / Puerto Rico - { 96, 180, 4949 }, // SA Western Standard Time / Saint Kitts And Nevis - { 96, 181, 4966 }, // SA Western Standard Time / Saint Lucia - { 96, 182, 4983 }, // SA Western Standard Time / Saint Vincent And The Grenadines - { 96, 215, 5002 }, // SA Western Standard Time / Trinidad And Tobago - { 96, 233, 5024 }, // SA Western Standard Time / British Virgin Islands - { 96, 234, 5040 }, // SA Western Standard Time / United States Virgin Islands - { 96, 244, 5058 }, // SA Western Standard Time / Saint Barthelemy - { 96, 245, 5080 }, // SA Western Standard Time / Saint Martin - { 96, 255, 5096 }, // SA Western Standard Time / Bonaire - { 96, 256, 5115 }, // SA Western Standard Time / Sint Maarten - { 97, 200, 5137 }, // Saint Pierre Standard Time / Saint Pierre And Miquelon - { 98, 178, 5154 }, // Sakhalin Standard Time / Russia - { 99, 183, 5168 }, // Samoa Standard Time / Samoa - { 100, 185, 5181 }, // Sao Tome Standard Time / Sao Tome And Principe - { 101, 178, 5197 }, // Saratov Standard Time / Russia - { 102, 0, 5212 }, // SE Asia Standard Time / AnyCountry - { 102, 8, 5222 }, // SE Asia Standard Time / Antarctica - { 102, 36, 5239 }, // SE Asia Standard Time / Cambodia - { 102, 45, 5255 }, // SE Asia Standard Time / Christmas Island - { 102, 101, 5272 }, // SE Asia Standard Time / Indonesia - { 102, 117, 5300 }, // SE Asia Standard Time / Laos - { 102, 211, 5315 }, // SE Asia Standard Time / Thailand - { 102, 232, 5328 }, // SE Asia Standard Time / Vietnam - { 103, 0, 5340 }, // Singapore Standard Time / AnyCountry - { 103, 8, 5350 }, // Singapore Standard Time / Antarctica - { 103, 32, 5367 }, // Singapore Standard Time / Brunei - { 103, 101, 5379 }, // Singapore Standard Time / Indonesia - { 103, 130, 5393 }, // Singapore Standard Time / Malaysia - { 103, 170, 5424 }, // Singapore Standard Time / Philippines - { 103, 190, 5436 }, // Singapore Standard Time / Singapore - { 104, 0, 5451 }, // South Africa Standard Time / AnyCountry - { 104, 28, 5461 }, // South Africa Standard Time / Botswana - { 104, 35, 5477 }, // South Africa Standard Time / Burundi - { 104, 49, 5494 }, // South Africa Standard Time / Congo Kinshasa - { 104, 120, 5512 }, // South Africa Standard Time / Lesotho - { 104, 129, 5526 }, // South Africa Standard Time / Malawi - { 104, 146, 5542 }, // South Africa Standard Time / Mozambique - { 104, 179, 5556 }, // South Africa Standard Time / Rwanda - { 104, 195, 5570 }, // South Africa Standard Time / South Africa - { 104, 204, 5590 }, // South Africa Standard Time / Swaziland - { 104, 239, 5605 }, // South Africa Standard Time / Zambia - { 104, 240, 5619 }, // South Africa Standard Time / Zimbabwe - { 105, 198, 5633 }, // Sri Lanka Standard Time / Sri Lanka - { 106, 201, 5646 }, // Sudan Standard Time / Sudan - { 107, 207, 5662 }, // Syria Standard Time / Syria - { 108, 208, 5676 }, // Taipei Standard Time / Taiwan - { 109, 13, 5688 }, // Tasmania Standard Time / Australia - { 110, 30, 5722 }, // Tocantins Standard Time / Brazil - { 111, 0, 5740 }, // Tokyo Standard Time / AnyCountry - { 111, 62, 5750 }, // Tokyo Standard Time / East Timor - { 111, 101, 5760 }, // Tokyo Standard Time / Indonesia - { 111, 108, 5774 }, // Tokyo Standard Time / Japan - { 111, 164, 5785 }, // Tokyo Standard Time / Palau - { 112, 178, 5799 }, // Tomsk Standard Time / Russia - { 113, 214, 5810 }, // Tonga Standard Time / Tonga - { 114, 178, 5828 }, // Transbaikal Standard Time / Russia - { 115, 217, 5839 }, // Turkey Standard Time / Turkey - { 116, 219, 5855 }, // Turks And Caicos Standard Time / Turks And Caicos Islands - { 117, 143, 5874 }, // Ulaanbaatar Standard Time / Mongolia - { 118, 225, 5907 }, // US Eastern Standard Time / United States - { 119, 0, 5974 }, // US Mountain Standard Time / AnyCountry - { 119, 38, 5984 }, // US Mountain Standard Time / Canada + { 29, 8, 1398 }, // Central Pacific Standard Time / Antarctica + { 29, 140, 1415 }, // Central Pacific Standard Time / Micronesia + { 29, 153, 1445 }, // Central Pacific Standard Time / New Caledonia + { 29, 193, 1460 }, // Central Pacific Standard Time / Solomon Islands + { 29, 229, 1480 }, // Central Pacific Standard Time / Vanuatu + { 30, 139, 1494 }, // Central Standard Time (Mexico) / Mexico + { 31, 0, 1570 }, // Central Standard Time / AnyCountry + { 31, 38, 1578 }, // Central Standard Time / Canada + { 31, 139, 1653 }, // Central Standard Time / Mexico + { 31, 225, 1671 }, // Central Standard Time / United States + { 32, 44, 1839 }, // China Standard Time / China + { 32, 97, 1853 }, // China Standard Time / Hong Kong + { 32, 126, 1868 }, // China Standard Time / Macau + { 33, 154, 1879 }, // Chatham Islands Standard Time / New Zealand + { 34, 55, 1895 }, // Cuba Standard Time / Cuba + { 35, 0, 1910 }, // Dateline Standard Time / AnyCountry + { 36, 0, 1921 }, // E. Africa Standard Time / AnyCountry + { 36, 8, 1931 }, // E. Africa Standard Time / Antarctica + { 36, 48, 1948 }, // E. Africa Standard Time / Comoros + { 36, 59, 1962 }, // E. Africa Standard Time / Djibouti + { 36, 67, 1978 }, // E. Africa Standard Time / Eritrea + { 36, 69, 1992 }, // E. Africa Standard Time / Ethiopia + { 36, 111, 2011 }, // E. Africa Standard Time / Kenya + { 36, 128, 2026 }, // E. Africa Standard Time / Madagascar + { 36, 138, 2046 }, // E. Africa Standard Time / Mayotte + { 36, 194, 2061 }, // E. Africa Standard Time / Somalia + { 36, 210, 2078 }, // E. Africa Standard Time / Tanzania + { 36, 221, 2099 }, // E. Africa Standard Time / Uganda + { 36, 254, 2114 }, // E. Africa Standard Time / South Sudan + { 37, 13, 2126 }, // E. Australia Standard Time / Australia + { 38, 141, 2164 }, // E. Europe Standard Time / Moldova + { 39, 30, 2180 }, // E. South America Standard Time / Brazil + { 40, 43, 2198 }, // Easter Island Standard Time / Chile + { 41, 0, 2213 }, // Eastern Standard Time / AnyCountry + { 41, 16, 2221 }, // Eastern Standard Time / Bahamas + { 41, 38, 2236 }, // Eastern Standard Time / Canada + { 41, 225, 2341 }, // Eastern Standard Time / United States + { 42, 139, 2498 }, // Eastern Standard Time (Mexico) / Mexico + { 43, 64, 2513 }, // Egypt Standard Time / Egypt + { 44, 178, 2526 }, // Ekaterinburg Standard Time / Russia + { 45, 72, 2545 }, // Fiji Standard Time / Fiji + { 46, 33, 2558 }, // FLE Standard Time / Bulgaria + { 46, 68, 2571 }, // FLE Standard Time / Estonia + { 46, 73, 2586 }, // FLE Standard Time / Finland + { 46, 118, 2602 }, // FLE Standard Time / Latvia + { 46, 124, 2614 }, // FLE Standard Time / Lithuania + { 46, 222, 2629 }, // FLE Standard Time / Ukraine + { 46, 248, 2675 }, // FLE Standard Time / Aland Islands + { 47, 81, 2692 }, // Georgian Standard Time / Georgia + { 48, 71, 2705 }, // GMT Standard Time / Faroe Islands + { 48, 75, 2721 }, // GMT Standard Time / Guernsey + { 48, 104, 2737 }, // GMT Standard Time / Ireland + { 48, 173, 2751 }, // GMT Standard Time / Portugal + { 48, 197, 2782 }, // GMT Standard Time / Spain + { 48, 224, 2798 }, // GMT Standard Time / United Kingdom + { 48, 251, 2812 }, // GMT Standard Time / Isle Of Man + { 48, 252, 2831 }, // GMT Standard Time / Jersey + { 49, 86, 2845 }, // Greenland Standard Time / Greenland + { 50, 34, 2861 }, // Greenwich Standard Time / Burkina Faso + { 50, 53, 2880 }, // Greenwich Standard Time / Ivory Coast + { 50, 80, 2895 }, // Greenwich Standard Time / Gambia + { 50, 83, 2909 }, // Greenwich Standard Time / Ghana + { 50, 91, 2922 }, // Greenwich Standard Time / Guinea + { 50, 92, 2937 }, // Greenwich Standard Time / Guinea Bissau + { 50, 99, 2951 }, // Greenwich Standard Time / Iceland + { 50, 121, 2970 }, // Greenwich Standard Time / Liberia + { 50, 132, 2986 }, // Greenwich Standard Time / Mali + { 50, 136, 3000 }, // Greenwich Standard Time / Mauritania + { 50, 187, 3018 }, // Greenwich Standard Time / Senegal + { 50, 189, 3031 }, // Greenwich Standard Time / Sierra Leone + { 50, 199, 3047 }, // Greenwich Standard Time / Saint Helena + { 50, 212, 3066 }, // Greenwich Standard Time / Togo + { 51, 56, 3078 }, // GTB Standard Time / Cyprus + { 51, 85, 3106 }, // GTB Standard Time / Greece + { 51, 177, 3120 }, // GTB Standard Time / Romania + { 52, 94, 3137 }, // Haiti Standard Time / Haiti + { 53, 0, 3160 }, // Hawaiian Standard Time / AnyCountry + { 53, 51, 3171 }, // Hawaiian Standard Time / Cook Islands + { 53, 77, 3189 }, // Hawaiian Standard Time / French Polynesia + { 53, 225, 3204 }, // Hawaiian Standard Time / United States + { 53, 226, 3221 }, // Hawaiian Standard Time / United States Minor Outlying Islands + { 54, 100, 3238 }, // India Standard Time / India + { 55, 102, 3252 }, // Iran Standard Time / Iran + { 56, 105, 3264 }, // Israel Standard Time / Israel + { 57, 109, 3279 }, // Jordan Standard Time / Jordan + { 58, 178, 3290 }, // Kaliningrad Standard Time / Russia + { 59, 114, 3309 }, // Korea Standard Time / South Korea + { 60, 122, 3320 }, // Libya Standard Time / Libya + { 61, 0, 3335 }, // Line Islands Standard Time / AnyCountry + { 61, 112, 3346 }, // Line Islands Standard Time / Kiribati + { 62, 13, 3365 }, // Lord Howe Standard Time / Australia + { 63, 178, 3385 }, // Magadan Standard Time / Russia + { 64, 43, 3398 }, // Magallanes Standard Time / Chile + { 65, 77, 3419 }, // Marquesas Standard Time / French Polynesia + { 66, 137, 3437 }, // Mauritius Standard Time / Mauritius + { 66, 176, 3454 }, // Mauritius Standard Time / Reunion + { 66, 188, 3469 }, // Mauritius Standard Time / Seychelles + { 67, 119, 3481 }, // Middle East Standard Time / Lebanon + { 68, 227, 3493 }, // Montevideo Standard Time / Uruguay + { 69, 145, 3512 }, // Morocco Standard Time / Morocco + { 69, 236, 3530 }, // Morocco Standard Time / Western Sahara + { 70, 139, 3546 }, // Mountain Standard Time (Mexico) / Mexico + { 71, 0, 3581 }, // Mountain Standard Time / AnyCountry + { 71, 38, 3589 }, // Mountain Standard Time / Canada + { 71, 139, 3663 }, // Mountain Standard Time / Mexico + { 71, 225, 3679 }, // Mountain Standard Time / United States + { 72, 46, 3708 }, // Myanmar Standard Time / Cocos Islands + { 72, 147, 3721 }, // Myanmar Standard Time / Myanmar + { 73, 178, 3734 }, // N. Central Asia Standard Time / Russia + { 74, 148, 3751 }, // Namibia Standard Time / Namibia + { 75, 150, 3767 }, // Nepal Standard Time / Nepal + { 76, 8, 3781 }, // New Zealand Standard Time / Antarctica + { 76, 154, 3800 }, // New Zealand Standard Time / New Zealand + { 77, 38, 3817 }, // Newfoundland Standard Time / Canada + { 78, 159, 3834 }, // Norfolk Standard Time / Norfolk Island + { 79, 178, 3850 }, // North Asia East Standard Time / Russia + { 80, 178, 3863 }, // North Asia Standard Time / Russia + { 81, 113, 3898 }, // North Korea Standard Time / North Korea + { 82, 178, 3913 }, // Omsk Standard Time / Russia + { 83, 43, 3923 }, // Pacific SA Standard Time / Chile + { 84, 0, 3940 }, // Pacific Standard Time / AnyCountry + { 84, 38, 3948 }, // Pacific Standard Time / Canada + { 84, 225, 3966 }, // Pacific Standard Time / United States + { 85, 139, 3986 }, // Pacific Standard Time (Mexico) / Mexico + { 86, 163, 4023 }, // Pakistan Standard Time / Pakistan + { 87, 168, 4036 }, // Paraguay Standard Time / Paraguay + { 88, 110, 4053 }, // Qyzylorda Standard Time / Kazakhstan + { 89, 21, 4068 }, // Romance Standard Time / Belgium + { 89, 58, 4084 }, // Romance Standard Time / Denmark + { 89, 74, 4102 }, // Romance Standard Time / France + { 89, 197, 4115 }, // Romance Standard Time / Spain + { 90, 178, 4142 }, // Russia Time Zone 3 / Russia + { 91, 178, 4156 }, // Russia Time Zone 10 / Russia + { 92, 178, 4175 }, // Russia Time Zone 11 / Russia + { 93, 178, 4202 }, // Russian Standard Time / Russia + { 93, 222, 4229 }, // Russian Standard Time / Ukraine + { 94, 0, 4247 }, // SA Eastern Standard Time / AnyCountry + { 94, 8, 4257 }, // SA Eastern Standard Time / Antarctica + { 94, 30, 4294 }, // SA Eastern Standard Time / Brazil + { 94, 70, 4373 }, // SA Eastern Standard Time / Falkland Islands + { 94, 76, 4390 }, // SA Eastern Standard Time / French Guiana + { 94, 202, 4406 }, // SA Eastern Standard Time / Suriname + { 95, 0, 4425 }, // SA Pacific Standard Time / AnyCountry + { 95, 30, 4435 }, // SA Pacific Standard Time / Brazil + { 95, 38, 4471 }, // SA Pacific Standard Time / Canada + { 95, 40, 4493 }, // SA Pacific Standard Time / Cayman Islands + { 95, 47, 4508 }, // SA Pacific Standard Time / Colombia + { 95, 63, 4523 }, // SA Pacific Standard Time / Ecuador + { 95, 107, 4541 }, // SA Pacific Standard Time / Jamaica + { 95, 166, 4557 }, // SA Pacific Standard Time / Panama + { 95, 169, 4572 }, // SA Pacific Standard Time / Peru + { 96, 0, 4585 }, // SA Western Standard Time / AnyCountry + { 96, 7, 4595 }, // SA Western Standard Time / Anguilla + { 96, 9, 4612 }, // SA Western Standard Time / Antigua And Barbuda + { 96, 12, 4628 }, // SA Western Standard Time / Aruba + { 96, 19, 4642 }, // SA Western Standard Time / Barbados + { 96, 26, 4659 }, // SA Western Standard Time / Bolivia + { 96, 30, 4674 }, // SA Western Standard Time / Brazil + { 96, 38, 4727 }, // SA Western Standard Time / Canada + { 96, 60, 4748 }, // SA Western Standard Time / Dominica + { 96, 61, 4765 }, // SA Western Standard Time / Dominican Republic + { 96, 87, 4787 }, // SA Western Standard Time / Grenada + { 96, 88, 4803 }, // SA Western Standard Time / Guadeloupe + { 96, 93, 4822 }, // SA Western Standard Time / Guyana + { 96, 135, 4837 }, // SA Western Standard Time / Martinique + { 96, 144, 4856 }, // SA Western Standard Time / Montserrat + { 96, 152, 4875 }, // SA Western Standard Time / Cura Sao + { 96, 174, 4891 }, // SA Western Standard Time / Puerto Rico + { 96, 180, 4911 }, // SA Western Standard Time / Saint Kitts And Nevis + { 96, 181, 4928 }, // SA Western Standard Time / Saint Lucia + { 96, 182, 4945 }, // SA Western Standard Time / Saint Vincent And The Grenadines + { 96, 215, 4964 }, // SA Western Standard Time / Trinidad And Tobago + { 96, 233, 4986 }, // SA Western Standard Time / British Virgin Islands + { 96, 234, 5002 }, // SA Western Standard Time / United States Virgin Islands + { 96, 244, 5020 }, // SA Western Standard Time / Saint Barthelemy + { 96, 245, 5042 }, // SA Western Standard Time / Saint Martin + { 96, 255, 5058 }, // SA Western Standard Time / Bonaire + { 96, 256, 5077 }, // SA Western Standard Time / Sint Maarten + { 97, 200, 5099 }, // Saint Pierre Standard Time / Saint Pierre And Miquelon + { 98, 178, 5116 }, // Sakhalin Standard Time / Russia + { 99, 183, 5130 }, // Samoa Standard Time / Samoa + { 100, 185, 5143 }, // Sao Tome Standard Time / Sao Tome And Principe + { 101, 178, 5159 }, // Saratov Standard Time / Russia + { 102, 0, 5174 }, // SE Asia Standard Time / AnyCountry + { 102, 8, 5184 }, // SE Asia Standard Time / Antarctica + { 102, 36, 5201 }, // SE Asia Standard Time / Cambodia + { 102, 45, 5217 }, // SE Asia Standard Time / Christmas Island + { 102, 101, 5234 }, // SE Asia Standard Time / Indonesia + { 102, 117, 5262 }, // SE Asia Standard Time / Laos + { 102, 211, 5277 }, // SE Asia Standard Time / Thailand + { 102, 232, 5290 }, // SE Asia Standard Time / Vietnam + { 103, 0, 5302 }, // Singapore Standard Time / AnyCountry + { 103, 32, 5312 }, // Singapore Standard Time / Brunei + { 103, 101, 5324 }, // Singapore Standard Time / Indonesia + { 103, 130, 5338 }, // Singapore Standard Time / Malaysia + { 103, 170, 5369 }, // Singapore Standard Time / Philippines + { 103, 190, 5381 }, // Singapore Standard Time / Singapore + { 104, 0, 5396 }, // South Africa Standard Time / AnyCountry + { 104, 28, 5406 }, // South Africa Standard Time / Botswana + { 104, 35, 5422 }, // South Africa Standard Time / Burundi + { 104, 49, 5439 }, // South Africa Standard Time / Congo Kinshasa + { 104, 120, 5457 }, // South Africa Standard Time / Lesotho + { 104, 129, 5471 }, // South Africa Standard Time / Malawi + { 104, 146, 5487 }, // South Africa Standard Time / Mozambique + { 104, 179, 5501 }, // South Africa Standard Time / Rwanda + { 104, 195, 5515 }, // South Africa Standard Time / South Africa + { 104, 204, 5535 }, // South Africa Standard Time / Swaziland + { 104, 239, 5550 }, // South Africa Standard Time / Zambia + { 104, 240, 5564 }, // South Africa Standard Time / Zimbabwe + { 105, 198, 5578 }, // Sri Lanka Standard Time / Sri Lanka + { 106, 201, 5591 }, // Sudan Standard Time / Sudan + { 107, 207, 5607 }, // Syria Standard Time / Syria + { 108, 208, 5621 }, // Taipei Standard Time / Taiwan + { 109, 13, 5633 }, // Tasmania Standard Time / Australia + { 110, 30, 5688 }, // Tocantins Standard Time / Brazil + { 111, 0, 5706 }, // Tokyo Standard Time / AnyCountry + { 111, 62, 5716 }, // Tokyo Standard Time / East Timor + { 111, 101, 5726 }, // Tokyo Standard Time / Indonesia + { 111, 108, 5740 }, // Tokyo Standard Time / Japan + { 111, 164, 5751 }, // Tokyo Standard Time / Palau + { 112, 178, 5765 }, // Tomsk Standard Time / Russia + { 113, 214, 5776 }, // Tonga Standard Time / Tonga + { 114, 178, 5794 }, // Transbaikal Standard Time / Russia + { 115, 217, 5805 }, // Turkey Standard Time / Turkey + { 116, 219, 5821 }, // Turks And Caicos Standard Time / Turks And Caicos Islands + { 117, 143, 5840 }, // Ulaanbaatar Standard Time / Mongolia + { 118, 225, 5873 }, // US Eastern Standard Time / United States + { 119, 0, 5940 }, // US Mountain Standard Time / AnyCountry + { 119, 38, 5950 }, // US Mountain Standard Time / Canada { 119, 139, 6041 }, // US Mountain Standard Time / Mexico { 119, 225, 6060 }, // US Mountain Standard Time / United States { 120, 0, 6076 }, // UTC-11 / AnyCountry @@ -526,94 +525,94 @@ { 26, 608, 7438,-14400 }, // Central Brazilian Standard Time { 27, 640, 1245, 3600 }, // Central Europe Standard Time { 28, 669, 1373, 3600 }, // Central European Standard Time - { 29, 700, 1464, 39600 }, // Central Pacific Standard Time + { 29, 700, 1460, 39600 }, // Central Pacific Standard Time { 30, 730, 7453,-21600 }, // Central Standard Time (Mexico) { 31, 761, 7473,-21600 }, // Central Standard Time - { 32, 783, 1843, 28800 }, // China Standard Time - { 33, 803, 1883, 45900 }, // Chatham Islands Standard Time - { 34, 833, 1899,-18000 }, // Cuba Standard Time - { 35, 852, 1914,-43200 }, // Dateline Standard Time - { 36, 875, 2015, 10800 }, // E. Africa Standard Time + { 32, 783, 1839, 28800 }, // China Standard Time + { 33, 803, 1879, 45900 }, // Chatham Islands Standard Time + { 34, 833, 1895,-18000 }, // Cuba Standard Time + { 35, 852, 1910,-43200 }, // Dateline Standard Time + { 36, 875, 2011, 10800 }, // E. Africa Standard Time { 37, 899, 7489, 36000 }, // E. Australia Standard Time - { 38, 926, 2168, 7200 }, // E. Europe Standard Time - { 39, 950, 2184,-10800 }, // E. South America Standard Time - { 40, 981, 2202,-21600 }, // Easter Island Standard Time + { 38, 926, 2164, 7200 }, // E. Europe Standard Time + { 39, 950, 2180,-10800 }, // E. South America Standard Time + { 40, 981, 2198,-21600 }, // Easter Island Standard Time { 41, 1009, 7508,-18000 }, // Eastern Standard Time - { 42, 1031, 2502,-18000 }, // Eastern Standard Time (Mexico) - { 43, 1062, 2517, 7200 }, // Egypt Standard Time - { 44, 1082, 2530, 18000 }, // Ekaterinburg Standard Time - { 45, 1109, 2549, 43200 }, // Fiji Standard Time + { 42, 1031, 2498,-18000 }, // Eastern Standard Time (Mexico) + { 43, 1062, 2513, 7200 }, // Egypt Standard Time + { 44, 1082, 2526, 18000 }, // Ekaterinburg Standard Time + { 45, 1109, 2545, 43200 }, // Fiji Standard Time { 46, 1128, 7525, 7200 }, // FLE Standard Time - { 47, 1146, 2696, 14400 }, // Georgian Standard Time - { 48, 1169, 2802, 0 }, // GMT Standard Time - { 49, 1187, 2849,-10800 }, // Greenland Standard Time - { 50, 1211, 2955, 0 }, // Greenwich Standard Time - { 51, 1235, 3124, 7200 }, // GTB Standard Time - { 52, 1253, 3141,-18000 }, // Haiti Standard Time - { 53, 1273, 3208,-36000 }, // Hawaiian Standard Time - { 54, 1296, 3242, 19800 }, // India Standard Time - { 55, 1316, 3256, 12600 }, // Iran Standard Time - { 56, 1335, 3268, 7200 }, // Israel Standard Time - { 57, 1356, 3283, 7200 }, // Jordan Standard Time - { 58, 1377, 3294, 7200 }, // Kaliningrad Standard Time - { 59, 1403, 3313, 32400 }, // Korea Standard Time - { 60, 1423, 3324, 7200 }, // Libya Standard Time - { 61, 1443, 3350, 50400 }, // Line Islands Standard Time - { 62, 1470, 3369, 37800 }, // Lord Howe Standard Time - { 63, 1494, 3389, 36000 }, // Magadan Standard Time - { 64, 1516, 3402,-10800 }, // Magallanes Standard Time - { 65, 1541, 3423,-34200 }, // Marquesas Standard Time - { 66, 1565, 3441, 14400 }, // Mauritius Standard Time - { 67, 1589, 3485, 7200 }, // Middle East Standard Time - { 68, 1615, 3497,-10800 }, // Montevideo Standard Time - { 69, 1640, 3516, 0 }, // Morocco Standard Time + { 47, 1146, 2692, 14400 }, // Georgian Standard Time + { 48, 1169, 2798, 0 }, // GMT Standard Time + { 49, 1187, 2845,-10800 }, // Greenland Standard Time + { 50, 1211, 2951, 0 }, // Greenwich Standard Time + { 51, 1235, 3120, 7200 }, // GTB Standard Time + { 52, 1253, 3137,-18000 }, // Haiti Standard Time + { 53, 1273, 3204,-36000 }, // Hawaiian Standard Time + { 54, 1296, 3238, 19800 }, // India Standard Time + { 55, 1316, 3252, 12600 }, // Iran Standard Time + { 56, 1335, 3264, 7200 }, // Israel Standard Time + { 57, 1356, 3279, 7200 }, // Jordan Standard Time + { 58, 1377, 3290, 7200 }, // Kaliningrad Standard Time + { 59, 1403, 3309, 32400 }, // Korea Standard Time + { 60, 1423, 3320, 7200 }, // Libya Standard Time + { 61, 1443, 3346, 50400 }, // Line Islands Standard Time + { 62, 1470, 3365, 37800 }, // Lord Howe Standard Time + { 63, 1494, 3385, 36000 }, // Magadan Standard Time + { 64, 1516, 3398,-10800 }, // Magallanes Standard Time + { 65, 1541, 3419,-34200 }, // Marquesas Standard Time + { 66, 1565, 3437, 14400 }, // Mauritius Standard Time + { 67, 1589, 3481, 7200 }, // Middle East Standard Time + { 68, 1615, 3493,-10800 }, // Montevideo Standard Time + { 69, 1640, 3512, 0 }, // Morocco Standard Time { 70, 1662, 7537,-25200 }, // Mountain Standard Time (Mexico) { 71, 1694, 7555,-25200 }, // Mountain Standard Time - { 72, 1717, 3725, 23400 }, // Myanmar Standard Time - { 73, 1739, 3738, 21600 }, // N. Central Asia Standard Time - { 74, 1769, 3755, 3600 }, // Namibia Standard Time - { 75, 1791, 3771, 20700 }, // Nepal Standard Time - { 76, 1811, 3804, 43200 }, // New Zealand Standard Time - { 77, 1837, 3821,-12600 }, // Newfoundland Standard Time - { 78, 1864, 3838, 39600 }, // Norfolk Standard Time - { 79, 1886, 3854, 28800 }, // North Asia East Standard Time + { 72, 1717, 3721, 23400 }, // Myanmar Standard Time + { 73, 1739, 3734, 21600 }, // N. Central Asia Standard Time + { 74, 1769, 3751, 3600 }, // Namibia Standard Time + { 75, 1791, 3767, 20700 }, // Nepal Standard Time + { 76, 1811, 3800, 43200 }, // New Zealand Standard Time + { 77, 1837, 3817,-12600 }, // Newfoundland Standard Time + { 78, 1864, 3834, 39600 }, // Norfolk Standard Time + { 79, 1886, 3850, 28800 }, // North Asia East Standard Time { 80, 1916, 7570, 25200 }, // North Asia Standard Time - { 81, 1941, 3902, 30600 }, // North Korea Standard Time - { 82, 1967, 3917, 21600 }, // Omsk Standard Time - { 83, 1986, 3927,-10800 }, // Pacific SA Standard Time - { 84, 2011, 4004,-28800 }, // Pacific Standard Time + { 81, 1941, 3898, 30600 }, // North Korea Standard Time + { 82, 1967, 3913, 21600 }, // Omsk Standard Time + { 83, 1986, 3923,-10800 }, // Pacific SA Standard Time + { 84, 2011, 3966,-28800 }, // Pacific Standard Time { 85, 2033, 7587,-28800 }, // Pacific Standard Time (Mexico) - { 86, 2064, 4061, 18000 }, // Pakistan Standard Time - { 87, 2087, 4074,-14400 }, // Paraguay Standard Time - { 88, 2110, 4091, 18000 }, // Qyzylorda Standard Time - { 89, 2134, 4140, 3600 }, // Romance Standard Time - { 90, 2156, 4180, 14400 }, // Russia Time Zone 3 - { 91, 2175, 4194, 39600 }, // Russia Time Zone 10 + { 86, 2064, 4023, 18000 }, // Pakistan Standard Time + { 87, 2087, 4036,-14400 }, // Paraguay Standard Time + { 88, 2110, 4053, 18000 }, // Qyzylorda Standard Time + { 89, 2134, 4102, 3600 }, // Romance Standard Time + { 90, 2156, 4142, 14400 }, // Russia Time Zone 3 + { 91, 2175, 4156, 39600 }, // Russia Time Zone 10 { 92, 2195, 7603, 43200 }, // Russia Time Zone 11 { 93, 2215, 7618, 10800 }, // Russian Standard Time - { 94, 2237, 4428,-10800 }, // SA Eastern Standard Time - { 95, 2262, 4546,-18000 }, // SA Pacific Standard Time - { 96, 2287, 4697,-14400 }, // SA Western Standard Time - { 97, 2312, 5137,-10800 }, // Saint Pierre Standard Time - { 98, 2339, 5154, 39600 }, // Sakhalin Standard Time - { 99, 2362, 5168, 46800 }, // Samoa Standard Time - { 100, 2382, 5181, 0 }, // Sao Tome Standard Time - { 101, 2405, 5197, 14400 }, // Saratov Standard Time - { 102, 2427, 5315, 25200 }, // SE Asia Standard Time - { 103, 2449, 5436, 28800 }, // Singapore Standard Time - { 104, 2473, 5570, 7200 }, // South Africa Standard Time - { 105, 2500, 5633, 19800 }, // Sri Lanka Standard Time - { 106, 2524, 5646, 7200 }, // Sudan Standard Time - { 107, 2544, 5662, 7200 }, // Syria Standard Time - { 108, 2564, 5676, 28800 }, // Taipei Standard Time + { 94, 2237, 4390,-10800 }, // SA Eastern Standard Time + { 95, 2262, 4508,-18000 }, // SA Pacific Standard Time + { 96, 2287, 4659,-14400 }, // SA Western Standard Time + { 97, 2312, 5099,-10800 }, // Saint Pierre Standard Time + { 98, 2339, 5116, 39600 }, // Sakhalin Standard Time + { 99, 2362, 5130, 46800 }, // Samoa Standard Time + { 100, 2382, 5143, 0 }, // Sao Tome Standard Time + { 101, 2405, 5159, 14400 }, // Saratov Standard Time + { 102, 2427, 5277, 25200 }, // SE Asia Standard Time + { 103, 2449, 5381, 28800 }, // Singapore Standard Time + { 104, 2473, 5515, 7200 }, // South Africa Standard Time + { 105, 2500, 5578, 19800 }, // Sri Lanka Standard Time + { 106, 2524, 5591, 7200 }, // Sudan Standard Time + { 107, 2544, 5607, 7200 }, // Syria Standard Time + { 108, 2564, 5621, 28800 }, // Taipei Standard Time { 109, 2585, 7632, 36000 }, // Tasmania Standard Time - { 110, 2608, 5722,-10800 }, // Tocantins Standard Time - { 111, 2632, 5774, 32400 }, // Tokyo Standard Time - { 112, 2652, 5799, 25200 }, // Tomsk Standard Time - { 113, 2672, 5810, 46800 }, // Tonga Standard Time - { 114, 2692, 5828, 32400 }, // Transbaikal Standard Time - { 115, 2718, 5839, 7200 }, // Turkey Standard Time - { 116, 2739, 5855,-14400 }, // Turks And Caicos Standard Time + { 110, 2608, 5688,-10800 }, // Tocantins Standard Time + { 111, 2632, 5740, 32400 }, // Tokyo Standard Time + { 112, 2652, 5765, 25200 }, // Tomsk Standard Time + { 113, 2672, 5776, 46800 }, // Tonga Standard Time + { 114, 2692, 5794, 32400 }, // Transbaikal Standard Time + { 115, 2718, 5805, 7200 }, // Turkey Standard Time + { 116, 2739, 5821,-14400 }, // Turks And Caicos Standard Time { 117, 2770, 7649, 28800 }, // Ulaanbaatar Standard Time { 118, 2796, 7666,-18000 }, // US Eastern Standard Time { 119, 2821, 6060,-25200 }, // US Mountain Standard Time @@ -916,237 +915,237 @@ 0x6a, 0x65, 0x76, 0x6f, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x5a, 0x61, 0x67, 0x72, 0x65, 0x62, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x6b, 0x6f, 0x70, 0x6a, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x57, 0x61, 0x72, 0x73, 0x61, 0x77, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x31, 0x0, 0x41, 0x6e, -0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x63, 0x71, 0x75, 0x61, 0x72, 0x69, 0x65, 0x0, 0x50, -0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, 0x6f, 0x6e, 0x61, 0x70, 0x65, 0x20, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, -0x63, 0x2f, 0x4b, 0x6f, 0x73, 0x72, 0x61, 0x65, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4e, 0x6f, 0x75, -0x6d, 0x65, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x47, 0x75, 0x61, 0x64, 0x61, 0x6c, 0x63, 0x61, -0x6e, 0x61, 0x6c, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x45, 0x66, 0x61, 0x74, 0x65, 0x0, 0x41, 0x6d, -0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x5f, 0x43, 0x69, 0x74, 0x79, 0x20, 0x41, 0x6d, -0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x68, 0x69, 0x61, 0x5f, 0x42, 0x61, 0x6e, 0x64, 0x65, 0x72, 0x61, 0x73, -0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x65, 0x72, 0x69, 0x64, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, -0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x65, 0x79, 0x0, 0x43, 0x53, 0x54, 0x36, 0x43, 0x44, -0x54, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x69, 0x6e, 0x6e, 0x69, 0x70, 0x65, 0x67, 0x20, 0x41, -0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x61, 0x69, 0x6e, 0x79, 0x5f, 0x52, 0x69, 0x76, 0x65, 0x72, 0x20, 0x41, -0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x5f, 0x49, 0x6e, 0x6c, 0x65, 0x74, 0x20, -0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x0, 0x41, 0x6d, 0x65, -0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x74, 0x61, 0x6d, 0x6f, 0x72, 0x6f, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, -0x63, 0x61, 0x2f, 0x43, 0x68, 0x69, 0x63, 0x61, 0x67, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, -0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x4b, 0x6e, 0x6f, 0x78, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, -0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x54, 0x65, 0x6c, 0x6c, 0x5f, 0x43, 0x69, 0x74, 0x79, 0x20, 0x41, 0x6d, -0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x65, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, -0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x5f, 0x44, 0x61, 0x6b, 0x6f, 0x74, 0x61, 0x2f, 0x42, 0x65, 0x75, -0x6c, 0x61, 0x68, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x5f, 0x44, 0x61, -0x6b, 0x6f, 0x74, 0x61, 0x2f, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, -0x4e, 0x6f, 0x72, 0x74, 0x68, 0x5f, 0x44, 0x61, 0x6b, 0x6f, 0x74, 0x61, 0x2f, 0x4e, 0x65, 0x77, 0x5f, 0x53, 0x61, 0x6c, -0x65, 0x6d, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x68, 0x61, 0x6e, 0x67, 0x68, 0x61, 0x69, 0x0, 0x41, 0x73, 0x69, -0x61, 0x2f, 0x48, 0x6f, 0x6e, 0x67, 0x5f, 0x4b, 0x6f, 0x6e, 0x67, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x63, -0x61, 0x75, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x43, 0x68, 0x61, 0x74, 0x68, 0x61, 0x6d, 0x0, 0x41, -0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x61, 0x76, 0x61, 0x6e, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, -0x54, 0x2b, 0x31, 0x32, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x33, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, -0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x79, 0x6f, 0x77, 0x61, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x43, -0x6f, 0x6d, 0x6f, 0x72, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74, -0x69, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x73, 0x6d, 0x65, 0x72, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, -0x63, 0x61, 0x2f, 0x41, 0x64, 0x64, 0x69, 0x73, 0x5f, 0x41, 0x62, 0x61, 0x62, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, -0x61, 0x2f, 0x4e, 0x61, 0x69, 0x72, 0x6f, 0x62, 0x69, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x41, 0x6e, 0x74, -0x61, 0x6e, 0x61, 0x6e, 0x61, 0x72, 0x69, 0x76, 0x6f, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x79, -0x6f, 0x74, 0x74, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x67, 0x61, 0x64, 0x69, 0x73, 0x68, -0x75, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x72, 0x5f, 0x65, 0x73, 0x5f, 0x53, 0x61, 0x6c, 0x61, -0x61, 0x6d, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x61, 0x6d, 0x70, 0x61, 0x6c, 0x61, 0x0, 0x41, 0x66, -0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x75, 0x62, 0x61, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, -0x42, 0x72, 0x69, 0x73, 0x62, 0x61, 0x6e, 0x65, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x4c, -0x69, 0x6e, 0x64, 0x65, 0x6d, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x43, 0x68, 0x69, 0x73, 0x69, -0x6e, 0x61, 0x75, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6f, 0x5f, 0x50, 0x61, 0x75, 0x6c, -0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x0, 0x45, 0x53, 0x54, -0x35, 0x45, 0x44, 0x54, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x61, 0x73, 0x73, 0x61, 0x75, 0x0, -0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x6f, 0x72, 0x6f, 0x6e, 0x74, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, -0x69, 0x63, 0x61, 0x2f, 0x49, 0x71, 0x61, 0x6c, 0x75, 0x69, 0x74, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, -0x4d, 0x6f, 0x6e, 0x74, 0x72, 0x65, 0x61, 0x6c, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x69, 0x70, -0x69, 0x67, 0x6f, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x6e, 0x67, 0x6e, 0x69, 0x72, -0x74, 0x75, 0x6e, 0x67, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x68, 0x75, 0x6e, 0x64, 0x65, 0x72, -0x5f, 0x42, 0x61, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x65, 0x77, 0x5f, 0x59, 0x6f, 0x72, -0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x65, 0x74, 0x72, 0x6f, 0x69, 0x74, 0x20, 0x41, 0x6d, -0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x50, 0x65, 0x74, 0x65, 0x72, 0x73, -0x62, 0x75, 0x72, 0x67, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, -0x2f, 0x56, 0x69, 0x6e, 0x63, 0x65, 0x6e, 0x6e, 0x65, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, -0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x57, 0x69, 0x6e, 0x61, 0x6d, 0x61, 0x63, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, -0x63, 0x61, 0x2f, 0x4b, 0x65, 0x6e, 0x74, 0x75, 0x63, 0x6b, 0x79, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x69, 0x63, 0x65, 0x6c, -0x6c, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x75, 0x69, 0x73, 0x76, 0x69, 0x6c, 0x6c, -0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x6e, 0x63, 0x75, 0x6e, 0x0, 0x41, 0x66, 0x72, -0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x69, 0x72, 0x6f, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x59, 0x65, 0x6b, 0x61, 0x74, -0x65, 0x72, 0x69, 0x6e, 0x62, 0x75, 0x72, 0x67, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x46, 0x69, 0x6a, -0x69, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x6f, 0x66, 0x69, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, -0x65, 0x2f, 0x54, 0x61, 0x6c, 0x6c, 0x69, 0x6e, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x48, 0x65, 0x6c, -0x73, 0x69, 0x6e, 0x6b, 0x69, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x52, 0x69, 0x67, 0x61, 0x0, 0x45, 0x75, -0x72, 0x6f, 0x70, 0x65, 0x2f, 0x56, 0x69, 0x6c, 0x6e, 0x69, 0x75, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, -0x4b, 0x69, 0x65, 0x76, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x55, 0x7a, 0x68, 0x67, 0x6f, 0x72, 0x6f, 0x64, -0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x5a, 0x61, 0x70, 0x6f, 0x72, 0x6f, 0x7a, 0x68, 0x79, 0x65, 0x0, 0x45, -0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x61, 0x72, 0x69, 0x65, 0x68, 0x61, 0x6d, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, -0x2f, 0x54, 0x62, 0x69, 0x6c, 0x69, 0x73, 0x69, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x46, 0x61, -0x65, 0x72, 0x6f, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x47, 0x75, 0x65, 0x72, 0x6e, 0x73, 0x65, 0x79, -0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x44, 0x75, 0x62, 0x6c, 0x69, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, -0x65, 0x2f, 0x4c, 0x69, 0x73, 0x62, 0x6f, 0x6e, 0x20, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x4d, 0x61, -0x64, 0x65, 0x69, 0x72, 0x61, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x43, 0x61, 0x6e, 0x61, 0x72, -0x79, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4c, 0x6f, 0x6e, 0x64, 0x6f, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, -0x70, 0x65, 0x2f, 0x49, 0x73, 0x6c, 0x65, 0x5f, 0x6f, 0x66, 0x5f, 0x4d, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, -0x65, 0x2f, 0x4a, 0x65, 0x72, 0x73, 0x65, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x6f, 0x64, -0x74, 0x68, 0x61, 0x62, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4f, 0x75, 0x61, 0x67, 0x61, 0x64, 0x6f, 0x75, -0x67, 0x6f, 0x75, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x62, 0x69, 0x64, 0x6a, 0x61, 0x6e, 0x0, 0x41, -0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x6e, 0x6a, 0x75, 0x6c, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, -0x41, 0x63, 0x63, 0x72, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x6f, 0x6e, 0x61, 0x6b, 0x72, 0x79, -0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x69, 0x73, 0x73, 0x61, 0x75, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, -0x74, 0x69, 0x63, 0x2f, 0x52, 0x65, 0x79, 0x6b, 0x6a, 0x61, 0x76, 0x69, 0x6b, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, -0x2f, 0x4d, 0x6f, 0x6e, 0x72, 0x6f, 0x76, 0x69, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x6d, -0x61, 0x6b, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x75, 0x61, 0x6b, 0x63, 0x68, 0x6f, 0x74, -0x74, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x6b, 0x61, 0x72, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, -0x61, 0x2f, 0x46, 0x72, 0x65, 0x65, 0x74, 0x6f, 0x77, 0x6e, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, -0x53, 0x74, 0x5f, 0x48, 0x65, 0x6c, 0x65, 0x6e, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x6d, -0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, 0x69, 0x63, 0x6f, 0x73, 0x69, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, -0x46, 0x61, 0x6d, 0x61, 0x67, 0x75, 0x73, 0x74, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x74, 0x68, -0x65, 0x6e, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x75, 0x63, 0x68, 0x61, 0x72, 0x65, 0x73, 0x74, -0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x2d, 0x61, 0x75, 0x2d, 0x50, 0x72, 0x69, -0x6e, 0x63, 0x65, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x31, 0x30, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, -0x69, 0x63, 0x2f, 0x52, 0x61, 0x72, 0x6f, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, -0x2f, 0x54, 0x61, 0x68, 0x69, 0x74, 0x69, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x48, 0x6f, 0x6e, 0x6f, -0x6c, 0x75, 0x6c, 0x75, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4a, 0x6f, 0x68, 0x6e, 0x73, 0x74, 0x6f, -0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x74, 0x74, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, -0x2f, 0x54, 0x65, 0x68, 0x72, 0x61, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, 0x65, 0x72, 0x75, 0x73, 0x61, 0x6c, -0x65, 0x6d, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x6d, 0x6d, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, -0x2f, 0x4b, 0x61, 0x6c, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x72, 0x61, 0x64, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x65, -0x6f, 0x75, 0x6c, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x72, 0x69, 0x70, 0x6f, 0x6c, 0x69, 0x0, 0x45, -0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x31, 0x34, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4b, 0x69, -0x72, 0x69, 0x74, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x4c, -0x6f, 0x72, 0x64, 0x5f, 0x48, 0x6f, 0x77, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x67, 0x61, 0x64, 0x61, -0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x75, 0x6e, 0x74, 0x61, 0x5f, 0x41, 0x72, 0x65, 0x6e, -0x61, 0x73, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4d, 0x61, 0x72, 0x71, 0x75, 0x65, 0x73, 0x61, 0x73, -0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x75, 0x73, 0x0, 0x49, 0x6e, -0x64, 0x69, 0x61, 0x6e, 0x2f, 0x52, 0x65, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, -0x4d, 0x61, 0x68, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x65, 0x69, 0x72, 0x75, 0x74, 0x0, 0x41, 0x6d, 0x65, -0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, -0x63, 0x61, 0x2f, 0x43, 0x61, 0x73, 0x61, 0x62, 0x6c, 0x61, 0x6e, 0x63, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, -0x2f, 0x45, 0x6c, 0x5f, 0x41, 0x61, 0x69, 0x75, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x68, -0x69, 0x68, 0x75, 0x61, 0x68, 0x75, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x7a, 0x61, -0x74, 0x6c, 0x61, 0x6e, 0x0, 0x4d, 0x53, 0x54, 0x37, 0x4d, 0x44, 0x54, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, -0x2f, 0x45, 0x64, 0x6d, 0x6f, 0x6e, 0x74, 0x6f, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, -0x6d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, 0x42, 0x61, 0x79, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, -0x49, 0x6e, 0x75, 0x76, 0x69, 0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x59, 0x65, 0x6c, 0x6c, 0x6f, -0x77, 0x6b, 0x6e, 0x69, 0x66, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4f, 0x6a, 0x69, 0x6e, 0x61, -0x67, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x65, 0x6e, 0x76, 0x65, 0x72, 0x20, 0x41, 0x6d, -0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6f, 0x69, 0x73, 0x65, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x43, -0x6f, 0x63, 0x6f, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x52, 0x61, 0x6e, 0x67, 0x6f, 0x6f, 0x6e, 0x0, 0x41, 0x73, -0x69, 0x61, 0x2f, 0x4e, 0x6f, 0x76, 0x6f, 0x73, 0x69, 0x62, 0x69, 0x72, 0x73, 0x6b, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, -0x61, 0x2f, 0x57, 0x69, 0x6e, 0x64, 0x68, 0x6f, 0x65, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x74, 0x6d, -0x61, 0x6e, 0x64, 0x75, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x63, 0x4d, 0x75, -0x72, 0x64, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x41, 0x75, 0x63, 0x6b, 0x6c, 0x61, 0x6e, 0x64, -0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x4a, 0x6f, 0x68, 0x6e, 0x73, 0x0, 0x50, 0x61, -0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4e, 0x6f, 0x72, 0x66, 0x6f, 0x6c, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x49, -0x72, 0x6b, 0x75, 0x74, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x72, 0x61, 0x73, 0x6e, 0x6f, 0x79, 0x61, -0x72, 0x73, 0x6b, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, 0x6f, 0x76, 0x6f, 0x6b, 0x75, 0x7a, 0x6e, 0x65, 0x74, 0x73, -0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x50, 0x79, 0x6f, 0x6e, 0x67, 0x79, 0x61, 0x6e, 0x67, 0x0, 0x41, 0x73, 0x69, -0x61, 0x2f, 0x4f, 0x6d, 0x73, 0x6b, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x69, -0x61, 0x67, 0x6f, 0x0, 0x50, 0x53, 0x54, 0x38, 0x50, 0x44, 0x54, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, -0x56, 0x61, 0x6e, 0x63, 0x6f, 0x75, 0x76, 0x65, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, -0x77, 0x73, 0x6f, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x68, 0x69, 0x74, 0x65, 0x68, 0x6f, -0x72, 0x73, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x73, 0x5f, 0x41, 0x6e, 0x67, 0x65, -0x6c, 0x65, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x69, 0x6a, 0x75, 0x61, 0x6e, 0x61, 0x20, -0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x61, 0x5f, 0x49, 0x73, 0x61, 0x62, 0x65, 0x6c, -0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x72, 0x61, 0x63, 0x68, 0x69, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, -0x61, 0x2f, 0x41, 0x73, 0x75, 0x6e, 0x63, 0x69, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x51, 0x79, 0x7a, 0x79, -0x6c, 0x6f, 0x72, 0x64, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x72, 0x75, 0x73, 0x73, 0x65, 0x6c, -0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x43, 0x6f, 0x70, 0x65, 0x6e, 0x68, 0x61, 0x67, 0x65, 0x6e, 0x0, -0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x50, 0x61, 0x72, 0x69, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, -0x4d, 0x61, 0x64, 0x72, 0x69, 0x64, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x65, 0x75, 0x74, 0x61, 0x0, -0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x6d, 0x61, 0x72, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, -0x72, 0x65, 0x64, 0x6e, 0x65, 0x6b, 0x6f, 0x6c, 0x79, 0x6d, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, -0x6d, 0x63, 0x68, 0x61, 0x74, 0x6b, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x6e, 0x61, 0x64, 0x79, 0x72, 0x0, -0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x6f, 0x73, 0x63, 0x6f, 0x77, 0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, -0x2f, 0x4b, 0x69, 0x72, 0x6f, 0x76, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x69, 0x6d, 0x66, 0x65, 0x72, -0x6f, 0x70, 0x6f, 0x6c, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x33, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, -0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x61, 0x20, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, -0x74, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x6c, 0x6d, 0x65, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, -0x46, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x65, 0x7a, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x65, -0x6c, 0x65, 0x6d, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x63, 0x65, 0x69, 0x6f, 0x20, 0x41, -0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x65, 0x63, 0x69, 0x66, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, -0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x61, 0x72, 0x65, 0x6d, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, -0x53, 0x74, 0x61, 0x6e, 0x6c, 0x65, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x79, 0x65, -0x6e, 0x6e, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x61, 0x72, 0x69, -0x62, 0x6f, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x35, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, -0x2f, 0x52, 0x69, 0x6f, 0x5f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, -0x45, 0x69, 0x72, 0x75, 0x6e, 0x65, 0x70, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x6f, 0x72, -0x61, 0x6c, 0x5f, 0x48, 0x61, 0x72, 0x62, 0x6f, 0x75, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, -0x61, 0x79, 0x6d, 0x61, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6f, 0x67, 0x6f, 0x74, 0x61, -0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x61, 0x79, 0x61, 0x71, 0x75, 0x69, 0x6c, 0x0, 0x41, -0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, -0x63, 0x61, 0x2f, 0x50, 0x61, 0x6e, 0x61, 0x6d, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x69, -0x6d, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x34, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, -0x2f, 0x41, 0x6e, 0x67, 0x75, 0x69, 0x6c, 0x6c, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x6e, -0x74, 0x69, 0x67, 0x75, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x75, 0x62, 0x61, 0x0, -0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x72, 0x62, 0x61, 0x64, 0x6f, 0x73, 0x0, 0x41, 0x6d, 0x65, -0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x61, 0x5f, 0x50, 0x61, 0x7a, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, -0x4d, 0x61, 0x6e, 0x61, 0x75, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6f, 0x61, 0x5f, 0x56, -0x69, 0x73, 0x74, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x6f, 0x5f, 0x56, -0x65, 0x6c, 0x68, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6c, 0x61, 0x6e, 0x63, 0x2d, 0x53, -0x61, 0x62, 0x6c, 0x6f, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x69, -0x63, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x6f, 0x5f, 0x44, 0x6f, 0x6d, -0x69, 0x6e, 0x67, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x72, 0x65, 0x6e, 0x61, 0x64, 0x61, -0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x61, 0x64, 0x65, 0x6c, 0x6f, 0x75, 0x70, 0x65, 0x0, -0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, -0x63, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, -0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x73, 0x65, 0x72, 0x72, 0x61, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, -0x2f, 0x43, 0x75, 0x72, 0x61, 0x63, 0x61, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x75, 0x65, -0x72, 0x74, 0x6f, 0x5f, 0x52, 0x69, 0x63, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, -0x4b, 0x69, 0x74, 0x74, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x4c, 0x75, 0x63, -0x69, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x56, 0x69, 0x6e, 0x63, 0x65, 0x6e, -0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x66, 0x5f, 0x53, 0x70, -0x61, 0x69, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x6f, 0x72, 0x74, 0x6f, 0x6c, 0x61, 0x0, -0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x54, 0x68, 0x6f, 0x6d, 0x61, 0x73, 0x0, 0x41, 0x6d, -0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x42, 0x61, 0x72, 0x74, 0x68, 0x65, 0x6c, 0x65, 0x6d, 0x79, 0x0, -0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x69, 0x67, 0x6f, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, -0x69, 0x63, 0x61, 0x2f, 0x4b, 0x72, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x69, 0x6a, 0x6b, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, -0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x65, 0x73, 0x0, 0x41, 0x6d, 0x65, -0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x69, 0x71, 0x75, 0x65, 0x6c, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, -0x61, 0x6b, 0x68, 0x61, 0x6c, 0x69, 0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x41, 0x70, 0x69, 0x61, -0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6f, 0x5f, 0x54, 0x6f, 0x6d, 0x65, 0x0, 0x45, 0x75, 0x72, -0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x76, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, -0x37, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x76, 0x69, 0x73, 0x0, 0x41, -0x73, 0x69, 0x61, 0x2f, 0x50, 0x68, 0x6e, 0x6f, 0x6d, 0x5f, 0x50, 0x65, 0x6e, 0x68, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, -0x6e, 0x2f, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x6d, 0x61, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, 0x61, 0x6b, -0x61, 0x72, 0x74, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x50, 0x6f, 0x6e, 0x74, 0x69, 0x61, 0x6e, 0x61, 0x6b, 0x0, -0x41, 0x73, 0x69, 0x61, 0x2f, 0x56, 0x69, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6e, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, -0x42, 0x61, 0x6e, 0x67, 0x6b, 0x6f, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x61, 0x69, 0x67, 0x6f, 0x6e, 0x0, -0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x38, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, -0x2f, 0x43, 0x61, 0x73, 0x65, 0x79, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x72, 0x75, 0x6e, 0x65, 0x69, 0x0, 0x41, -0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x6b, 0x61, 0x73, 0x73, 0x61, 0x72, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x75, -0x61, 0x6c, 0x61, 0x5f, 0x4c, 0x75, 0x6d, 0x70, 0x75, 0x72, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x75, 0x63, 0x68, -0x69, 0x6e, 0x67, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x6e, 0x69, 0x6c, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, -0x2f, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x32, -0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x61, 0x62, 0x6f, 0x72, 0x6f, 0x6e, 0x65, 0x0, 0x41, 0x66, 0x72, -0x69, 0x63, 0x61, 0x2f, 0x42, 0x75, 0x6a, 0x75, 0x6d, 0x62, 0x75, 0x72, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, -0x2f, 0x4c, 0x75, 0x62, 0x75, 0x6d, 0x62, 0x61, 0x73, 0x68, 0x69, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, -0x61, 0x73, 0x65, 0x72, 0x75, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6c, 0x61, 0x6e, 0x74, 0x79, 0x72, -0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x70, 0x75, 0x74, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, -0x63, 0x61, 0x2f, 0x4b, 0x69, 0x67, 0x61, 0x6c, 0x69, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x6f, 0x68, -0x61, 0x6e, 0x6e, 0x65, 0x73, 0x62, 0x75, 0x72, 0x67, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x62, 0x61, -0x62, 0x61, 0x6e, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x75, 0x73, 0x61, 0x6b, 0x61, 0x0, 0x41, -0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x61, 0x72, 0x61, 0x72, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x43, 0x6f, -0x6c, 0x6f, 0x6d, 0x62, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x68, 0x61, 0x72, 0x74, 0x6f, 0x75, -0x6d, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, 0x61, 0x6d, 0x61, 0x73, 0x63, 0x75, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, -0x2f, 0x54, 0x61, 0x69, 0x70, 0x65, 0x69, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x48, 0x6f, -0x62, 0x61, 0x72, 0x74, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x43, 0x75, 0x72, 0x72, 0x69, -0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x61, 0x67, 0x75, 0x61, 0x69, 0x6e, 0x61, 0x0, -0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x39, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, 0x69, 0x6c, 0x69, 0x0, -0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, 0x61, 0x79, 0x61, 0x70, 0x75, 0x72, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, -0x6f, 0x6b, 0x79, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, 0x61, 0x6c, 0x61, 0x75, 0x0, 0x41, -0x73, 0x69, 0x61, 0x2f, 0x54, 0x6f, 0x6d, 0x73, 0x6b, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x54, 0x6f, -0x6e, 0x67, 0x61, 0x74, 0x61, 0x70, 0x75, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x43, 0x68, 0x69, 0x74, 0x61, 0x0, 0x45, -0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x49, 0x73, 0x74, 0x61, 0x6e, 0x62, 0x75, 0x6c, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, -0x63, 0x61, 0x2f, 0x47, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x55, -0x6c, 0x61, 0x61, 0x6e, 0x62, 0x61, 0x61, 0x74, 0x61, 0x72, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x43, 0x68, 0x6f, 0x69, -0x62, 0x61, 0x6c, 0x73, 0x61, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, -0x6e, 0x61, 0x70, 0x6f, 0x6c, 0x69, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, -0x61, 0x6e, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x65, 0x6e, 0x67, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, -0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x56, 0x65, 0x76, 0x61, 0x79, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, -0x54, 0x2b, 0x37, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x77, 0x73, 0x6f, 0x6e, 0x5f, 0x43, -0x72, 0x65, 0x65, 0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x72, 0x65, 0x73, 0x74, 0x6f, 0x6e, +0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x73, 0x65, 0x79, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, +0x69, 0x63, 0x2f, 0x50, 0x6f, 0x6e, 0x61, 0x70, 0x65, 0x20, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4b, 0x6f, +0x73, 0x72, 0x61, 0x65, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4e, 0x6f, 0x75, 0x6d, 0x65, 0x61, 0x0, +0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x47, 0x75, 0x61, 0x64, 0x61, 0x6c, 0x63, 0x61, 0x6e, 0x61, 0x6c, 0x0, +0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x45, 0x66, 0x61, 0x74, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x4d, 0x65, 0x78, 0x69, 0x63, 0x6f, 0x5f, 0x43, 0x69, 0x74, 0x79, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x42, 0x61, 0x68, 0x69, 0x61, 0x5f, 0x42, 0x61, 0x6e, 0x64, 0x65, 0x72, 0x61, 0x73, 0x20, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x65, 0x72, 0x69, 0x64, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x4d, 0x6f, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x65, 0x79, 0x0, 0x43, 0x53, 0x54, 0x36, 0x43, 0x44, 0x54, 0x0, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x69, 0x6e, 0x6e, 0x69, 0x70, 0x65, 0x67, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x52, 0x61, 0x69, 0x6e, 0x79, 0x5f, 0x52, 0x69, 0x76, 0x65, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x52, 0x61, 0x6e, 0x6b, 0x69, 0x6e, 0x5f, 0x49, 0x6e, 0x6c, 0x65, 0x74, 0x20, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, +0x2f, 0x4d, 0x61, 0x74, 0x61, 0x6d, 0x6f, 0x72, 0x6f, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, +0x68, 0x69, 0x63, 0x61, 0x67, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, +0x6e, 0x61, 0x2f, 0x4b, 0x6e, 0x6f, 0x78, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, +0x61, 0x6e, 0x61, 0x2f, 0x54, 0x65, 0x6c, 0x6c, 0x5f, 0x43, 0x69, 0x74, 0x79, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x4d, 0x65, 0x6e, 0x6f, 0x6d, 0x69, 0x6e, 0x65, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x4e, 0x6f, 0x72, 0x74, 0x68, 0x5f, 0x44, 0x61, 0x6b, 0x6f, 0x74, 0x61, 0x2f, 0x42, 0x65, 0x75, 0x6c, 0x61, 0x68, 0x20, +0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x72, 0x74, 0x68, 0x5f, 0x44, 0x61, 0x6b, 0x6f, 0x74, 0x61, +0x2f, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x72, 0x74, +0x68, 0x5f, 0x44, 0x61, 0x6b, 0x6f, 0x74, 0x61, 0x2f, 0x4e, 0x65, 0x77, 0x5f, 0x53, 0x61, 0x6c, 0x65, 0x6d, 0x0, 0x41, +0x73, 0x69, 0x61, 0x2f, 0x53, 0x68, 0x61, 0x6e, 0x67, 0x68, 0x61, 0x69, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x48, 0x6f, +0x6e, 0x67, 0x5f, 0x4b, 0x6f, 0x6e, 0x67, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x63, 0x61, 0x75, 0x0, 0x50, +0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x43, 0x68, 0x61, 0x74, 0x68, 0x61, 0x6d, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x48, 0x61, 0x76, 0x61, 0x6e, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x31, 0x32, +0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x33, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, +0x61, 0x2f, 0x53, 0x79, 0x6f, 0x77, 0x61, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x43, 0x6f, 0x6d, 0x6f, 0x72, +0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x6a, 0x69, 0x62, 0x6f, 0x75, 0x74, 0x69, 0x0, 0x41, 0x66, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x73, 0x6d, 0x65, 0x72, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, +0x64, 0x64, 0x69, 0x73, 0x5f, 0x41, 0x62, 0x61, 0x62, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x61, +0x69, 0x72, 0x6f, 0x62, 0x69, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x41, 0x6e, 0x74, 0x61, 0x6e, 0x61, 0x6e, +0x61, 0x72, 0x69, 0x76, 0x6f, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x79, 0x6f, 0x74, 0x74, 0x65, +0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x67, 0x61, 0x64, 0x69, 0x73, 0x68, 0x75, 0x0, 0x41, 0x66, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x72, 0x5f, 0x65, 0x73, 0x5f, 0x53, 0x61, 0x6c, 0x61, 0x61, 0x6d, 0x0, 0x41, +0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x61, 0x6d, 0x70, 0x61, 0x6c, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, +0x2f, 0x4a, 0x75, 0x62, 0x61, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x42, 0x72, 0x69, 0x73, +0x62, 0x61, 0x6e, 0x65, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x4c, 0x69, 0x6e, 0x64, 0x65, +0x6d, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x43, 0x68, 0x69, 0x73, 0x69, 0x6e, 0x61, 0x75, 0x0, +0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6f, 0x5f, 0x50, 0x61, 0x75, 0x6c, 0x6f, 0x0, 0x50, 0x61, +0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x45, 0x61, 0x73, 0x74, 0x65, 0x72, 0x0, 0x45, 0x53, 0x54, 0x35, 0x45, 0x44, 0x54, +0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x61, 0x73, 0x73, 0x61, 0x75, 0x0, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x54, 0x6f, 0x72, 0x6f, 0x6e, 0x74, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x49, 0x71, 0x61, 0x6c, 0x75, 0x69, 0x74, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, +0x72, 0x65, 0x61, 0x6c, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x69, 0x70, 0x69, 0x67, 0x6f, 0x6e, +0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x6e, 0x67, 0x6e, 0x69, 0x72, 0x74, 0x75, 0x6e, 0x67, +0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x68, 0x75, 0x6e, 0x64, 0x65, 0x72, 0x5f, 0x42, 0x61, 0x79, +0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x65, 0x77, 0x5f, 0x59, 0x6f, 0x72, 0x6b, 0x20, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x65, 0x74, 0x72, 0x6f, 0x69, 0x74, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x50, 0x65, 0x74, 0x65, 0x72, 0x73, 0x62, 0x75, 0x72, 0x67, +0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x56, 0x69, 0x6e, +0x63, 0x65, 0x6e, 0x6e, 0x65, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, +0x6e, 0x61, 0x2f, 0x57, 0x69, 0x6e, 0x61, 0x6d, 0x61, 0x63, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, +0x65, 0x6e, 0x74, 0x75, 0x63, 0x6b, 0x79, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x69, 0x63, 0x65, 0x6c, 0x6c, 0x6f, 0x20, 0x41, +0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x75, 0x69, 0x73, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x0, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x6e, 0x63, 0x75, 0x6e, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x43, 0x61, 0x69, 0x72, 0x6f, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x59, 0x65, 0x6b, 0x61, 0x74, 0x65, 0x72, 0x69, 0x6e, +0x62, 0x75, 0x72, 0x67, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x46, 0x69, 0x6a, 0x69, 0x0, 0x45, 0x75, +0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x6f, 0x66, 0x69, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x54, 0x61, +0x6c, 0x6c, 0x69, 0x6e, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x48, 0x65, 0x6c, 0x73, 0x69, 0x6e, 0x6b, +0x69, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x52, 0x69, 0x67, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, +0x2f, 0x56, 0x69, 0x6c, 0x6e, 0x69, 0x75, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4b, 0x69, 0x65, 0x76, +0x20, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x55, 0x7a, 0x68, 0x67, 0x6f, 0x72, 0x6f, 0x64, 0x20, 0x45, 0x75, 0x72, +0x6f, 0x70, 0x65, 0x2f, 0x5a, 0x61, 0x70, 0x6f, 0x72, 0x6f, 0x7a, 0x68, 0x79, 0x65, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, +0x65, 0x2f, 0x4d, 0x61, 0x72, 0x69, 0x65, 0x68, 0x61, 0x6d, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x62, 0x69, +0x6c, 0x69, 0x73, 0x69, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x46, 0x61, 0x65, 0x72, 0x6f, 0x65, +0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x47, 0x75, 0x65, 0x72, 0x6e, 0x73, 0x65, 0x79, 0x0, 0x45, 0x75, 0x72, +0x6f, 0x70, 0x65, 0x2f, 0x44, 0x75, 0x62, 0x6c, 0x69, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4c, 0x69, +0x73, 0x62, 0x6f, 0x6e, 0x20, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x4d, 0x61, 0x64, 0x65, 0x69, 0x72, +0x61, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x43, 0x61, 0x6e, 0x61, 0x72, 0x79, 0x0, 0x45, 0x75, +0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4c, 0x6f, 0x6e, 0x64, 0x6f, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x49, +0x73, 0x6c, 0x65, 0x5f, 0x6f, 0x66, 0x5f, 0x4d, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4a, 0x65, +0x72, 0x73, 0x65, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x6f, 0x64, 0x74, 0x68, 0x61, 0x62, +0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4f, 0x75, 0x61, 0x67, 0x61, 0x64, 0x6f, 0x75, 0x67, 0x6f, 0x75, 0x0, +0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x62, 0x69, 0x64, 0x6a, 0x61, 0x6e, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x42, 0x61, 0x6e, 0x6a, 0x75, 0x6c, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x63, 0x63, 0x72, +0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x6f, 0x6e, 0x61, 0x6b, 0x72, 0x79, 0x0, 0x41, 0x66, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x42, 0x69, 0x73, 0x73, 0x61, 0x75, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, +0x52, 0x65, 0x79, 0x6b, 0x6a, 0x61, 0x76, 0x69, 0x6b, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, +0x72, 0x6f, 0x76, 0x69, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x6d, 0x61, 0x6b, 0x6f, 0x0, +0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4e, 0x6f, 0x75, 0x61, 0x6b, 0x63, 0x68, 0x6f, 0x74, 0x74, 0x0, 0x41, 0x66, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x6b, 0x61, 0x72, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x46, 0x72, +0x65, 0x65, 0x74, 0x6f, 0x77, 0x6e, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, 0x63, 0x2f, 0x53, 0x74, 0x5f, 0x48, +0x65, 0x6c, 0x65, 0x6e, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x6d, 0x65, 0x0, 0x41, 0x73, +0x69, 0x61, 0x2f, 0x4e, 0x69, 0x63, 0x6f, 0x73, 0x69, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x46, 0x61, 0x6d, 0x61, +0x67, 0x75, 0x73, 0x74, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x41, 0x74, 0x68, 0x65, 0x6e, 0x73, 0x0, +0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x75, 0x63, 0x68, 0x61, 0x72, 0x65, 0x73, 0x74, 0x0, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x2d, 0x61, 0x75, 0x2d, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x65, 0x0, +0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x31, 0x30, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x52, +0x61, 0x72, 0x6f, 0x74, 0x6f, 0x6e, 0x67, 0x61, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x54, 0x61, 0x68, +0x69, 0x74, 0x69, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x48, 0x6f, 0x6e, 0x6f, 0x6c, 0x75, 0x6c, 0x75, +0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4a, 0x6f, 0x68, 0x6e, 0x73, 0x74, 0x6f, 0x6e, 0x0, 0x41, 0x73, +0x69, 0x61, 0x2f, 0x43, 0x61, 0x6c, 0x63, 0x75, 0x74, 0x74, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x65, 0x68, +0x72, 0x61, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, 0x65, 0x72, 0x75, 0x73, 0x61, 0x6c, 0x65, 0x6d, 0x0, 0x41, +0x73, 0x69, 0x61, 0x2f, 0x41, 0x6d, 0x6d, 0x61, 0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4b, 0x61, 0x6c, +0x69, 0x6e, 0x69, 0x6e, 0x67, 0x72, 0x61, 0x64, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x65, 0x6f, 0x75, 0x6c, 0x0, +0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x72, 0x69, 0x70, 0x6f, 0x6c, 0x69, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, +0x4d, 0x54, 0x2d, 0x31, 0x34, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4b, 0x69, 0x72, 0x69, 0x74, 0x69, +0x6d, 0x61, 0x74, 0x69, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, 0x4c, 0x6f, 0x72, 0x64, 0x5f, +0x48, 0x6f, 0x77, 0x65, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x67, 0x61, 0x64, 0x61, 0x6e, 0x0, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x75, 0x6e, 0x74, 0x61, 0x5f, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x73, 0x0, 0x50, +0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x4d, 0x61, 0x72, 0x71, 0x75, 0x65, 0x73, 0x61, 0x73, 0x0, 0x49, 0x6e, 0x64, +0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x75, 0x72, 0x69, 0x74, 0x69, 0x75, 0x73, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, +0x2f, 0x52, 0x65, 0x75, 0x6e, 0x69, 0x6f, 0x6e, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x4d, 0x61, 0x68, 0x65, +0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x65, 0x69, 0x72, 0x75, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, +0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x65, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, +0x61, 0x73, 0x61, 0x62, 0x6c, 0x61, 0x6e, 0x63, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x45, 0x6c, 0x5f, +0x41, 0x61, 0x69, 0x75, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x68, 0x69, 0x68, 0x75, 0x61, +0x68, 0x75, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x7a, 0x61, 0x74, 0x6c, 0x61, 0x6e, +0x0, 0x4d, 0x53, 0x54, 0x37, 0x4d, 0x44, 0x54, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x45, 0x64, 0x6d, +0x6f, 0x6e, 0x74, 0x6f, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, 0x6d, 0x62, 0x72, 0x69, +0x64, 0x67, 0x65, 0x5f, 0x42, 0x61, 0x79, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x75, 0x76, +0x69, 0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x59, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x6b, 0x6e, 0x69, +0x66, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4f, 0x6a, 0x69, 0x6e, 0x61, 0x67, 0x61, 0x0, 0x41, +0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x65, 0x6e, 0x76, 0x65, 0x72, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x42, 0x6f, 0x69, 0x73, 0x65, 0x0, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x2f, 0x43, 0x6f, 0x63, 0x6f, 0x73, +0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x52, 0x61, 0x6e, 0x67, 0x6f, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, +0x6f, 0x76, 0x6f, 0x73, 0x69, 0x62, 0x69, 0x72, 0x73, 0x6b, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x69, +0x6e, 0x64, 0x68, 0x6f, 0x65, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x74, 0x6d, 0x61, 0x6e, 0x64, 0x75, +0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x63, 0x4d, 0x75, 0x72, 0x64, 0x6f, 0x0, +0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x41, 0x75, 0x63, 0x6b, 0x6c, 0x61, 0x6e, 0x64, 0x0, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x4a, 0x6f, 0x68, 0x6e, 0x73, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, +0x63, 0x2f, 0x4e, 0x6f, 0x72, 0x66, 0x6f, 0x6c, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x49, 0x72, 0x6b, 0x75, 0x74, +0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x72, 0x61, 0x73, 0x6e, 0x6f, 0x79, 0x61, 0x72, 0x73, 0x6b, 0x20, +0x41, 0x73, 0x69, 0x61, 0x2f, 0x4e, 0x6f, 0x76, 0x6f, 0x6b, 0x75, 0x7a, 0x6e, 0x65, 0x74, 0x73, 0x6b, 0x0, 0x41, 0x73, +0x69, 0x61, 0x2f, 0x50, 0x79, 0x6f, 0x6e, 0x67, 0x79, 0x61, 0x6e, 0x67, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4f, 0x6d, +0x73, 0x6b, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x69, 0x61, 0x67, 0x6f, 0x0, +0x50, 0x53, 0x54, 0x38, 0x50, 0x44, 0x54, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x56, 0x61, 0x6e, 0x63, +0x6f, 0x75, 0x76, 0x65, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x73, 0x5f, 0x41, 0x6e, +0x67, 0x65, 0x6c, 0x65, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x69, 0x6a, 0x75, 0x61, 0x6e, +0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x61, 0x5f, 0x49, 0x73, 0x61, 0x62, +0x65, 0x6c, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4b, 0x61, 0x72, 0x61, 0x63, 0x68, 0x69, 0x0, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x41, 0x73, 0x75, 0x6e, 0x63, 0x69, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x51, 0x79, +0x7a, 0x79, 0x6c, 0x6f, 0x72, 0x64, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x42, 0x72, 0x75, 0x73, 0x73, +0x65, 0x6c, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x43, 0x6f, 0x70, 0x65, 0x6e, 0x68, 0x61, 0x67, 0x65, +0x6e, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x50, 0x61, 0x72, 0x69, 0x73, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, +0x65, 0x2f, 0x4d, 0x61, 0x64, 0x72, 0x69, 0x64, 0x20, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x65, 0x75, 0x74, +0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x6d, 0x61, 0x72, 0x61, 0x0, 0x41, 0x73, 0x69, 0x61, +0x2f, 0x53, 0x72, 0x65, 0x64, 0x6e, 0x65, 0x6b, 0x6f, 0x6c, 0x79, 0x6d, 0x73, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, +0x4b, 0x61, 0x6d, 0x63, 0x68, 0x61, 0x74, 0x6b, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x41, 0x6e, 0x61, 0x64, 0x79, +0x72, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x4d, 0x6f, 0x73, 0x63, 0x6f, 0x77, 0x20, 0x45, 0x75, 0x72, 0x6f, +0x70, 0x65, 0x2f, 0x4b, 0x69, 0x72, 0x6f, 0x76, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x69, 0x6d, 0x66, +0x65, 0x72, 0x6f, 0x70, 0x6f, 0x6c, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x33, 0x0, 0x41, 0x6e, 0x74, +0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x61, 0x20, 0x41, 0x6e, 0x74, 0x61, +0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x6c, 0x6d, 0x65, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x46, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x65, 0x7a, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x42, 0x65, 0x6c, 0x65, 0x6d, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x63, 0x65, 0x69, 0x6f, +0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x52, 0x65, 0x63, 0x69, 0x66, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x61, 0x72, 0x65, 0x6d, 0x0, 0x41, 0x74, 0x6c, 0x61, 0x6e, 0x74, 0x69, +0x63, 0x2f, 0x53, 0x74, 0x61, 0x6e, 0x6c, 0x65, 0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x61, +0x79, 0x65, 0x6e, 0x6e, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x61, +0x72, 0x69, 0x62, 0x6f, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x35, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x52, 0x69, 0x6f, 0x5f, 0x42, 0x72, 0x61, 0x6e, 0x63, 0x6f, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x45, 0x69, 0x72, 0x75, 0x6e, 0x65, 0x70, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, +0x6f, 0x72, 0x61, 0x6c, 0x5f, 0x48, 0x61, 0x72, 0x62, 0x6f, 0x75, 0x72, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, +0x2f, 0x43, 0x61, 0x79, 0x6d, 0x61, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6f, 0x67, 0x6f, +0x74, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x61, 0x79, 0x61, 0x71, 0x75, 0x69, 0x6c, +0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4a, 0x61, 0x6d, 0x61, 0x69, 0x63, 0x61, 0x0, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x61, 0x6e, 0x61, 0x6d, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x4c, 0x69, 0x6d, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x34, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x41, 0x6e, 0x67, 0x75, 0x69, 0x6c, 0x6c, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, +0x41, 0x6e, 0x74, 0x69, 0x67, 0x75, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x75, 0x62, +0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x61, 0x72, 0x62, 0x61, 0x64, 0x6f, 0x73, 0x0, 0x41, +0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x61, 0x5f, 0x50, 0x61, 0x7a, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x4d, 0x61, 0x6e, 0x61, 0x75, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6f, 0x61, +0x5f, 0x56, 0x69, 0x73, 0x74, 0x61, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x6f, +0x5f, 0x56, 0x65, 0x6c, 0x68, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6c, 0x61, 0x6e, 0x63, +0x2d, 0x53, 0x61, 0x62, 0x6c, 0x6f, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x6f, 0x6d, 0x69, +0x6e, 0x69, 0x63, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6e, 0x74, 0x6f, 0x5f, 0x44, +0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x72, 0x65, 0x6e, 0x61, +0x64, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x61, 0x64, 0x65, 0x6c, 0x6f, 0x75, 0x70, +0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x75, 0x79, 0x61, 0x6e, 0x61, 0x0, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x4d, 0x6f, 0x6e, 0x74, 0x73, 0x65, 0x72, 0x72, 0x61, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, +0x63, 0x61, 0x2f, 0x43, 0x75, 0x72, 0x61, 0x63, 0x61, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, +0x75, 0x65, 0x72, 0x74, 0x6f, 0x5f, 0x52, 0x69, 0x63, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, +0x74, 0x5f, 0x4b, 0x69, 0x74, 0x74, 0x73, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x4c, +0x75, 0x63, 0x69, 0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x56, 0x69, 0x6e, 0x63, +0x65, 0x6e, 0x74, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x6f, 0x72, 0x74, 0x5f, 0x6f, 0x66, 0x5f, +0x53, 0x70, 0x61, 0x69, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x54, 0x6f, 0x72, 0x74, 0x6f, 0x6c, +0x61, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x54, 0x68, 0x6f, 0x6d, 0x61, 0x73, 0x0, +0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x74, 0x5f, 0x42, 0x61, 0x72, 0x74, 0x68, 0x65, 0x6c, 0x65, 0x6d, +0x79, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x69, 0x67, 0x6f, 0x74, 0x0, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x72, 0x61, 0x6c, 0x65, 0x6e, 0x64, 0x69, 0x6a, 0x6b, 0x0, 0x41, 0x6d, 0x65, +0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x65, 0x73, 0x0, 0x41, +0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x69, 0x71, 0x75, 0x65, 0x6c, 0x6f, 0x6e, 0x0, 0x41, 0x73, 0x69, 0x61, +0x2f, 0x53, 0x61, 0x6b, 0x68, 0x61, 0x6c, 0x69, 0x6e, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x41, 0x70, +0x69, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x53, 0x61, 0x6f, 0x5f, 0x54, 0x6f, 0x6d, 0x65, 0x0, 0x45, +0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x53, 0x61, 0x72, 0x61, 0x74, 0x6f, 0x76, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, +0x54, 0x2d, 0x37, 0x0, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x76, 0x69, 0x73, +0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x50, 0x68, 0x6e, 0x6f, 0x6d, 0x5f, 0x50, 0x65, 0x6e, 0x68, 0x0, 0x49, 0x6e, 0x64, +0x69, 0x61, 0x6e, 0x2f, 0x43, 0x68, 0x72, 0x69, 0x73, 0x74, 0x6d, 0x61, 0x73, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, +0x61, 0x6b, 0x61, 0x72, 0x74, 0x61, 0x20, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x50, 0x6f, 0x6e, 0x74, 0x69, 0x61, 0x6e, 0x61, +0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x56, 0x69, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6e, 0x65, 0x0, 0x41, 0x73, 0x69, +0x61, 0x2f, 0x42, 0x61, 0x6e, 0x67, 0x6b, 0x6f, 0x6b, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x61, 0x69, 0x67, 0x6f, +0x6e, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x38, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x42, 0x72, 0x75, +0x6e, 0x65, 0x69, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x6b, 0x61, 0x73, 0x73, 0x61, 0x72, 0x0, 0x41, 0x73, +0x69, 0x61, 0x2f, 0x4b, 0x75, 0x61, 0x6c, 0x61, 0x5f, 0x4c, 0x75, 0x6d, 0x70, 0x75, 0x72, 0x20, 0x41, 0x73, 0x69, 0x61, +0x2f, 0x4b, 0x75, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4d, 0x61, 0x6e, 0x69, 0x6c, 0x61, +0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x53, 0x69, 0x6e, 0x67, 0x61, 0x70, 0x6f, 0x72, 0x65, 0x0, 0x45, 0x74, 0x63, 0x2f, +0x47, 0x4d, 0x54, 0x2d, 0x32, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x61, 0x62, 0x6f, 0x72, 0x6f, 0x6e, +0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x75, 0x6a, 0x75, 0x6d, 0x62, 0x75, 0x72, 0x61, 0x0, 0x41, +0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x75, 0x62, 0x75, 0x6d, 0x62, 0x61, 0x73, 0x68, 0x69, 0x0, 0x41, 0x66, 0x72, +0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x73, 0x65, 0x72, 0x75, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x42, 0x6c, +0x61, 0x6e, 0x74, 0x79, 0x72, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, 0x70, 0x75, 0x74, 0x6f, +0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x69, 0x67, 0x61, 0x6c, 0x69, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x4a, 0x6f, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x73, 0x62, 0x75, 0x72, 0x67, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x4d, 0x62, 0x61, 0x62, 0x61, 0x6e, 0x65, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4c, 0x75, 0x73, +0x61, 0x6b, 0x61, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x61, 0x72, 0x61, 0x72, 0x65, 0x0, 0x41, 0x73, +0x69, 0x61, 0x2f, 0x43, 0x6f, 0x6c, 0x6f, 0x6d, 0x62, 0x6f, 0x0, 0x41, 0x66, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x4b, 0x68, +0x61, 0x72, 0x74, 0x6f, 0x75, 0x6d, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x44, 0x61, 0x6d, 0x61, 0x73, 0x63, 0x75, 0x73, +0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x61, 0x69, 0x70, 0x65, 0x69, 0x0, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, +0x69, 0x61, 0x2f, 0x48, 0x6f, 0x62, 0x61, 0x72, 0x74, 0x20, 0x41, 0x75, 0x73, 0x74, 0x72, 0x61, 0x6c, 0x69, 0x61, 0x2f, +0x43, 0x75, 0x72, 0x72, 0x69, 0x65, 0x20, 0x41, 0x6e, 0x74, 0x61, 0x72, 0x63, 0x74, 0x69, 0x63, 0x61, 0x2f, 0x4d, 0x61, +0x63, 0x71, 0x75, 0x61, 0x72, 0x69, 0x65, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x41, 0x72, 0x61, 0x67, +0x75, 0x61, 0x69, 0x6e, 0x61, 0x0, 0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2d, 0x39, 0x0, 0x41, 0x73, 0x69, 0x61, +0x2f, 0x44, 0x69, 0x6c, 0x69, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x4a, 0x61, 0x79, 0x61, 0x70, 0x75, 0x72, 0x61, 0x0, +0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x6f, 0x6b, 0x79, 0x6f, 0x0, 0x50, 0x61, 0x63, 0x69, 0x66, 0x69, 0x63, 0x2f, 0x50, +0x61, 0x6c, 0x61, 0x75, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x54, 0x6f, 0x6d, 0x73, 0x6b, 0x0, 0x50, 0x61, 0x63, 0x69, +0x66, 0x69, 0x63, 0x2f, 0x54, 0x6f, 0x6e, 0x67, 0x61, 0x74, 0x61, 0x70, 0x75, 0x0, 0x41, 0x73, 0x69, 0x61, 0x2f, 0x43, +0x68, 0x69, 0x74, 0x61, 0x0, 0x45, 0x75, 0x72, 0x6f, 0x70, 0x65, 0x2f, 0x49, 0x73, 0x74, 0x61, 0x6e, 0x62, 0x75, 0x6c, +0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x47, 0x72, 0x61, 0x6e, 0x64, 0x5f, 0x54, 0x75, 0x72, 0x6b, 0x0, +0x41, 0x73, 0x69, 0x61, 0x2f, 0x55, 0x6c, 0x61, 0x61, 0x6e, 0x62, 0x61, 0x61, 0x74, 0x61, 0x72, 0x20, 0x41, 0x73, 0x69, +0x61, 0x2f, 0x43, 0x68, 0x6f, 0x69, 0x62, 0x61, 0x6c, 0x73, 0x61, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, +0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x70, 0x6f, 0x6c, 0x69, 0x73, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, +0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x4d, 0x61, 0x72, 0x65, 0x6e, 0x67, 0x6f, 0x20, 0x41, 0x6d, +0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x49, 0x6e, 0x64, 0x69, 0x61, 0x6e, 0x61, 0x2f, 0x56, 0x65, 0x76, 0x61, 0x79, 0x0, +0x45, 0x74, 0x63, 0x2f, 0x47, 0x4d, 0x54, 0x2b, 0x37, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x57, 0x68, +0x69, 0x74, 0x65, 0x68, 0x6f, 0x72, 0x73, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x43, 0x72, 0x65, +0x73, 0x74, 0x6f, 0x6e, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x77, 0x73, 0x6f, 0x6e, 0x20, +0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x44, 0x61, 0x77, 0x73, 0x6f, 0x6e, 0x5f, 0x43, 0x72, 0x65, 0x65, 0x6b, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x46, 0x6f, 0x72, 0x74, 0x5f, 0x4e, 0x65, 0x6c, 0x73, 0x6f, 0x6e, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x48, 0x65, 0x72, 0x6d, 0x6f, 0x73, 0x69, 0x6c, 0x6c, 0x6f, 0x0, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x2f, 0x50, 0x68, 0x6f, 0x65, 0x6e, 0x69, 0x78, 0x0, 0x45, 0x74, 0x63, 0x2f, diff -Naur a/qtbase/src/corelib/time/qtimezoneprivate_tz.cpp b/qtbase/src/corelib/time/qtimezoneprivate_tz.cpp --- a/qtbase/src/corelib/time/qtimezoneprivate_tz.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/time/qtimezoneprivate_tz.cpp 2022-01-25 17:23:44.202496082 +0000 @@ -42,6 +42,7 @@ #include "qtimezone.h" #include "qtimezoneprivate_p.h" #include "private/qlocale_tools_p.h" +#include "private/qlocking_p.h" #include #include @@ -62,6 +63,10 @@ QT_BEGIN_NAMESPACE +#if QT_CONFIG(icu) +static QBasicMutex s_icu_mutex; +#endif + /* Private @@ -371,8 +376,8 @@ int month = dateParts.at(0).mid(1).toInt(); int week = dateParts.at(1).toInt(); int dow = dateParts.at(2).toInt(); - if (dow == 0) - ++dow; + if (dow == 0) // Sunday; we represent it as 7 + dow = 7; return calculateDowDate(year, month, dow, week); } else if (dateRule.at(0) == 'J') { // Day of Year ignores Feb 29 @@ -394,29 +399,34 @@ // Format "hh[:mm[:ss]]" int hour, min = 0, sec = 0; - // Note that the calls to qstrtoll do *not* check the end pointer, which - // means they proceed until they find a non-digit. We check that we're - // still in range at the end, but we may have read from past end. It's the - // caller's responsibility to ensure that begin is part of a - // null-terminated string. + // Note that the calls to qstrtoll do *not* check against the end pointer, + // which means they proceed until they find a non-digit. We check that we're + // still in range at the end, but we may have read past end. It's the + // caller's responsibility to ensure that begin is part of a null-terminated + // string. + const int maxHour = QTimeZone::MaxUtcOffsetSecs / 3600; bool ok = false; - hour = qstrtoll(begin, &begin, 10, &ok); - if (!ok || hour < 0) + const char *cut = begin; + hour = qstrtoll(begin, &cut, 10, &ok); + if (!ok || hour < 0 || hour > maxHour || cut > begin + 2) return INT_MIN; + begin = cut; if (begin < end && *begin == ':') { // minutes ++begin; - min = qstrtoll(begin, &begin, 10, &ok); - if (!ok || min < 0) + min = qstrtoll(begin, &cut, 10, &ok); + if (!ok || min < 0 || min > 59 || cut > begin + 2) return INT_MIN; + begin = cut; if (begin < end && *begin == ':') { // seconds ++begin; - sec = qstrtoll(begin, &begin, 10, &ok); - if (!ok || sec < 0) + sec = qstrtoll(begin, &cut, 10, &ok); + if (!ok || sec < 0 || sec > 59 || cut > begin + 2) return INT_MIN; + begin = cut; } } @@ -650,6 +660,9 @@ QTzTimeZonePrivate *QTzTimeZonePrivate::clone() const { +#if QT_CONFIG(icu) + const auto lock = qt_scoped_lock(s_icu_mutex); +#endif return new QTzTimeZonePrivate(*this); } @@ -862,13 +875,19 @@ cached_data = std::move(entry); m_id = ianaId; // Avoid empty ID, if we have an abbreviation to use instead - if (m_id.isEmpty()) { // We've read /etc/localtime's contents - for (const auto &abbr : cached_data.m_abbreviations) { - if (!abbr.isEmpty()) { - m_id = abbr; - break; - } - } + if (m_id.isEmpty()) { + // This can only happen for the system zone, when we've read the + // contents of /etc/localtime because it wasn't a symlink. +#if QT_CONFIG(icu) + // Use ICU's system zone, if only to avoid using the abbreviation as ID + // (ICU might mis-recognize it) in displayName(). + m_icu = new QIcuTimeZonePrivate(); + // Use its ID, as an alternate source of data: + m_id = m_icu->id(); + if (!m_id.isEmpty()) + return; +#endif + m_id = abbreviation(QDateTime::currentMSecsSinceEpoch()).toUtf8(); } } @@ -887,12 +906,14 @@ const QLocale &locale) const { #if QT_CONFIG(icu) + auto lock = qt_unique_lock(s_icu_mutex); if (!m_icu) m_icu = new QIcuTimeZonePrivate(m_id); // TODO small risk may not match if tran times differ due to outdated files // TODO Some valid TZ names are not valid ICU names, use translation table? if (m_icu->isValid()) return m_icu->displayName(atMSecsSinceEpoch, nameType, locale); + lock.unlock(); #else Q_UNUSED(nameType) Q_UNUSED(locale) @@ -905,12 +926,14 @@ const QLocale &locale) const { #if QT_CONFIG(icu) + auto lock = qt_unique_lock(s_icu_mutex); if (!m_icu) m_icu = new QIcuTimeZonePrivate(m_id); // TODO small risk may not match if tran times differ due to outdated files // TODO Some valid TZ names are not valid ICU names, use translation table? if (m_icu->isValid()) return m_icu->displayName(timeType, nameType, locale); + lock.unlock(); #else Q_UNUSED(timeType) Q_UNUSED(nameType) @@ -1157,8 +1180,11 @@ */ const StatIdent local = identify("/etc/localtime"); const StatIdent tz = identify("/etc/TZ"); - if (!m_name.isEmpty() && m_last.isValid() && (m_last == local || m_last == tz)) + const StatIdent timezone = identify("/etc/timezone"); + if (!m_name.isEmpty() && m_last.isValid() + && (m_last == local || m_last == tz || m_last == timezone)) { return m_name; + } m_name = etcLocalTime(); if (!m_name.isEmpty()) { @@ -1166,12 +1192,19 @@ return m_name; } - m_name = etcTZ(); - m_last = m_name.isEmpty() ? StatIdent() : tz; + // Some systems (e.g. uClibc) have a default value for $TZ in /etc/TZ: + m_name = etcContent(QStringLiteral("/etc/TZ")); + if (!m_name.isEmpty()) { + m_last = tz; + return m_name; + } + + // Gentoo still (2020, QTBUG-87326) uses this: + m_name = etcContent(QStringLiteral("/etc/timezone")); + m_last = m_name.isEmpty() ? StatIdent() : timezone; return m_name; } - private: QByteArray m_name; struct StatIdent @@ -1212,10 +1245,8 @@ return QByteArray(); } - static QByteArray etcTZ() + static QByteArray etcContent(const QString &path) { - // Some systems (e.g. uClibc) have a default value for $TZ in /etc/TZ: - const QString path = QStringLiteral("/etc/TZ"); QFile zone(path); if (zone.open(QIODevice::ReadOnly)) return zone.readAll().trimmed(); diff -Naur a/qtbase/src/corelib/tools/qarraydataops.h b/qtbase/src/corelib/tools/qarraydataops.h --- a/qtbase/src/corelib/tools/qarraydataops.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/tools/qarraydataops.h 2022-01-25 17:23:44.118496384 +0000 @@ -65,8 +65,10 @@ Q_ASSERT(newSize > uint(this->size)); Q_ASSERT(newSize <= this->alloc); - ::memset(static_cast(this->end()), 0, (newSize - this->size) * sizeof(T)); - this->size = int(newSize); + T *const begin = this->begin(); + do { + new (begin + this->size) T(); + } while (uint(++this->size) != newSize); } void copyAppend(const T *b, const T *e) @@ -154,7 +156,7 @@ T *const begin = this->begin(); do { - new (begin + this->size) T; + new (begin + this->size) T(); } while (uint(++this->size) != newSize); } diff -Naur a/qtbase/src/corelib/tools/qmap.h b/qtbase/src/corelib/tools/qmap.h --- a/qtbase/src/corelib/tools/qmap.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/tools/qmap.h 2022-01-25 17:23:44.080496521 +0000 @@ -141,6 +141,7 @@ QMapNode() = delete; Q_DISABLE_COPY(QMapNode) + friend struct QMapNodeBase; }; template @@ -208,8 +209,11 @@ // using reinterpret_cast because QMapDataBase::header is not // actually a QMapNode. +QT_WARNING_PUSH +QT_WARNING_DISABLE_GCC("-Wstrict-aliasing") const Node *end() const { return reinterpret_cast(&header); } Node *end() { return reinterpret_cast(&header); } +QT_WARNING_POP const Node *begin() const { if (root()) return static_cast(mostLeftNode); return end(); } Node *begin() { if (root()) return static_cast(mostLeftNode); return end(); } diff -Naur a/qtbase/src/corelib/tools/qmargins.cpp b/qtbase/src/corelib/tools/qmargins.cpp --- a/qtbase/src/corelib/tools/qmargins.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/tools/qmargins.cpp 2022-01-25 17:23:44.073496546 +0000 @@ -460,7 +460,7 @@ QMarginsF defines a set of four margins; left, top, right and bottom, that describe the size of the borders surrounding a rectangle. - The isNull() function returns \c true only if all margins are set to zero. + The isNull() function returns \c true only if all margins are very close to zero. QMarginsF objects can be streamed as well as compared. */ @@ -495,8 +495,10 @@ /*! \fn bool QMarginsF::isNull() const - Returns \c true if all margins are 0; otherwise returns + Returns \c true if all margins are very close to 0; otherwise returns false. + + \sa qFuzzyIsNull */ @@ -557,14 +559,26 @@ \fn bool operator==(const QMarginsF &lhs, const QMarginsF &rhs) \relates QMarginsF - Returns \c true if \a lhs and \a rhs are equal; otherwise returns \c false. + Returns \c true if \a lhs and \a rhs are approximately equal; otherwise + returns false. + + \warning This function does not check for strict equality; instead, + it uses a fuzzy comparison to compare the margins. + + \sa qFuzzyCompare */ /*! \fn bool operator!=(const QMarginsF &lhs, const QMarginsF &rhs) \relates QMarginsF - Returns \c true if \a lhs and \a rhs are different; otherwise returns \c false. + Returns \c true if \a lhs and \a rhs are sufficiently different; otherwise + returns \c false. + + \warning This function does not check for strict inequality; instead, + it uses a fuzzy comparison to compare the margins. + + \sa qFuzzyCompare */ /*! diff -Naur a/qtbase/src/corelib/tools/qoffsetstringarray_p.h b/qtbase/src/corelib/tools/qoffsetstringarray_p.h --- a/qtbase/src/corelib/tools/qoffsetstringarray_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/tools/qoffsetstringarray_p.h 2022-01-25 17:23:44.169496201 +0000 @@ -55,6 +55,7 @@ #include #include +#include QT_BEGIN_NAMESPACE diff -Naur a/qtbase/src/corelib/tools/qsharedpointer_impl.h b/qtbase/src/corelib/tools/qsharedpointer_impl.h --- a/qtbase/src/corelib/tools/qsharedpointer_impl.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/tools/qsharedpointer_impl.h 2022-01-25 17:23:44.171496194 +0000 @@ -1012,15 +1012,11 @@ using element_type = typename std::shared_ptr::element_type; auto castResult = qobject_cast(src.get()); if (castResult) { - auto result = std::shared_ptr(std::move(src), castResult); -#if __cplusplus <= 201703L // C++2a's move aliasing constructor will leave src empty. // Before C++2a we don't really know if the compiler has support for it. // The move aliasing constructor is the resolution for LWG2996, // which does not impose a feature-testing macro. So: clear src. - src.reset(); -#endif - return result; + return std::shared_ptr(qExchange(src, nullptr), castResult); } return std::shared_ptr(); } diff -Naur a/qtbase/src/corelib/tools/qvarlengtharray.h b/qtbase/src/corelib/tools/qvarlengtharray.h --- a/qtbase/src/corelib/tools/qvarlengtharray.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/tools/qvarlengtharray.h 2022-01-25 17:23:44.201496086 +0000 @@ -152,30 +152,18 @@ if (s == a) { // i.e. s != 0 T copy(t); realloc(s, s<<1); - const int idx = s++; - if (QTypeInfo::isComplex) { - new (ptr + idx) T(std::move(copy)); - } else { - ptr[idx] = std::move(copy); - } + new (end()) T(std::move(copy)); } else { - const int idx = s++; - if (QTypeInfo::isComplex) { - new (ptr + idx) T(t); - } else { - ptr[idx] = t; - } + new (end()) T(t); } + ++s; } void append(T &&t) { if (s == a) realloc(s, s << 1); - const int idx = s++; - if (QTypeInfo::isComplex) - new (ptr + idx) T(std::move(t)); - else - ptr[idx] = std::move(t); + new (end()) T(std::move(t)); + ++s; } void append(const T *buf, int size); @@ -512,14 +500,14 @@ } template -Q_OUTOFLINE_TEMPLATE typename QVarLengthArray::iterator QVarLengthArray::insert(const_iterator before, size_type n, const T &t) +Q_OUTOFLINE_TEMPLATE typename QVarLengthArray::iterator QVarLengthArray::insert(const_iterator before, int n, const T &t) { Q_ASSERT_X(isValidIterator(before), "QVarLengthArray::insert", "The specified const_iterator argument 'before' is invalid"); int offset = int(before - ptr); if (n != 0) { + const T copy(t); // `t` could alias an element in [begin(), end()[ resize(s + n); - const T copy(t); if (!QTypeInfoQuery::isRelocatable) { T *b = ptr + offset; T *j = ptr + s; @@ -549,6 +537,11 @@ int f = int(abegin - ptr); int l = int(aend - ptr); int n = l - f; + if (n == 0) // avoid UB in std::copy() below + return ptr + f; + + Q_ASSERT(n > 0); // aend must be reachable from abegin + if (QTypeInfo::isComplex) { std::copy(ptr + l, ptr + s, QT_MAKE_CHECKED_ARRAY_ITERATOR(ptr + f, s - f)); T *i = ptr + s; diff -Naur a/qtbase/src/corelib/tools/qvector.h b/qtbase/src/corelib/tools/qvector.h --- a/qtbase/src/corelib/tools/qvector.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/corelib/tools/qvector.h 2022-01-25 17:23:44.118496384 +0000 @@ -343,13 +343,8 @@ template void QVector::defaultConstruct(T *from, T *to) { - if (QTypeInfo::isComplex) { - while (from != to) { - new (from++) T(); - } - } else { - ::memset(static_cast(from), 0, (to - from) * sizeof(T)); - } + while (from != to) + new (from++) T(); } template @@ -640,17 +635,13 @@ if (asize > d->size) { // construct all new objects when growing - if (!QTypeInfo::isComplex) { - ::memset(static_cast(dst), 0, (static_cast(x->end()) - dst) * sizeof(T)); - } else { - QT_TRY { - while (dst != x->end()) - new (dst++) T(); - } QT_CATCH (...) { - // destruct already copied objects - destruct(x->begin(), dst); - QT_RETHROW; - } + QT_TRY { + while (dst != x->end()) + new (dst++) T(); + } QT_CATCH (...) { + // destruct already copied objects + destruct(x->begin(), dst); + QT_RETHROW; } } } QT_CATCH (...) { diff -Naur a/qtbase/src/dbus/qdbusmetaobject.cpp b/qtbase/src/dbus/qdbusmetaobject.cpp --- a/qtbase/src/dbus/qdbusmetaobject.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/dbus/qdbusmetaobject.cpp 2022-01-25 17:23:44.151496265 +0000 @@ -210,6 +210,9 @@ } else if (signature == "a{ss}") { result.name = "QMap"; type = qMetaTypeId >(); + } else if (signature == "aay") { + result.name = "QByteArrayList"; + type = qMetaTypeId(); } else { result.name = "{D-Bus type \"" + signature + "\"}"; type = registerComplexDBusType(result.name); diff -Naur a/qtbase/src/gui/configure.json b/qtbase/src/gui/configure.json --- a/qtbase/src/gui/configure.json 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/configure.json 2022-01-25 17:23:44.180496161 +0000 @@ -601,15 +601,6 @@ ], "use": "xcb" }, - "xcb_util": { - "label": "XCB Util >= 0.3.9", - "headers": "xcb/xcb_util.h", - "sources": [ - { "type": "pkgConfig", "args": "xcb-util >= 0.3.9" }, - "-lxcb-util" - ], - "use": "xcb" - }, "xcb_image": { "label": "XCB Image >= 0.3.9", "headers": "xcb/xcb_image.h", @@ -617,7 +608,7 @@ { "type": "pkgConfig", "args": "xcb-image >= 0.3.9" }, "-lxcb-image" ], - "use": "xcb_shm xcb_util xcb" + "use": "xcb_shm xcb" }, "xcb_keysyms": { "label": "XCB Keysyms >= 0.3.9", @@ -843,7 +834,8 @@ "// embedded devices, are not intended to be used together with X. EGL support", "// has to be disabled in plugins like xcb in this case since the native display,", "// window and pixmap types will be different than what an X-based platform", - "// plugin would expect." + "// plugin would expect.", + "#define USE_X11" ], "include": [ "EGL/egl.h", "X11/Xlib.h" ], "main": [ @@ -1065,7 +1057,6 @@ "tail": "#undef explicit", "include": [ "xcb/xcb.h", - "xcb/xcb_util.h", "xcb/xcb_image.h", "xcb/xcb_keysyms.h", "xcb/randr.h", @@ -1097,7 +1088,7 @@ "xcb_xkb_get_kbd_by_name_replies_key_names_value_list_sizeof(nullptr, 0, 0, 0, 0, 0, 0, 0, 0);" ] }, - "use": "xcb_icccm xcb_util xcb_image xcb_keysyms xcb_randr xcb_render xcb_renderutil xcb_shape xcb_shm xcb_sync xcb_xfixes xcb_xinerama xcb_xkb xcb" + "use": "xcb_icccm xcb_image xcb_keysyms xcb_randr xcb_render xcb_renderutil xcb_shape xcb_shm xcb_sync xcb_xfixes xcb_xinerama xcb_xkb xcb" }, "x11prefix": { "label": "X11 prefix", diff -Naur a/qtbase/src/gui/image/qimage.cpp b/qtbase/src/gui/image/qimage.cpp --- a/qtbase/src/gui/image/qimage.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/image/qimage.cpp 2022-01-25 17:23:44.191496122 +0000 @@ -182,7 +182,7 @@ data = nullptr; } -#if defined(_M_ARM) +#if defined(_M_ARM) && defined(_MSC_VER) #pragma optimize("", off) #endif @@ -312,7 +312,7 @@ return has_alpha_pixels; } -#if defined(_M_ARM) +#if defined(_M_ARM) && defined(_MSC_VER) #pragma optimize("", on) #endif @@ -2255,6 +2255,7 @@ // In case detach() ran out of memory if (!d) { d = oldD; + d->ref.ref(); return false; } } @@ -2647,12 +2648,9 @@ ((uint *)s)[x] = qConvertRgb64ToRgb30(c); return; case Format_RGBX64: - ((QRgba64 *)s)[x] = color.rgba64(); - ((QRgba64 *)s)[x].setAlpha(65535); - return; case Format_RGBA64: case Format_RGBA64_Premultiplied: - ((QRgba64 *)s)[x] = color.rgba64(); + ((QRgba64 *)s)[x] = c; return; default: setPixel(x, y, c.toArgb32()); @@ -5061,7 +5059,7 @@ int segments = sizeInBytes() / (1<<16); segments = std::min(segments, height()); QThreadPool *threadPool = QThreadPool::globalInstance(); - if (segments > 1 && !threadPool->contains(QThread::currentThread())) { + if (segments > 1 && threadPool && !threadPool->contains(QThread::currentThread())) { QSemaphore semaphore; int y = 0; for (int i = 0; i < segments; ++i) { diff -Naur a/qtbase/src/gui/image/qimage_p.h b/qtbase/src/gui/image/qimage_p.h --- a/qtbase/src/gui/image/qimage_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/image/qimage_p.h 2022-01-25 17:23:44.078496528 +0000 @@ -167,7 +167,7 @@ const uchar *qt_get_bitflip_array(); Q_GUI_EXPORT void qGamma_correct_back_to_linear_cs(QImage *image); -#if defined(_M_ARM) // QTBUG-42038 +#if defined(_M_ARM) && defined(_MSC_VER) // QTBUG-42038 #pragma optimize("", off) #endif inline int qt_depthForFormat(QImage::Format format) @@ -222,7 +222,7 @@ return depth; } -#if defined(_M_ARM) +#if defined(_M_ARM) && defined(_MSC_VER) #pragma optimize("", on) #endif diff -Naur a/qtbase/src/gui/image/qpnghandler.cpp b/qtbase/src/gui/image/qpnghandler.cpp --- a/qtbase/src/gui/image/qpnghandler.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/image/qpnghandler.cpp 2022-01-25 17:23:44.181496158 +0000 @@ -649,10 +649,10 @@ } if (primaries.areValid()) { colorSpace = QColorSpace(primaries.whitePoint, primaries.redPoint, primaries.greenPoint, primaries.bluePoint, - QColorSpace::TransferFunction::Gamma, fileGamma); + QColorSpace::TransferFunction::Gamma, 1.0f / fileGamma); } else { colorSpace = QColorSpace(QColorSpace::Primaries::SRgb, - QColorSpace::TransferFunction::Gamma, fileGamma); + QColorSpace::TransferFunction::Gamma, 1.0f / fileGamma); } colorSpaceState = GammaChrm; } diff -Naur a/qtbase/src/gui/image/qppmhandler.cpp b/qtbase/src/gui/image/qppmhandler.cpp --- a/qtbase/src/gui/image/qppmhandler.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/image/qppmhandler.cpp 2022-01-25 17:23:44.190496125 +0000 @@ -63,7 +63,7 @@ } while (res > 0 && buf[res-1] != '\n'); } -static int read_pbm_int(QIODevice *d) +static int read_pbm_int(QIODevice *d, bool *ok) { char c; int val = -1; @@ -97,6 +97,8 @@ else break; } + if (val < 0) + *ok = false; return hasOverflow ? -1 : val; } @@ -113,16 +115,17 @@ if (type < '1' || type > '6') return false; - w = read_pbm_int(device); // get image width - h = read_pbm_int(device); // get image height + bool ok = true; + w = read_pbm_int(device, &ok); // get image width + h = read_pbm_int(device, &ok); // get image height if (type == '1' || type == '4') mcc = 1; // ignore max color component else - mcc = read_pbm_int(device); // get max color component + mcc = read_pbm_int(device, &ok); // get max color component - if (w <= 0 || w > 32767 || h <= 0 || h > 32767 || mcc <= 0 || mcc > 0xffff) - return false; // weird P.M image + if (!ok || w <= 0 || w > 32767 || h <= 0 || h > 32767 || mcc <= 0 || mcc > 0xffff) + return false; // weird P.M image return true; } @@ -233,18 +236,18 @@ } else { // read ascii data uchar *p; int n; - char buf; - for (y = 0; (y < h) && (device->peek(&buf, 1) == 1); y++) { + bool ok = true; + for (y = 0; y < h && ok; y++) { p = outImage->scanLine(y); n = pbm_bpl; if (nbits == 1) { int b; int bitsLeft = w; - while (n--) { + while (n-- && ok) { b = 0; for (int i=0; i<8; i++) { if (i < bitsLeft) - b = (b << 1) | (read_pbm_int(device) & 1); + b = (b << 1) | (read_pbm_int(device, &ok) & 1); else b = (b << 1) | (0 & 1); // pad it our self if we need to } @@ -253,36 +256,38 @@ } } else if (nbits == 8) { if (mcc == 255) { - while (n--) { - *p++ = read_pbm_int(device); + while (n-- && ok) { + *p++ = read_pbm_int(device, &ok); } } else { - while (n--) { - *p++ = (read_pbm_int(device) & 0xffff) * 255 / mcc; + while (n-- && ok) { + *p++ = (read_pbm_int(device, &ok) & 0xffff) * 255 / mcc; } } } else { // 32 bits n /= 4; int r, g, b; if (mcc == 255) { - while (n--) { - r = read_pbm_int(device); - g = read_pbm_int(device); - b = read_pbm_int(device); + while (n-- && ok) { + r = read_pbm_int(device, &ok); + g = read_pbm_int(device, &ok); + b = read_pbm_int(device, &ok); *((QRgb*)p) = qRgb(r, g, b); p += 4; } } else { - while (n--) { - r = read_pbm_int(device); - g = read_pbm_int(device); - b = read_pbm_int(device); + while (n-- && ok) { + r = read_pbm_int(device, &ok); + g = read_pbm_int(device, &ok); + b = read_pbm_int(device, &ok); *((QRgb*)p) = scale_pbm_color(mcc, r, g, b); p += 4; } } } } + if (!ok) + return false; } if (format == QImage::Format_Mono) { diff -Naur a/qtbase/src/gui/image/qxpmhandler.cpp b/qtbase/src/gui/image/qxpmhandler.cpp --- a/qtbase/src/gui/image/qxpmhandler.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/image/qxpmhandler.cpp 2022-01-25 17:23:44.146496283 +0000 @@ -924,7 +924,7 @@ colorMap.insert(xpmHash(QLatin1String(index.constData())), 0); } } else { - QRgb c_rgb; + QRgb c_rgb = 0; if (((buf.length()-1) % 3) && (buf[0] == '#')) { buf.truncate(((buf.length()-1) / 4 * 3) + 1); // remove alpha channel left by imagemagick } diff -Naur a/qtbase/src/gui/kernel/qplatformwindow.cpp b/qtbase/src/gui/kernel/qplatformwindow.cpp --- a/qtbase/src/gui/kernel/qplatformwindow.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/kernel/qplatformwindow.cpp 2022-01-25 17:23:44.181496158 +0000 @@ -229,7 +229,7 @@ */ bool QPlatformWindow::isAncestorOf(const QPlatformWindow *child) const { - for (const QPlatformWindow *parent = child->parent(); parent; parent = child->parent()) { + for (const QPlatformWindow *parent = child->parent(); parent; parent = parent->parent()) { if (parent == this) return true; } diff -Naur a/qtbase/src/gui/opengl/qopenglpaintdevice.cpp b/qtbase/src/gui/opengl/qopenglpaintdevice.cpp --- a/qtbase/src/gui/opengl/qopenglpaintdevice.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/opengl/qopenglpaintdevice.cpp 2022-01-25 17:23:44.171496194 +0000 @@ -331,7 +331,7 @@ void QOpenGLPaintDevice::setDotsPerMeterY(qreal dpmy) { - d_ptr->dpmx = dpmy; + d_ptr->dpmy = dpmy; } /*! diff -Naur a/qtbase/src/gui/painting/qblendfunctions_p.h b/qtbase/src/gui/painting/qblendfunctions_p.h --- a/qtbase/src/gui/painting/qblendfunctions_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/painting/qblendfunctions_p.h 2022-01-25 17:23:44.199496093 +0000 @@ -246,25 +246,32 @@ int dudx, int dvdx, int dudy, int dvdy, int u0, int v0, Blender blender) { - int fromY = qMax(qRound(topY), clip.top()); - int toY = qMin(qRound(bottomY), clip.top() + clip.height()); + qint64 fromY = qMax(qRound(topY), clip.top()); + qint64 toY = qMin(qRound(bottomY), clip.top() + clip.height()); if (fromY >= toY) return; qreal leftSlope = (bottomLeft.x - topLeft.x) / (bottomLeft.y - topLeft.y); qreal rightSlope = (bottomRight.x - topRight.x) / (bottomRight.y - topRight.y); - int dx_l = int(leftSlope * 0x10000); - int dx_r = int(rightSlope * 0x10000); - int x_l = int((topLeft.x + (qreal(0.5) + fromY - topLeft.y) * leftSlope + qreal(0.5)) * 0x10000); - int x_r = int((topRight.x + (qreal(0.5) + fromY - topRight.y) * rightSlope + qreal(0.5)) * 0x10000); + qint64 dx_l = qint64(leftSlope * 0x10000); + qint64 dx_r = qint64(rightSlope * 0x10000); + qint64 x_l = qint64((topLeft.x + (qreal(0.5) + fromY - topLeft.y) * leftSlope + qreal(0.5)) * 0x10000); + qint64 x_r = qint64((topRight.x + (qreal(0.5) + fromY - topRight.y) * rightSlope + qreal(0.5)) * 0x10000); + + qint64 sourceRectTop = qint64(sourceRect.top()); + qint64 sourceRectLeft = qint64(sourceRect.left()); + qint64 sourceRectWidth = qint64(sourceRect.width()); + qint64 sourceRectHeight = qint64(sourceRect.height()); + qint64 clipLeft = qint64(clip.left()); + qint64 clipWidth = qint64(clip.width()); - int fromX, toX, x1, x2, u, v, i, ii; + qint64 fromX, toX, x1, x2, u, v, i, ii; DestT *line; - for (int y = fromY; y < toY; ++y) { + for (qint64 y = fromY; y < toY; ++y) { line = reinterpret_cast(reinterpret_cast(destPixels) + y * dbpl); - fromX = qMax(x_l >> 16, clip.left()); - toX = qMin(x_r >> 16, clip.left() + clip.width()); + fromX = qMax(x_l >> 16, clipLeft); + toX = qMin(x_r >> 16, clipLeft + clipWidth); if (fromX < toX) { // Because of rounding, we can get source coordinates outside the source image. // Clamp these coordinates to the source rect to avoid segmentation fault and @@ -275,10 +282,10 @@ u = x1 * dudx + y * dudy + u0; v = x1 * dvdx + y * dvdy + v0; for (; x1 < toX; ++x1) { - int uu = u >> 16; - int vv = v >> 16; - if (uu >= sourceRect.left() && uu < sourceRect.left() + sourceRect.width() - && vv >= sourceRect.top() && vv < sourceRect.top() + sourceRect.height()) { + qint64 uu = u >> 16; + qint64 vv = v >> 16; + if (uu >= sourceRectLeft && uu < sourceRectLeft + sourceRectWidth + && vv >= sourceRectTop && vv < sourceRectTop + sourceRectHeight) { break; } u += dudx; @@ -290,10 +297,10 @@ u = (x2 - 1) * dudx + y * dudy + u0; v = (x2 - 1) * dvdx + y * dvdy + v0; for (; x2 > x1; --x2) { - int uu = u >> 16; - int vv = v >> 16; - if (uu >= sourceRect.left() && uu < sourceRect.left() + sourceRect.width() - && vv >= sourceRect.top() && vv < sourceRect.top() + sourceRect.height()) { + qint64 uu = u >> 16; + qint64 vv = v >> 16; + if (uu >= sourceRectLeft && uu < sourceRectLeft + sourceRectWidth + && vv >= sourceRectTop && vv < sourceRectTop + sourceRectHeight) { break; } u -= dudx; @@ -308,8 +315,8 @@ // Beginning of the scan line, with per-pixel checks. i = x1 - fromX; while (i) { - int uu = qBound(sourceRect.left(), u >> 16, sourceRect.left() + sourceRect.width() - 1); - int vv = qBound(sourceRect.top(), v >> 16, sourceRect.top() + sourceRect.height() - 1); + qint64 uu = qBound(sourceRectLeft, u >> 16, sourceRectLeft + sourceRectWidth - 1); + qint64 vv = qBound(sourceRectTop, v >> 16, sourceRectTop + sourceRectHeight - 1); blender.write(line, reinterpret_cast(reinterpret_cast(srcPixels) + vv * sbpl)[uu]); u += dudx; v += dvdx; @@ -348,8 +355,8 @@ // End of the scan line, with per-pixel checks. i = toX - x2; while (i) { - int uu = qBound(sourceRect.left(), u >> 16, sourceRect.left() + sourceRect.width() - 1); - int vv = qBound(sourceRect.top(), v >> 16, sourceRect.top() + sourceRect.height() - 1); + qint64 uu = qBound(sourceRectLeft, u >> 16, sourceRectLeft + sourceRectWidth - 1); + qint64 vv = qBound(sourceRectTop, v >> 16, sourceRectTop + sourceRectHeight - 1); blender.write(line, reinterpret_cast(reinterpret_cast(srcPixels) + vv * sbpl)[uu]); u += dudx; v += dvdx; diff -Naur a/qtbase/src/gui/painting/qbrush.cpp b/qtbase/src/gui/painting/qbrush.cpp --- a/qtbase/src/gui/painting/qbrush.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/painting/qbrush.cpp 2022-01-25 17:23:44.096496463 +0000 @@ -1354,7 +1354,176 @@ \since 5.12 This enum specifies a set of predefined presets for QGradient, - based on the gradients from https://webgradients.com/. + based on the gradients from \l {https://webgradients.com/}. + + \value WarmFlame + \value NightFade + \value SpringWarmth + \value JuicyPeach + \value YoungPassion + \value LadyLips + \value SunnyMorning + \value RainyAshville + \value FrozenDreams + \value WinterNeva + \value DustyGrass + \value TemptingAzure + \value HeavyRain + \value AmyCrisp + \value MeanFruit + \value DeepBlue + \value RipeMalinka + \value CloudyKnoxville + \value MalibuBeach + \value NewLife + \value TrueSunset + \value MorpheusDen + \value RareWind + \value NearMoon + \value WildApple + \value SaintPetersburg + \value PlumPlate + \value EverlastingSky + \value HappyFisher + \value Blessing + \value SharpeyeEagle + \value LadogaBottom + \value LemonGate + \value ItmeoBranding + \value ZeusMiracle + \value OldHat + \value StarWine + \value HappyAcid + \value AwesomePine + \value NewYork + \value ShyRainbow + \value MixedHopes + \value FlyHigh + \value StrongBliss + \value FreshMilk + \value SnowAgain + \value FebruaryInk + \value KindSteel + \value SoftGrass + \value GrownEarly + \value SharpBlues + \value ShadyWater + \value DirtyBeauty + \value GreatWhale + \value TeenNotebook + \value PoliteRumors + \value SweetPeriod + \value WideMatrix + \value SoftCherish + \value RedSalvation + \value BurningSpring + \value NightParty + \value SkyGlider + \value HeavenPeach + \value PurpleDivision + \value AquaSplash + \value SpikyNaga + \value LoveKiss + \value CleanMirror + \value PremiumDark + \value ColdEvening + \value CochitiLake + \value SummerGames + \value PassionateBed + \value MountainRock + \value DesertHump + \value JungleDay + \value PhoenixStart + \value OctoberSilence + \value FarawayRiver + \value AlchemistLab + \value OverSun + \value PremiumWhite + \value MarsParty + \value EternalConstance + \value JapanBlush + \value SmilingRain + \value CloudyApple + \value BigMango + \value HealthyWater + \value AmourAmour + \value RiskyConcrete + \value StrongStick + \value ViciousStance + \value PaloAlto + \value HappyMemories + \value MidnightBloom + \value Crystalline + \value PartyBliss + \value ConfidentCloud + \value LeCocktail + \value RiverCity + \value FrozenBerry + \value ChildCare + \value FlyingLemon + \value NewRetrowave + \value HiddenJaguar + \value AboveTheSky + \value Nega + \value DenseWater + \value Seashore + \value MarbleWall + \value CheerfulCaramel + \value NightSky + \value MagicLake + \value YoungGrass + \value ColorfulPeach + \value GentleCare + \value PlumBath + \value HappyUnicorn + \value AfricanField + \value SolidStone + \value OrangeJuice + \value GlassWater + \value NorthMiracle + \value FruitBlend + \value MillenniumPine + \value HighFlight + \value MoleHall + \value SpaceShift + \value ForestInei + \value RoyalGarden + \value RichMetal + \value JuicyCake + \value SmartIndigo + \value SandStrike + \value NorseBeauty + \value AquaGuidance + \value SunVeggie + \value SeaLord + \value BlackSea + \value GrassShampoo + \value LandingAircraft + \value WitchDance + \value SleeplessNight + \value AngelCare + \value CrystalRiver + \value SoftLipstick + \value SaltMountain + \value PerfectWhite + \value FreshOasis + \value StrictNovember + \value MorningSalad + \value DeepRelief + \value SeaStrike + \value NightCall + \value SupremeSky + \value LightBlue + \value MindCrawl + \value LilyMeadow + \value SugarLollipop + \value SweetDessert + \value MagicRay + \value TeenParty + \value FrozenHeat + \value GagarinView + \value FabledSunset + \value PerfectBlue */ /*! diff -Naur a/qtbase/src/gui/painting/qcolor.cpp b/qtbase/src/gui/painting/qcolor.cpp --- a/qtbase/src/gui/painting/qcolor.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/painting/qcolor.cpp 2022-01-25 17:23:44.095496467 +0000 @@ -3203,7 +3203,7 @@ Returns the ARGB quadruplet (255, \a{r}, \a{g}, \a{b}). - \sa qRgba(), qRed(), qGreen(), qBlue() + \sa qRgba(), qRed(), qGreen(), qBlue(), qAlpha() */ /*! @@ -3212,7 +3212,7 @@ Returns the ARGB quadruplet (\a{a}, \a{r}, \a{g}, \a{b}). - \sa qRgb(), qRed(), qGreen(), qBlue() + \sa qRgb(), qRed(), qGreen(), qBlue(), qAlpha() */ /*! diff -Naur a/qtbase/src/gui/painting/qcolorspace.cpp b/qtbase/src/gui/painting/qcolorspace.cpp --- a/qtbase/src/gui/painting/qcolorspace.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/painting/qcolorspace.cpp 2022-01-25 17:23:44.123496366 +0000 @@ -198,9 +198,9 @@ initialize(); } -QColorSpacePrivate::QColorSpacePrivate(QColorSpace::Primaries primaries, QColorSpace::TransferFunction fun, float gamma) +QColorSpacePrivate::QColorSpacePrivate(QColorSpace::Primaries primaries, QColorSpace::TransferFunction transferFunction, float gamma) : primaries(primaries) - , transferFunction(fun) + , transferFunction(transferFunction) , gamma(gamma) { identifyColorSpace(); @@ -208,10 +208,10 @@ } QColorSpacePrivate::QColorSpacePrivate(const QColorSpacePrimaries &primaries, - QColorSpace::TransferFunction fun, + QColorSpace::TransferFunction transferFunction, float gamma) : primaries(QColorSpace::Primaries::Custom) - , transferFunction(fun) + , transferFunction(transferFunction) , gamma(gamma) { Q_ASSERT(primaries.areValid()); @@ -456,11 +456,11 @@ } /*! - Creates a custom color space with the primaries \a primaries, using the transfer function \a fun and + Creates a custom color space with the primaries \a primaries, using the transfer function \a transferFunction and optionally \a gamma. */ -QColorSpace::QColorSpace(QColorSpace::Primaries primaries, QColorSpace::TransferFunction fun, float gamma) - : d_ptr(new QColorSpacePrivate(primaries, fun, gamma)) +QColorSpace::QColorSpace(QColorSpace::Primaries primaries, QColorSpace::TransferFunction transferFunction, float gamma) + : d_ptr(new QColorSpacePrivate(primaries, transferFunction, gamma)) { d_ptr->ref.ref(); } @@ -477,11 +477,11 @@ /*! Creates a custom colorspace with a primaries based on the chromaticities of the primary colors \a whitePoint, - \a redPoint, \a greenPoint and \a bluePoint, and using the transfer function \a fun and optionally \a gamma. + \a redPoint, \a greenPoint and \a bluePoint, and using the transfer function \a transferFunction and optionally \a gamma. */ QColorSpace::QColorSpace(const QPointF &whitePoint, const QPointF &redPoint, const QPointF &greenPoint, const QPointF &bluePoint, - QColorSpace::TransferFunction fun, float gamma) + QColorSpace::TransferFunction transferFunction, float gamma) { QColorSpacePrimaries primaries(whitePoint, redPoint, greenPoint, bluePoint); if (!primaries.areValid()) { @@ -489,7 +489,7 @@ d_ptr = nullptr; return; } - d_ptr = new QColorSpacePrivate(primaries, fun, gamma); + d_ptr = new QColorSpacePrivate(primaries, transferFunction, gamma); d_ptr->ref.ref(); } diff -Naur a/qtbase/src/gui/painting/qcolorspace.h b/qtbase/src/gui/painting/qcolorspace.h --- a/qtbase/src/gui/painting/qcolorspace.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/painting/qcolorspace.h 2022-01-25 17:23:44.123496366 +0000 @@ -82,11 +82,11 @@ QColorSpace(); QColorSpace(NamedColorSpace namedColorSpace); - QColorSpace(Primaries primaries, TransferFunction fun, float gamma = 0.0f); + QColorSpace(Primaries primaries, TransferFunction transferFunction, float gamma = 0.0f); QColorSpace(Primaries primaries, float gamma); QColorSpace(const QPointF &whitePoint, const QPointF &redPoint, const QPointF &greenPoint, const QPointF &bluePoint, - TransferFunction fun, float gamma = 0.0f); + TransferFunction transferFunction, float gamma = 0.0f); ~QColorSpace(); QColorSpace(const QColorSpace &colorSpace); diff -Naur a/qtbase/src/gui/painting/qcolorspace_p.h b/qtbase/src/gui/painting/qcolorspace_p.h --- a/qtbase/src/gui/painting/qcolorspace_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/painting/qcolorspace_p.h 2022-01-25 17:23:44.123496366 +0000 @@ -91,8 +91,8 @@ public: QColorSpacePrivate(); QColorSpacePrivate(QColorSpace::NamedColorSpace namedColorSpace); - QColorSpacePrivate(QColorSpace::Primaries primaries, QColorSpace::TransferFunction fun, float gamma); - QColorSpacePrivate(const QColorSpacePrimaries &primaries, QColorSpace::TransferFunction fun, float gamma); + QColorSpacePrivate(QColorSpace::Primaries primaries, QColorSpace::TransferFunction transferFunction, float gamma); + QColorSpacePrivate(const QColorSpacePrimaries &primaries, QColorSpace::TransferFunction transferFunction, float gamma); QColorSpacePrivate(const QColorSpacePrivate &other) = default; // named different from get to avoid accidental detachs diff -Naur a/qtbase/src/gui/painting/qcosmeticstroker.cpp b/qtbase/src/gui/painting/qcosmeticstroker.cpp --- a/qtbase/src/gui/painting/qcosmeticstroker.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/painting/qcosmeticstroker.cpp 2022-01-25 17:23:44.119496380 +0000 @@ -250,7 +250,7 @@ strokeSelection |= AntiAliased; const QVector &penPattern = state->lastPen.dashPattern(); - if (penPattern.isEmpty()) { + if (penPattern.isEmpty() || penPattern.size() > 1024) { Q_ASSERT(!pattern && !reversePattern); pattern = nullptr; reversePattern = nullptr; @@ -263,12 +263,12 @@ patternLength = 0; for (int i = 0; i < patternSize; ++i) { - patternLength += (int) qMax(1. , penPattern.at(i)*64.); + patternLength += (int)qBound(1., penPattern.at(i) * 64, 65536.); pattern[i] = patternLength; } patternLength = 0; for (int i = 0; i < patternSize; ++i) { - patternLength += (int) qMax(1., penPattern.at(patternSize - 1 - i)*64.); + patternLength += (int)qBound(1., penPattern.at(patternSize - 1 - i) * 64, 65536.); reversePattern[i] = patternLength; } strokeSelection |= Dashed; @@ -311,6 +311,8 @@ // returns true if the whole line gets clipped away bool QCosmeticStroker::clipLine(qreal &x1, qreal &y1, qreal &x2, qreal &y2) { + if (!qIsFinite(x1) || !qIsFinite(y1) || !qIsFinite(x2) || !qIsFinite(y2)) + return true; // basic/rough clipping is done in floating point coordinates to avoid // integer overflow problems. if (x1 < xmin) { diff -Naur a/qtbase/src/gui/painting/qpaintengineex.cpp b/qtbase/src/gui/painting/qpaintengineex.cpp --- a/qtbase/src/gui/painting/qpaintengineex.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/painting/qpaintengineex.cpp 2022-01-25 17:23:44.177496172 +0000 @@ -385,7 +385,7 @@ Q_GUI_EXPORT extern bool qt_scaleForTransform(const QTransform &transform, qreal *scale); // qtransform.cpp -void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &pen) +void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &inPen) { #ifdef QT_DEBUG_DRAW qDebug() << "QPaintEngineEx::stroke()" << pen; @@ -403,6 +403,38 @@ d->stroker.setCubicToHook(qpaintengineex_cubicTo); } + QRectF clipRect; + QPen pen = inPen; + if (pen.style() > Qt::SolidLine) { + QRectF cpRect = path.controlPointRect(); + const QTransform &xf = state()->matrix; + if (qt_pen_is_cosmetic(pen, state()->renderHints)){ + clipRect = d->exDeviceRect; + cpRect.translate(xf.dx(), xf.dy()); + } else { + clipRect = xf.inverted().mapRect(QRectF(d->exDeviceRect)); + } + // Check to avoid generating unwieldy amount of dashes that will not be visible anyway + qreal pw = pen.widthF() ? pen.widthF() : 1; + QRectF extentRect = cpRect.adjusted(-pw, -pw, pw, pw) & clipRect; + qreal extent = qMax(extentRect.width(), extentRect.height()); + qreal patternLength = 0; + const QVector pattern = pen.dashPattern(); + const int patternSize = qMin(pattern.size(), 32); + for (int i = 0; i < patternSize; i++) + patternLength += qMax(pattern.at(i), qreal(0)); + patternLength *= pw; + if (qFuzzyIsNull(patternLength)) { + pen.setStyle(Qt::NoPen); + } else if (extent / patternLength > 10000) { + // approximate stream of tiny dashes with semi-transparent solid line + pen.setStyle(Qt::SolidLine); + QColor color(pen.color()); + color.setAlpha(color.alpha() / 2); + pen.setColor(color); + } + } + if (!qpen_fast_equals(pen, d->strokerPen)) { d->strokerPen = pen; d->stroker.setJoinStyle(pen.joinStyle()); @@ -430,14 +462,8 @@ return; } - if (pen.style() > Qt::SolidLine) { - if (qt_pen_is_cosmetic(pen, state()->renderHints)){ - d->activeStroker->setClipRect(d->exDeviceRect); - } else { - QRectF clipRect = state()->matrix.inverted().mapRect(QRectF(d->exDeviceRect)); - d->activeStroker->setClipRect(clipRect); - } - } + if (!clipRect.isNull()) + d->activeStroker->setClipRect(clipRect); if (d->activeStroker == &d->stroker) d->stroker.setForceOpen(path.hasExplicitOpen()); diff -Naur a/qtbase/src/gui/painting/qpainterpath.cpp b/qtbase/src/gui/painting/qpainterpath.cpp --- a/qtbase/src/gui/painting/qpainterpath.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/painting/qpainterpath.cpp 2022-01-25 17:23:44.183496151 +0000 @@ -1248,7 +1248,7 @@ if (si.analysis.flags < QScriptAnalysis::TabOrObject) { QGlyphLayout glyphs = eng->shapedGlyphs(&si); - QFontEngine *fe = f.d->engineForScript(si.analysis.script); + QFontEngine *fe = eng->fontEngine(si); Q_ASSERT(fe); fe->addOutlineToPath(x, y, glyphs, this, si.analysis.bidiLevel % 2 diff -Naur a/qtbase/src/gui/painting/qpathclipper_p.h b/qtbase/src/gui/painting/qpathclipper_p.h --- a/qtbase/src/gui/painting/qpathclipper_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/painting/qpathclipper_p.h 2022-01-25 17:23:44.202496082 +0000 @@ -156,7 +156,7 @@ int vertex(Direction direction) const; private: - int m_next[2][2]; + int m_next[2][2] = { { -1, -1 }, { -1, -1 } }; }; class QPathSegments @@ -296,10 +296,6 @@ , angle(0) , invAngle(0) { - m_next[0][0] = -1; - m_next[1][0] = -1; - m_next[0][0] = -1; - m_next[1][0] = -1; } inline int QPathEdge::next(Traversal traversal, Direction direction) const diff -Naur a/qtbase/src/gui/painting/qpdf.cpp b/qtbase/src/gui/painting/qpdf.cpp --- a/qtbase/src/gui/painting/qpdf.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/painting/qpdf.cpp 2022-01-25 17:23:44.184496147 +0000 @@ -856,14 +856,14 @@ if (!d->hasPen && !d->hasBrush) return; - if (d->simplePen || !d->hasPen) { - // draw strokes natively in this case for better output - if(!d->simplePen && !d->stroker.matrix.isIdentity()) + if ((d->simplePen && !d->needsTransform) || !d->hasPen) { + // draw natively in this case for better output + if (!d->hasPen && d->needsTransform) // i.e. this is just a fillrect *d->currentPage << "q\n" << QPdf::generateMatrix(d->stroker.matrix); for (int i = 0; i < rectCount; ++i) *d->currentPage << rects[i].x() << rects[i].y() << rects[i].width() << rects[i].height() << "re\n"; *d->currentPage << (d->hasPen ? (d->hasBrush ? "B\n" : "S\n") : "f\n"); - if(!d->simplePen && !d->stroker.matrix.isIdentity()) + if (!d->hasPen && d->needsTransform) *d->currentPage << "Q\n"; } else { QPainterPath p; @@ -920,7 +920,8 @@ if (d->simplePen) { // draw strokes natively in this case for better output - *d->currentPage << QPdf::generatePath(p, QTransform(), d->hasBrush ? QPdf::FillAndStrokePath : QPdf::StrokePath); + *d->currentPage << QPdf::generatePath(p, d->needsTransform ? d->stroker.matrix : QTransform(), + d->hasBrush ? QPdf::FillAndStrokePath : QPdf::StrokePath); } else { if (d->hasBrush) *d->currentPage << QPdf::generatePath(p, d->stroker.matrix, QPdf::FillPath); @@ -967,7 +968,7 @@ *d->currentPage << QPdf::generateMatrix(QTransform(rectangle.width() / sr.width(), 0, 0, rectangle.height() / sr.height(), - rectangle.x(), rectangle.y()) * (d->simplePen ? QTransform() : d->stroker.matrix)); + rectangle.x(), rectangle.y()) * (!d->needsTransform ? QTransform() : d->stroker.matrix)); if (bitmap) { // set current pen as d->brush d->brush = d->pen.brush(); @@ -1007,7 +1008,7 @@ *d->currentPage << QPdf::generateMatrix(QTransform(rectangle.width() / sr.width(), 0, 0, rectangle.height() / sr.height(), - rectangle.x(), rectangle.y()) * (d->simplePen ? QTransform() : d->stroker.matrix)); + rectangle.x(), rectangle.y()) * (!d->needsTransform ? QTransform() : d->stroker.matrix)); setBrush(); d->currentPage->streamImage(im.width(), im.height(), object); *d->currentPage << "Q\n"; @@ -1056,7 +1057,7 @@ } *d->currentPage << "q\n"; - if(!d->simplePen) + if (d->needsTransform) *d->currentPage << QPdf::generateMatrix(d->stroker.matrix); bool hp = d->hasPen; @@ -1135,12 +1136,12 @@ d->pen = state.pen(); } d->hasPen = d->pen.style() != Qt::NoPen; + bool oldCosmetic = d->stroker.cosmeticPen; d->stroker.setPen(d->pen, state.renderHints()); QBrush penBrush = d->pen.brush(); - bool cosmeticPen = qt_pen_is_cosmetic(d->pen, state.renderHints()); bool oldSimple = d->simplePen; - d->simplePen = (d->hasPen && !cosmeticPen && (penBrush.style() == Qt::SolidPattern) && penBrush.isOpaque() && d->opacity == 1.0); - if (oldSimple != d->simplePen) + d->simplePen = (d->hasPen && (penBrush.style() == Qt::SolidPattern) && penBrush.isOpaque() && d->opacity == 1.0); + if (oldSimple != d->simplePen || oldCosmetic != d->stroker.cosmeticPen) flags |= DirtyTransform; } else if (flags & DirtyHints) { d->stroker.setPen(d->pen, state.renderHints()); @@ -1224,8 +1225,13 @@ if (flags & DirtyTransform) { *d->currentPage << "q\n"; - if (d->simplePen && !d->stroker.matrix.isIdentity()) - *d->currentPage << QPdf::generateMatrix(d->stroker.matrix); + d->needsTransform = false; + if (!d->stroker.matrix.isIdentity()) { + if (d->simplePen && !d->stroker.cosmeticPen) + *d->currentPage << QPdf::generateMatrix(d->stroker.matrix); + else + d->needsTransform = true; // I.e. page-wide xf not set, local xf needed + } } if (flags & DirtyBrush) setBrush(); @@ -1480,7 +1486,7 @@ QPdfEnginePrivate::QPdfEnginePrivate() : clipEnabled(false), allClipped(false), hasPen(true), hasBrush(false), simplePen(false), - pdfVersion(QPdfEngine::Version_1_4), + needsTransform(false), pdfVersion(QPdfEngine::Version_1_4), outDevice(nullptr), ownsDevice(false), embedFonts(true), grayscale(false), @@ -1539,6 +1545,7 @@ d->graphicsState = 0; d->patternColorSpace = 0; d->simplePen = false; + d->needsTransform = false; d->pages.clear(); d->imageCache.clear(); @@ -2753,6 +2760,8 @@ return gradientBrush(brush, matrix, gStateObject); } + matrix = brush.transform() * matrix; + if ((!brush.isOpaque() && brush.style() < Qt::LinearGradientPattern) || opacity != 1.0) *gStateObject = addConstantAlphaObject(qRound(brush.color().alpha() * opacity), qRound(pen.color().alpha() * opacity)); diff -Naur a/qtbase/src/gui/painting/qpdf_p.h b/qtbase/src/gui/painting/qpdf_p.h --- a/qtbase/src/gui/painting/qpdf_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/painting/qpdf_p.h 2022-01-25 17:23:44.182496154 +0000 @@ -271,6 +271,7 @@ bool hasPen; bool hasBrush; bool simplePen; + bool needsTransform; qreal opacity; QPdfEngine::PdfVersion pdfVersion; diff -Naur a/qtbase/src/gui/painting/qpen.cpp b/qtbase/src/gui/painting/qpen.cpp --- a/qtbase/src/gui/painting/qpen.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/painting/qpen.cpp 2022-01-25 17:23:44.108496420 +0000 @@ -653,12 +653,15 @@ */ void QPen::setWidth(int width) { - if (width < 0) - qWarning("QPen::setWidth: Setting a pen width with a negative value is not defined"); + if (width < 0 || width >= (1 << 15)) { + qWarning("QPen::setWidth: Setting a pen width that is out of range"); + return; + } if ((qreal)width == d->width) return; detach(); d->width = width; + d->defaultWidth = false; } /*! @@ -677,8 +680,8 @@ void QPen::setWidthF(qreal width) { - if (width < 0.f) { - qWarning("QPen::setWidthF: Setting a pen width with a negative value is not defined"); + if (width < 0.f || width >= (1 << 15)) { + qWarning("QPen::setWidthF: Setting a pen width that is out of range"); return; } if (qAbs(d->width - width) < 0.00000001f) diff -Naur a/qtbase/src/gui/painting/qtransform.cpp b/qtbase/src/gui/painting/qtransform.cpp --- a/qtbase/src/gui/painting/qtransform.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/painting/qtransform.cpp 2022-01-25 17:23:44.094496470 +0000 @@ -2126,7 +2126,7 @@ case TxShear: case TxRotate: if (!qFuzzyIsNull(affine._m12) || !qFuzzyIsNull(affine._m21)) { - const qreal dot = affine._m11 * affine._m12 + affine._m21 * affine._m22; + const qreal dot = affine._m11 * affine._m21 + affine._m12 * affine._m22; if (qFuzzyIsNull(dot)) m_type = TxRotate; else diff -Naur a/qtbase/src/gui/text/qcssparser.cpp b/qtbase/src/gui/text/qcssparser.cpp --- a/qtbase/src/gui/text/qcssparser.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/text/qcssparser.cpp 2022-01-25 17:23:44.105496431 +0000 @@ -1192,7 +1192,7 @@ } if (value.type != Value::Number) return false; - font->setWeight(qMin(value.variant.toInt() / 8, 99)); + font->setWeight(qRound(qBound(0.0, value.variant.toDouble() / 8.0, 99.0))); return true; } diff -Naur a/qtbase/src/gui/text/qfont.cpp b/qtbase/src/gui/text/qfont.cpp --- a/qtbase/src/gui/text/qfont.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/text/qfont.cpp 2022-01-25 17:23:44.152496262 +0000 @@ -220,8 +220,10 @@ if (engineData && !engineData->ref.deref()) delete engineData; engineData = nullptr; - if (scFont && scFont != this) - scFont->ref.deref(); + if (scFont && scFont != this) { + if (!scFont->ref.deref()) + delete scFont; + } scFont = nullptr; } @@ -630,8 +632,10 @@ if (d->engineData && !d->engineData->ref.deref()) delete d->engineData; d->engineData = nullptr; - if (d->scFont && d->scFont != d.data()) - d->scFont->ref.deref(); + if (d->scFont && d->scFont != d.data()) { + if (!d->scFont->ref.deref()) + delete d->scFont; + } d->scFont = nullptr; return; } diff -Naur a/qtbase/src/gui/text/qfontdatabase.cpp b/qtbase/src/gui/text/qfontdatabase.cpp --- a/qtbase/src/gui/text/qfontdatabase.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/text/qfontdatabase.cpp 2022-01-25 17:23:44.183496151 +0000 @@ -964,7 +964,7 @@ if (style->key.stretch != 0 && request.stretch != 0 && (request.styleName.isEmpty() || request.styleName != style->styleName)) { def.stretch = (request.stretch * 100 + style->key.stretch / 2) / style->key.stretch; - } else { + } else if (request.stretch == QFont::AnyStretch) { def.stretch = 100; } @@ -2679,6 +2679,12 @@ return engine; } + if (request.pixelSize > 0xffff) { + // Stop absurd requests reaching the engines; pixel size is assumed to fit ushort + qCDebug(lcFontMatch, "Rejecting request for pixel size %g2, returning box engine", double(request.pixelSize)); + return new QFontEngineBox(32); // not request.pixelSize, to avoid overflow/DOS + } + QString family_name, foundry_name; const QString requestFamily = request.families.size() > 0 ? request.families.at(0) : request.family; parseFontName(requestFamily, foundry_name, family_name); diff -Naur a/qtbase/src/gui/text/qfontengine.cpp b/qtbase/src/gui/text/qfontengine.cpp --- a/qtbase/src/gui/text/qfontengine.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/text/qfontengine.cpp 2022-01-25 17:23:44.071496553 +0000 @@ -1815,7 +1815,7 @@ void QFontEngineMulti::ensureEngineAt(int at) { - if (!m_fallbackFamiliesQueried) + if (!m_fallbackFamiliesQueried && at > 0) ensureFallbackFamiliesQueried(); Q_ASSERT(at < m_engines.size()); if (!m_engines.at(at)) { diff -Naur a/qtbase/src/gui/text/qtextdocumentlayout.cpp b/qtbase/src/gui/text/qtextdocumentlayout.cpp --- a/qtbase/src/gui/text/qtextdocumentlayout.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/text/qtextdocumentlayout.cpp 2022-01-25 17:23:44.198496097 +0000 @@ -105,14 +105,13 @@ bool sizeDirty; bool layoutDirty; - bool fullLayoutCompleted; QVector > floats; }; QTextFrameData::QTextFrameData() : maximumWidth(QFIXED_MAX), - currentLayoutStruct(nullptr), sizeDirty(true), layoutDirty(true), fullLayoutCompleted(false) + currentLayoutStruct(nullptr), sizeDirty(true), layoutDirty(true) { } @@ -2124,7 +2123,7 @@ { Q_Q(const QTextDocumentLayout); const QTextBlockFormat blockFormat = bl.blockFormat(); - const QTextCharFormat charFormat = QTextCursor(bl).charFormat(); + const QTextCharFormat charFormat = bl.charFormat(); QFont font(charFormat.font()); if (q->paintDevice()) font = QFont(font, q->paintDevice()); @@ -2358,9 +2357,10 @@ floatMinWidth = qMax(floatMinWidth, cd->minimumWidth); } - // constraint the maximumWidth by the minimum width of the fixed size floats, to - // keep them visible + // constraint the maximum/minimumWidth by the minimum width of the fixed size floats, + // to keep them visible layoutStruct.maximumWidth = qMax(layoutStruct.maximumWidth, floatMinWidth); + layoutStruct.minimumWidth = qMax(layoutStruct.minimumWidth, floatMinWidth); // as floats in cells get added to the table's float list but must not affect // floats in other cells we must clear the list here. @@ -2537,6 +2537,8 @@ for (int n = 0; n < cspan; ++n) { const int col = i + n; QFixed w = widthToDistribute / (cspan - n); + if (td->maxWidths[col] != QFIXED_MAX) + w = qMax(td->maxWidths[col], w); td->maxWidths[col] = qMax(td->minWidths.at(col), w); widthToDistribute -= td->maxWidths.at(col); if (widthToDistribute <= 0) @@ -2944,7 +2946,7 @@ QTextFrameData *fd = data(f); QFixed newContentsWidth; - bool fullLayout = (f == document->rootFrame() && !fd->fullLayoutCompleted); + bool fullLayout = false; { QTextFrameFormat fformat = f->frameFormat(); // set sizes of this frame from the format @@ -3398,7 +3400,6 @@ cp.contentsWidth = layoutStruct->contentsWidth; checkPoints.append(cp); checkPoints.reserve(checkPoints.size()); - fd->fullLayoutCompleted = true; } else { currentLazyLayoutPosition = checkPoints.constLast().positionInFrame; // ####### @@ -3810,7 +3811,6 @@ d->contentHasAlignment = false; d->currentLazyLayoutPosition = 0; d->checkPoints.clear(); - data(d->docPrivate->rootFrame())->fullLayoutCompleted = false; d->layoutStep(); } else { d->ensureLayoutedByPosition(from); diff -Naur a/qtbase/src/gui/text/qtextengine.cpp b/qtbase/src/gui/text/qtextengine.cpp --- a/qtbase/src/gui/text/qtextengine.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/text/qtextengine.cpp 2022-01-25 17:23:44.146496283 +0000 @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtGui module of the Qt Toolkit. @@ -258,7 +258,7 @@ for (int i = 0; i < length; ++i) { int pos = i; uint uc = text[i].unicode(); - if (QChar::isHighSurrogate(uc) && i < length - 1) { + if (QChar::isHighSurrogate(uc) && i < length - 1 && text[i + 1].isLowSurrogate()) { ++i; analysis[i].bidiDirection = QChar::DirNSM; uc = QChar::surrogateToUcs4(ushort(uc), text[i].unicode()); diff -Naur a/qtbase/src/gui/text/qtextimagehandler.cpp b/qtbase/src/gui/text/qtextimagehandler.cpp --- a/qtbase/src/gui/text/qtextimagehandler.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/text/qtextimagehandler.cpp 2022-01-25 17:23:44.079496524 +0000 @@ -53,40 +53,21 @@ extern QString qt_findAtNxFile(const QString &baseFileName, qreal targetDevicePixelRatio, qreal *sourceDevicePixelRatio); -static QString resolveFileName(QString fileName, QUrl *url, qreal targetDevicePixelRatio, - qreal *sourceDevicePixelRatio) -{ - // We might use the fileName for loading if url loading fails - // try to make sure it is a valid file path. - // Also, QFile{Info}::exists works only on filepaths (not urls) - - if (url->isValid()) { - if (url->scheme() == QLatin1String("qrc")) { - fileName = fileName.right(fileName.length() - 3); - } - else if (url->scheme() == QLatin1String("file")) { - fileName = url->toLocalFile(); - } - } - if (targetDevicePixelRatio <= 1.0) - return fileName; - - // try to find a Nx version - return qt_findAtNxFile(fileName, targetDevicePixelRatio, sourceDevicePixelRatio); +static inline QUrl fromLocalfileOrResources(QString path) +{ + if (path.startsWith(QLatin1String(":/"))) // auto-detect resources and convert them to url + path.prepend(QLatin1String("qrc")); + return QUrl(path); } - static QPixmap getPixmap(QTextDocument *doc, const QTextImageFormat &format, const qreal devicePixelRatio = 1.0) { - QPixmap pm; - - QString name = format.name(); - if (name.startsWith(QLatin1String(":/"))) // auto-detect resources and convert them to url - name.prepend(QLatin1String("qrc")); - QUrl url = QUrl(name); qreal sourcePixelRatio = 1.0; - name = resolveFileName(name, &url, devicePixelRatio, &sourcePixelRatio); + const QString name = qt_findAtNxFile(format.name(), devicePixelRatio, &sourcePixelRatio); + const QUrl url = fromLocalfileOrResources(name); + + QPixmap pm; const QVariant data = doc->resource(QTextDocument::ImageResource, url); if (data.userType() == QMetaType::QPixmap || data.userType() == QMetaType::QImage) { pm = qvariant_cast(data); @@ -161,14 +142,11 @@ static QImage getImage(QTextDocument *doc, const QTextImageFormat &format, const qreal devicePixelRatio = 1.0) { - QImage image; - - QString name = format.name(); - if (name.startsWith(QLatin1String(":/"))) // auto-detect resources - name.prepend(QLatin1String("qrc")); - QUrl url = QUrl(name); qreal sourcePixelRatio = 1.0; - name = resolveFileName(name, &url, devicePixelRatio, &sourcePixelRatio); + const QString name = qt_findAtNxFile(format.name(), devicePixelRatio, &sourcePixelRatio); + const QUrl url = fromLocalfileOrResources(name); + + QImage image; const QVariant data = doc->resource(QTextDocument::ImageResource, url); if (data.userType() == QMetaType::QImage) { image = qvariant_cast(data); diff -Naur a/qtbase/src/gui/text/qtextodfwriter.cpp b/qtbase/src/gui/text/qtextodfwriter.cpp --- a/qtbase/src/gui/text/qtextodfwriter.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/text/qtextodfwriter.cpp 2022-01-25 17:23:44.180496161 +0000 @@ -455,7 +455,7 @@ name.prepend(QLatin1String("qrc")); QUrl url = QUrl(name); const QVariant variant = m_document->resource(QTextDocument::ImageResource, url); - if (variant.userType() == QMetaType::QImage) { + if (variant.userType() == QMetaType::QPixmap || variant.userType() == QMetaType::QImage) { image = qvariant_cast(variant); } else if (variant.userType() == QMetaType::QByteArray) { data = variant.toByteArray(); @@ -476,7 +476,7 @@ QBuffer imageBytes; int imgQuality = imageFormat.quality(); - if (imgQuality >= 100 || imgQuality < 0 || image.hasAlphaChannel()) { + if (imgQuality >= 100 || imgQuality <= 0 || image.hasAlphaChannel()) { QImageWriter imageWriter(&imageBytes, "png"); imageWriter.write(image); diff -Naur a/qtbase/src/gui/text/qtexttable.cpp b/qtbase/src/gui/text/qtexttable.cpp --- a/qtbase/src/gui/text/qtexttable.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/text/qtexttable.cpp 2022-01-25 17:23:44.090496485 +0000 @@ -318,13 +318,6 @@ Destroys the table cell. */ -QTextTablePrivate::~QTextTablePrivate() -{ - if (grid) - free(grid); -} - - QTextTable *QTextTablePrivate::createTable(QTextDocumentPrivate *pieceTable, int pos, int rows, int cols, const QTextTableFormat &tableFormat) { QTextTableFormat fmt = tableFormat; @@ -446,8 +439,7 @@ nRows = (cells.size() + nCols-1)/nCols; // qDebug(">>>> QTextTablePrivate::update, nRows=%d, nCols=%d", nRows, nCols); - grid = q_check_ptr((int *)realloc(grid, nRows*nCols*sizeof(int))); - memset(grid, 0, nRows*nCols*sizeof(int)); + grid.assign(nRows * nCols, 0); QTextDocumentPrivate *p = pieceTable; QTextFormatCollection *c = p->formatCollection(); @@ -470,8 +462,7 @@ cellIndices[i] = cell; if (r + rowspan > nRows) { - grid = q_check_ptr((int *)realloc(grid, sizeof(int)*(r + rowspan)*nCols)); - memset(grid + (nRows*nCols), 0, sizeof(int)*(r+rowspan-nRows)*nCols); + grid.resize((r + rowspan) * nCols, 0); nRows = r + rowspan; } diff -Naur a/qtbase/src/gui/text/qtexttable_p.h b/qtbase/src/gui/text/qtexttable_p.h --- a/qtbase/src/gui/text/qtexttable_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/gui/text/qtexttable_p.h 2022-01-25 17:23:44.090496485 +0000 @@ -55,14 +55,15 @@ #include "private/qtextobject_p.h" #include "private/qtextdocument_p.h" +#include + QT_BEGIN_NAMESPACE class QTextTablePrivate : public QTextFramePrivate { Q_DECLARE_PUBLIC(QTextTable) public: - QTextTablePrivate(QTextDocument *document) : QTextFramePrivate(document), grid(nullptr), nRows(0), nCols(0), dirty(true), blockFragmentUpdates(false) {} - ~QTextTablePrivate(); + QTextTablePrivate(QTextDocument *document) : QTextFramePrivate(document), nRows(0), nCols(0), dirty(true), blockFragmentUpdates(false) {} static QTextTable *createTable(QTextDocumentPrivate *, int pos, int rows, int cols, const QTextTableFormat &tableFormat); void fragmentAdded(QChar type, uint fragment) override; @@ -76,7 +77,7 @@ // symmetric to cells array and maps to indecs in grid, // used for fast-lookup for row/column by fragment mutable QVector cellIndices; - mutable int *grid; + mutable std::vector grid; mutable int nRows; mutable int nCols; mutable bool dirty; diff -Naur a/qtbase/src/network/access/qhttp2configuration.cpp b/qtbase/src/network/access/qhttp2configuration.cpp --- a/qtbase/src/network/access/qhttp2configuration.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/access/qhttp2configuration.cpp 2022-01-25 17:23:44.097496459 +0000 @@ -141,12 +141,12 @@ } /*! - Copy-assigns to this QHttp2Configuration. + Copy-assigns \a other to this QHttp2Configuration. */ QHttp2Configuration &QHttp2Configuration::operator=(const QHttp2Configuration &) = default; /*! - Move-assigns to this QHttp2Configuration. + Move-assigns \a other to this QHttp2Configuration. */ QHttp2Configuration &QHttp2Configuration::operator=(QHttp2Configuration &&) noexcept = default; @@ -209,6 +209,8 @@ Sets the window size for connection-level flow control. \a size cannot be 0 and must not exceed 2147483647 octets. + Returns \c true on success, \c false otherwise. + \sa sessionReceiveWindowSize */ bool QHttp2Configuration::setSessionReceiveWindowSize(unsigned size) @@ -236,6 +238,8 @@ Sets the window size for stream-level flow control. \a size cannot be 0 and must not exceed 2147483647 octets. + Returns \c true on success, \c false otherwise. + \sa streamReceiveWindowSize */ bool QHttp2Configuration::setStreamReceiveWindowSize(unsigned size) @@ -265,6 +269,8 @@ \note While this \a size is required to be within a range between 16384 and 16777215 inclusive, the actual payload size in frames that carry payload maybe be less than 16384. + + Returns \c true on success, \c false otherwise. */ bool QHttp2Configuration::setMaxFrameSize(unsigned size) { @@ -278,7 +284,7 @@ } /*! - The maximum payload size that HTTP/2 frames can + Returns the maximum payload size that HTTP/2 frames can have. The default (initial) value is 16384 octets. */ unsigned QHttp2Configuration::maxFrameSize() const diff -Naur a/qtbase/src/network/access/qhttp2protocolhandler.cpp b/qtbase/src/network/access/qhttp2protocolhandler.cpp --- a/qtbase/src/network/access/qhttp2protocolhandler.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/access/qhttp2protocolhandler.cpp 2022-01-25 17:23:44.095496467 +0000 @@ -264,7 +264,8 @@ void QHttp2ProtocolHandler::_q_readyRead() { - _q_receiveReply(); + if (!goingAway || activeStreams.size()) + _q_receiveReply(); } void QHttp2ProtocolHandler::_q_receiveReply() @@ -272,6 +273,11 @@ Q_ASSERT(m_socket); Q_ASSERT(m_channel); + if (goingAway && activeStreams.isEmpty()) { + m_channel->close(); + return; + } + while (!goingAway || activeStreams.size()) { const auto result = frameReader.read(*m_socket); switch (result) { diff -Naur a/qtbase/src/network/access/qhttpnetworkconnectionchannel.cpp b/qtbase/src/network/access/qhttpnetworkconnectionchannel.cpp --- a/qtbase/src/network/access/qhttpnetworkconnectionchannel.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/access/qhttpnetworkconnectionchannel.cpp 2022-01-25 17:23:44.138496312 +0000 @@ -1005,7 +1005,6 @@ && switchedToHttp2)) { auto h2Handler = static_cast(protocolHandler.data()); h2Handler->handleConnectionClosure(); - protocolHandler.reset(); } } return; @@ -1134,9 +1133,12 @@ for (int a = 0; a < spdyPairs.count(); ++a) { // emit error for all replies QHttpNetworkReply *currentReply = spdyPairs.at(a).second; + currentReply->d_func()->errorString = errorString; + currentReply->d_func()->httpErrorCode = errorCode; Q_ASSERT(currentReply); emit currentReply->finishedWithError(errorCode, errorString); } + spdyRequestsToSend.clear(); } // send the next request diff -Naur a/qtbase/src/network/access/qhttpnetworkconnection.cpp b/qtbase/src/network/access/qhttpnetworkconnection.cpp --- a/qtbase/src/network/access/qhttpnetworkconnection.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/access/qhttpnetworkconnection.cpp 2022-01-25 17:23:44.186496140 +0000 @@ -1077,8 +1077,10 @@ case QHttpNetworkConnection::ConnectionTypeHTTP2Direct: case QHttpNetworkConnection::ConnectionTypeHTTP2: case QHttpNetworkConnection::ConnectionTypeSPDY: { - if (channels[0].spdyRequestsToSend.isEmpty() && channels[0].switchedToHttp2) + if (channels[0].spdyRequestsToSend.isEmpty() && !channels[0].reply + && highPriorityQueue.isEmpty() && lowPriorityQueue.isEmpty()) { return; + } if (networkLayerState == IPv4) channels[0].networkLayerPreference = QAbstractSocket::IPv4Protocol; @@ -1118,31 +1120,50 @@ int normalRequests = queuedRequests - preConnectRequests; neededOpenChannels = qMax(normalRequests, preConnectRequests); } + + if (neededOpenChannels <= 0) + return; + + QQueue channelsToConnect; + + // use previously used channels first for (int i = 0; i < activeChannelCount && neededOpenChannels > 0; ++i) { - bool connectChannel = false; - if (channels[i].socket) { - if ((channels[i].socket->state() == QAbstractSocket::ConnectingState) - || (channels[i].socket->state() == QAbstractSocket::HostLookupState) - || channels[i].pendingEncrypt) // pendingEncrypt == "EncryptingState" - neededOpenChannels--; - - if (neededOpenChannels <= 0) - break; - if (!channels[i].reply && !channels[i].isSocketBusy() && (channels[i].socket->state() == QAbstractSocket::UnconnectedState)) - connectChannel = true; - } else { // not previously used channel - connectChannel = true; + if (!channels[i].socket) + continue; + + if ((channels[i].socket->state() == QAbstractSocket::ConnectingState) + || (channels[i].socket->state() == QAbstractSocket::HostLookupState) + || channels[i].pendingEncrypt) { // pendingEncrypt == "EncryptingState" + neededOpenChannels--; + continue; } - if (connectChannel) { - if (networkLayerState == IPv4) - channels[i].networkLayerPreference = QAbstractSocket::IPv4Protocol; - else if (networkLayerState == IPv6) - channels[i].networkLayerPreference = QAbstractSocket::IPv6Protocol; - channels[i].ensureConnection(); + if (!channels[i].reply && !channels[i].isSocketBusy() + && (channels[i].socket->state() == QAbstractSocket::UnconnectedState)) { + channelsToConnect.enqueue(i); neededOpenChannels--; } } + + // use other channels + for (int i = 0; i < activeChannelCount && neededOpenChannels > 0; ++i) { + if (channels[i].socket) + continue; + + channelsToConnect.enqueue(i); + neededOpenChannels--; + } + + while (!channelsToConnect.isEmpty()) { + const int channel = channelsToConnect.dequeue(); + + if (networkLayerState == IPv4) + channels[channel].networkLayerPreference = QAbstractSocket::IPv4Protocol; + else if (networkLayerState == IPv6) + channels[channel].networkLayerPreference = QAbstractSocket::IPv6Protocol; + + channels[channel].ensureConnection(); + } } diff -Naur a/qtbase/src/network/access/qnetworkcookie.cpp b/qtbase/src/network/access/qnetworkcookie.cpp --- a/qtbase/src/network/access/qnetworkcookie.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/access/qnetworkcookie.cpp 2022-01-25 17:23:44.070496556 +0000 @@ -180,7 +180,8 @@ d->domain == other.d->domain && d->path == other.d->path && d->secure == other.d->secure && - d->comment == other.d->comment; + d->comment == other.d->comment && + d->sameSite == other.d->sameSite; } /*! @@ -459,6 +460,10 @@ result += "; secure"; if (isHttpOnly()) result += "; HttpOnly"; + if (!d->sameSite.isEmpty()) { + result += "; SameSite="; + result += d->sameSite; + } if (!isSessionCookie()) { result += "; expires="; result += QLocale::c().toString(d->expirationDate.toUTC(), @@ -991,6 +996,8 @@ cookie.setSecure(true); } else if (field.first == "httponly") { cookie.setHttpOnly(true); + } else if (field.first == "samesite") { + cookie.d->sameSite = field.second; } else { // ignore unknown fields in the cookie (RFC6265 section 5.2, rule 6) } diff -Naur a/qtbase/src/network/access/qnetworkcookie_p.h b/qtbase/src/network/access/qnetworkcookie_p.h --- a/qtbase/src/network/access/qnetworkcookie_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/access/qnetworkcookie_p.h 2022-01-25 17:23:44.070496556 +0000 @@ -66,6 +66,7 @@ QString domain; QString path; QString comment; + QByteArray sameSite; QByteArray name; QByteArray value; bool secure; diff -Naur a/qtbase/src/network/access/qnetworkreplyhttpimpl.cpp b/qtbase/src/network/access/qnetworkreplyhttpimpl.cpp --- a/qtbase/src/network/access/qnetworkreplyhttpimpl.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/access/qnetworkreplyhttpimpl.cpp 2022-01-25 17:23:44.080496521 +0000 @@ -808,7 +808,17 @@ // For the synchronous HTTP, this is the normal way the delegate gets deleted // For the asynchronous HTTP this is a safety measure, the delegate deletes itself when HTTP is finished - QObject::connect(thread, SIGNAL(finished()), delegate, SLOT(deleteLater())); + QMetaObject::Connection threadFinishedConnection = + QObject::connect(thread, SIGNAL(finished()), delegate, SLOT(deleteLater())); + + // QTBUG-88063: When 'delegate' is deleted the connection will be added to 'thread''s orphaned + // connections list. This orphaned list will be cleaned up next time 'thread' emits a signal, + // unfortunately that's the finished signal. It leads to a soft-leak so we do this to disconnect + // it on deletion so that it cleans up the orphan immediately. + QObject::connect(delegate, &QObject::destroyed, delegate, [threadFinishedConnection]() { + if (bool(threadFinishedConnection)) + QObject::disconnect(threadFinishedConnection); + }); // Set the properties it needs delegate->httpRequest = httpRequest; diff -Naur a/qtbase/src/network/android/jar/src/org/qtproject/qt5/android/network/QtNetwork.java b/qtbase/src/network/android/jar/src/org/qtproject/qt5/android/network/QtNetwork.java --- a/qtbase/src/network/android/jar/src/org/qtproject/qt5/android/network/QtNetwork.java 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/android/jar/src/org/qtproject/qt5/android/network/QtNetwork.java 2022-01-25 17:23:44.121496373 +0000 @@ -43,6 +43,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.os.Build; import android.util.Log; import android.net.ConnectivityManager; import android.net.Proxy; @@ -94,7 +95,7 @@ public static ProxyInfo getProxyInfo(final Context context) { - if (m_proxyInfo == null) + if (m_proxyInfo == null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) m_proxyInfo = (ProxyInfo)getConnectivityManager(context).getDefaultProxy(); return m_proxyInfo; } diff -Naur a/qtbase/src/network/doc/src/ssl.qdoc b/qtbase/src/network/doc/src/ssl.qdoc --- a/qtbase/src/network/doc/src/ssl.qdoc 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/doc/src/ssl.qdoc 2022-01-25 17:23:44.187496136 +0000 @@ -36,8 +36,8 @@ the Secure Sockets Layer (SSL) protocol, using the \l{OpenSSL Toolkit} to perform encryption and protocol handling. - From Qt version 5.6 onwards, the officially supported version for OpenSSL - is 1.0.0 or later. + From Qt version 5.15 onwards, the officially supported version for OpenSSL + is 1.1.1 or later. \annotatedlist ssl diff -Naur a/qtbase/src/network/kernel/qnetworkproxy_mac.cpp b/qtbase/src/network/kernel/qnetworkproxy_mac.cpp --- a/qtbase/src/network/kernel/qnetworkproxy_mac.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/kernel/qnetworkproxy_mac.cpp 2022-01-25 17:23:44.124496362 +0000 @@ -208,7 +208,7 @@ { Q_ASSERT(originalPath); const auto qtPath = QString::fromCFString(originalPath); - const auto escaped = QString::fromUtf8(QUrl::toPercentEncoding(qtPath)); + const auto escaped = QString::fromUtf8(QUrl(qtPath).toEncoded()); return escaped.toCFString(); } diff -Naur a/qtbase/src/network/network.pro b/qtbase/src/network/network.pro --- a/qtbase/src/network/network.pro 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/network.pro 2022-01-25 17:23:44.091496481 +0000 @@ -23,7 +23,7 @@ QMAKE_LIBS += $$QMAKE_LIBS_NETWORK qtConfig(bearermanagement) { - ANDROID_BUNDLED_JAR_DEPENDENCIES = \ + ANDROID_BUNDLED_JAR_DEPENDENCIES += \ jar/QtAndroidBearer.jar ANDROID_LIB_DEPENDENCIES = \ plugins/bearer/libplugins_bearer_qandroidbearer.so diff -Naur a/qtbase/src/network/socket/qhttpsocketengine.cpp b/qtbase/src/network/socket/qhttpsocketengine.cpp --- a/qtbase/src/network/socket/qhttpsocketengine.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/socket/qhttpsocketengine.cpp 2022-01-25 17:23:44.187496136 +0000 @@ -645,7 +645,7 @@ d->socket->readAll(); //We're done with the reply and need to reset it for the next connection delete d->reply; - d->reply = new QHttpNetworkReply; + d->reply = new QHttpNetworkReply(QUrl(), this); } if (priv->phase == QAuthenticatorPrivate::Done) diff -Naur a/qtbase/src/network/socket/qsocks5socketengine.cpp b/qtbase/src/network/socket/qsocks5socketengine.cpp --- a/qtbase/src/network/socket/qsocks5socketengine.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/socket/qsocks5socketengine.cpp 2022-01-25 17:23:44.096496463 +0000 @@ -1641,9 +1641,7 @@ QByteArray outBuf; outBuf.reserve(270 + len); - outBuf[0] = 0x00; - outBuf[1] = 0x00; - outBuf[2] = 0x00; + outBuf.append(3, '\0'); if (!qt_socks5_set_host_address_and_port(header.destinationAddress, header.destinationPort, &outBuf)) { } outBuf += QByteArray(data, len); diff -Naur a/qtbase/src/network/ssl/qasn1element.cpp b/qtbase/src/network/ssl/qasn1element.cpp --- a/qtbase/src/network/ssl/qasn1element.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/ssl/qasn1element.cpp 2022-01-25 17:23:44.091496481 +0000 @@ -142,12 +142,20 @@ if (length > quint64(std::numeric_limits::max())) return false; - // value + + // read value in blocks to avoid being fooled by incorrect length + const int BUFFERSIZE = 4 * 1024; QByteArray tmpValue; - tmpValue.resize(length); - int count = stream.readRawData(tmpValue.data(), tmpValue.size()); - if (count != int(length)) - return false; + int remainingLength = length; + while (remainingLength) { + char readBuffer[BUFFERSIZE]; + const int bytesToRead = qMin(remainingLength, BUFFERSIZE); + const int count = stream.readRawData(readBuffer, bytesToRead); + if (count != int(bytesToRead)) + return false; + tmpValue.append(readBuffer, bytesToRead); + remainingLength -= bytesToRead; + } mType = tmpType; mValue.swap(tmpValue); diff -Naur a/qtbase/src/network/ssl/qdtls_openssl.cpp b/qtbase/src/network/ssl/qdtls_openssl.cpp --- a/qtbase/src/network/ssl/qdtls_openssl.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/ssl/qdtls_openssl.cpp 2022-01-25 17:23:44.100496449 +0000 @@ -170,16 +170,6 @@ q_BIO_meth_free(method); } -// The 'deleter' for QScopedPointer. -struct bio_deleter -{ - static void cleanup(BIO *bio) - { - if (bio) - q_BIO_free(bio); - } -}; - // The path MTU discovery is non-trivial: it's a mix of getsockopt/setsockopt // (IP_MTU/IP6_MTU/IP_MTU_DISCOVER) and fallback MTU values. It's not // supported on all platforms, worse so - imposes specific requirements on @@ -746,8 +736,7 @@ q_BIO_meth_set_puts(biom, dtlsbio::q_dgram_puts); q_BIO_meth_set_ctrl(biom, dtlsbio::q_dgram_ctrl); - QScopedPointer newBio(q_BIO_new(biom)); - BIO *bio = newBio.data(); + BIO *bio = q_BIO_new(biom); if (!bio) { dtlsBase->setDtlsError(QDtlsError::TlsInitializationError, msgFunctionFailed("BIO_new")); @@ -755,7 +744,6 @@ } q_SSL_set_bio(tlsConnection.data(), bio, bio); - newBio.take(); bioMethod.swap(customMethod); diff -Naur a/qtbase/src/network/ssl/qocspresponse.cpp b/qtbase/src/network/ssl/qocspresponse.cpp --- a/qtbase/src/network/ssl/qocspresponse.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/ssl/qocspresponse.cpp 2022-01-25 17:23:44.097496459 +0000 @@ -145,14 +145,14 @@ /*! \since 5.13 - Copy-assigns and returns a reference to this response. + Copy-assigns \a other and returns a reference to this response. */ QOcspResponse &QOcspResponse::operator=(const QOcspResponse &) = default; /*! \since 5.13 - Move-assigns to this QOcspResponse instance. + Move-assigns \a other to this QOcspResponse instance. */ QOcspResponse &QOcspResponse::operator=(QOcspResponse &&) noexcept = default; diff -Naur a/qtbase/src/network/ssl/qsslcertificate.cpp b/qtbase/src/network/ssl/qsslcertificate.cpp --- a/qtbase/src/network/ssl/qsslcertificate.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/ssl/qsslcertificate.cpp 2022-01-25 17:23:44.126496355 +0000 @@ -121,7 +121,8 @@ \value Wildcard This provides a simple pattern matching syntax similar to that used by shells (command interpreters) for "file - globbing". See \l{QRegularExpression Wildcard matching}. + globbing". See \l {QRegularExpression#Wildcard matching} + {QRegularExpression Wildcard Matching}. \value FixedString The pattern is a fixed string. This is equivalent to using the RegularExpression pattern on a string in @@ -701,9 +702,9 @@ the specified host name. Note that the root (CA) certificate should not be included in the list to be verified, - this will be looked up automatically either using the CA list specified by - QSslSocket::defaultCaCertificates() or, if possible, it will be loaded on demand - on Unix. + this will be looked up automatically using the CA list specified in the + default QSslConfiguration, and, in addition, if possible, CA certificates loaded on + demand on Unix and Windows. \since 5.0 */ diff -Naur a/qtbase/src/network/ssl/qsslcertificate_openssl.cpp b/qtbase/src/network/ssl/qsslcertificate_openssl.cpp --- a/qtbase/src/network/ssl/qsslcertificate_openssl.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/ssl/qsslcertificate_openssl.cpp 2022-01-25 17:23:44.186496140 +0000 @@ -65,10 +65,17 @@ { if (d == other.d) return true; + if (d->null && other.d->null) return true; - if (d->x509 && other.d->x509) - return q_X509_cmp(d->x509, other.d->x509) == 0; + + if (d->x509 && other.d->x509) { + const int ret = q_X509_cmp(d->x509, other.d->x509); + if (ret >= -1 && ret <= 1) + return ret == 0; + QSslSocketBackendPrivate::logAndClearErrorQueue(); + } + return false; } @@ -327,9 +334,12 @@ // we cast away the const-ness here because some versions of openssl // don't use const for the parameters in the functions pointers stored // in the object. + Q_ASSERT(ext); + X509V3_EXT_METHOD *meth = const_cast(q_X509V3_EXT_get(ext)); if (!meth) { ASN1_OCTET_STRING *value = q_X509_EXTENSION_get_data(ext); + Q_ASSERT(value); QByteArray result( reinterpret_cast(q_ASN1_STRING_get0_data(value)), q_ASN1_STRING_length(value)); return result; @@ -363,7 +373,6 @@ else return list; } else if (meth->i2s && ext_internal) { - //qCDebug(lcSsl) << meth->i2s(meth, ext_internal); QVariant result(QString::fromUtf8(meth->i2s(meth, ext_internal))); return result; } else if (meth->i2r && ext_internal) { @@ -400,6 +409,8 @@ case NID_basic_constraints: { BASIC_CONSTRAINTS *basic = reinterpret_cast(q_X509V3_EXT_d2i(ext)); + if (!basic) + return QVariant(); QVariantMap result; result[QLatin1String("ca")] = basic->ca ? true : false; @@ -413,6 +424,8 @@ case NID_info_access: { AUTHORITY_INFO_ACCESS *info = reinterpret_cast(q_X509V3_EXT_d2i(ext)); + if (!info) + return QVariant(); QVariantMap result; for (int i=0; i < q_SKM_sk_num(ACCESS_DESCRIPTION, info); i++) { @@ -442,7 +455,8 @@ case NID_subject_key_identifier: { void *ext_internal = q_X509V3_EXT_d2i(ext); - + if (!ext_internal) + return QVariant(); // we cast away the const-ness here because some versions of openssl // don't use const for the parameters in the functions pointers stored // in the object. @@ -454,6 +468,8 @@ case NID_authority_key_identifier: { AUTHORITY_KEYID *auth_key = reinterpret_cast(q_X509V3_EXT_d2i(ext)); + if (!auth_key) + return QVariant(); QVariantMap result; @@ -482,9 +498,16 @@ QSslCertificateExtension QSslCertificatePrivate::convertExtension(X509_EXTENSION *ext) { + Q_ASSERT(ext); + QSslCertificateExtension result; ASN1_OBJECT *obj = q_X509_EXTENSION_get_object(ext); + if (!obj) { + qCWarning(lcSsl, "Invalid (nullptr) ASN1_OBJECT"); + return result; + } + QByteArray oid = QSslCertificatePrivate::asn1ObjectId(obj); QByteArray name = QSslCertificatePrivate::asn1ObjectName(obj); @@ -521,10 +544,17 @@ return result; int count = q_X509_get_ext_count(d->x509); + if (count <= 0) + return result; + result.reserve(count); for (int i = 0; i < count; i++) { X509_EXTENSION *ext = q_X509_get_ext(d->x509, i); + if (!ext) { + qCWarning(lcSsl) << "Invalid (nullptr) extension at index" << i; + continue; + } result << QSslCertificatePrivate::convertExtension(ext); } diff -Naur a/qtbase/src/network/ssl/qsslcertificate_qt.cpp b/qtbase/src/network/ssl/qsslcertificate_qt.cpp --- a/qtbase/src/network/ssl/qsslcertificate_qt.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/ssl/qsslcertificate_qt.cpp 2022-01-25 17:23:44.186496140 +0000 @@ -311,7 +311,9 @@ if (elem.type() == QAsn1Element::Context0Type) { QDataStream versionStream(elem.value()); - if (!elem.read(versionStream) || elem.type() != QAsn1Element::IntegerType) + if (!elem.read(versionStream) + || elem.type() != QAsn1Element::IntegerType + || elem.value().isEmpty()) return false; versionString = QByteArray::number(elem.value().at(0) + 1); diff -Naur a/qtbase/src/network/ssl/qsslcontext_openssl.cpp b/qtbase/src/network/ssl/qsslcontext_openssl.cpp --- a/qtbase/src/network/ssl/qsslcontext_openssl.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/ssl/qsslcontext_openssl.cpp 2022-01-25 17:23:44.194496111 +0000 @@ -409,7 +409,7 @@ break; case QSsl::DtlsV1_0OrLater: minVersion = DTLS1_VERSION; - maxVersion = DTLS_MAX_VERSION; + maxVersion = 0; break; case QSsl::DtlsV1_2: minVersion = DTLS1_2_VERSION; @@ -417,7 +417,7 @@ break; case QSsl::DtlsV1_2OrLater: minVersion = DTLS1_2_VERSION; - maxVersion = DTLS_MAX_VERSION; + maxVersion = 0; break; case QSsl::TlsV1_3OrLater: #ifdef TLS1_3_VERSION diff -Naur a/qtbase/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp b/qtbase/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp --- a/qtbase/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp 2022-01-25 17:23:44.194496111 +0000 @@ -59,57 +59,6 @@ QT_BEGIN_NAMESPACE -#ifdef OPENSSL_NO_DEPRECATED_3_0 - -static int q_DH_check(DH *dh, int *status) -{ - // DH_check was first deprecated in OpenSSL 3.0.0, as low-level - // API; the EVP_PKEY family of functions was advised as an alternative. - // As of now EVP_PKEY_params_check ends up calling ... DH_check, - // which is good enough. - - Q_ASSERT(dh); - Q_ASSERT(status); - - EVP_PKEY *key = q_EVP_PKEY_new(); - if (!key) { - qCWarning(lcSsl, "EVP_PKEY_new failed"); - QSslSocketBackendPrivate::logAndClearErrorQueue(); - return 0; - } - const auto keyDeleter = qScopeGuard([key](){ - q_EVP_PKEY_free(key); - }); - if (!q_EVP_PKEY_set1_DH(key, dh)) { - qCWarning(lcSsl, "EVP_PKEY_set1_DH failed"); - QSslSocketBackendPrivate::logAndClearErrorQueue(); - return 0; - } - - EVP_PKEY_CTX *keyCtx = q_EVP_PKEY_CTX_new(key, nullptr); - if (!keyCtx) { - qCWarning(lcSsl, "EVP_PKEY_CTX_new failed"); - QSslSocketBackendPrivate::logAndClearErrorQueue(); - return 0; - } - const auto ctxDeleter = qScopeGuard([keyCtx]{ - q_EVP_PKEY_CTX_free(keyCtx); - }); - - const int result = q_EVP_PKEY_param_check(keyCtx); - QSslSocketBackendPrivate::logAndClearErrorQueue(); - // Note: unlike DH_check, we cannot obtain the 'status', - // if the 'result' is 0 (actually the result is 1 only - // if this 'status' was 0). We could probably check the - // errors from the error queue, but it's not needed anyway - // - see the 'isSafeDH' below, how it returns immediately - // on 0. - Q_UNUSED(status) - - return result; -} -#endif // OPENSSL_NO_DEPRECATED_3_0 - static bool isSafeDH(DH *dh) { int status = 0; diff -Naur a/qtbase/src/network/ssl/qsslkey_openssl.cpp b/qtbase/src/network/ssl/qsslkey_openssl.cpp --- a/qtbase/src/network/ssl/qsslkey_openssl.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/ssl/qsslkey_openssl.cpp 2022-01-25 17:23:44.171496194 +0000 @@ -348,7 +348,12 @@ EVP_CIPHER_CTX *ctx = q_EVP_CIPHER_CTX_new(); q_EVP_CIPHER_CTX_reset(ctx); - q_EVP_CipherInit(ctx, type, nullptr, nullptr, enc); + if (q_EVP_CipherInit(ctx, type, nullptr, nullptr, enc) != 1) { + q_EVP_CIPHER_CTX_free(ctx); + QSslSocketBackendPrivate::logAndClearErrorQueue(); + return {}; + } + q_EVP_CIPHER_CTX_set_key_length(ctx, key.size()); if (cipher == QSslKeyPrivate::Rc2Cbc) q_EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_SET_RC2_KEY_BITS, 8 * key.size(), nullptr); diff -Naur a/qtbase/src/network/ssl/qsslsocket.cpp b/qtbase/src/network/ssl/qsslsocket.cpp --- a/qtbase/src/network/ssl/qsslsocket.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/ssl/qsslsocket.cpp 2022-01-25 17:23:44.125496359 +0000 @@ -2709,7 +2709,7 @@ qCDebug(lcSsl) << "\terrorString =" << q->errorString(); #endif // this moves encrypted bytes from plain socket into our buffer - if (plainSocket->bytesAvailable()) { + if (plainSocket->bytesAvailable() && mode != QSslSocket::UnencryptedMode) { qint64 tmpReadBufferMaxSize = readBufferMaxSize; readBufferMaxSize = 0; // reset temporarily so the plain sockets completely drained drained transmit(); diff -Naur a/qtbase/src/network/ssl/qsslsocket_openssl.cpp b/qtbase/src/network/ssl/qsslsocket_openssl.cpp --- a/qtbase/src/network/ssl/qsslsocket_openssl.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/ssl/qsslsocket_openssl.cpp 2022-01-25 17:23:44.126496355 +0000 @@ -2090,10 +2090,16 @@ QList QSslSocketBackendPrivate::verify(const QList &certificateChain, const QString &hostName) { + auto roots = QSslConfiguration::defaultConfiguration().caCertificates(); +#ifndef Q_OS_WIN + // On Windows, system CA certificates are already set as default ones. + // No need to add them again (and again) and also, if the default configuration + // has its own set of CAs, this probably should not be amended by the ones + // from the 'ROOT' store, since it's not what an application chose to trust. if (s_loadRootCertsOnDemand) - setDefaultCaCertificates(defaultCaCertificates() + systemCaCertificates()); - - return verify(QSslConfiguration::defaultConfiguration().caCertificates(), certificateChain, hostName); + roots.append(systemCaCertificates()); +#endif // Q_OS_WIN + return verify(roots, certificateChain, hostName); } QList QSslSocketBackendPrivate::verify(const QList &caCertificates, diff -Naur a/qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp b/qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp --- a/qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/ssl/qsslsocket_openssl_symbols.cpp 2022-01-25 17:23:44.195496107 +0000 @@ -148,7 +148,6 @@ DEFINEFUNC2(EVP_PKEY_CTX *, EVP_PKEY_CTX_new, EVP_PKEY *pkey, pkey, ENGINE *e, e, return nullptr, return) DEFINEFUNC(int, EVP_PKEY_param_check, EVP_PKEY_CTX *ctx, ctx, return 0, return) DEFINEFUNC(void, EVP_PKEY_CTX_free, EVP_PKEY_CTX *ctx, ctx, return, return) -DEFINEFUNC(int, EVP_PKEY_base_id, EVP_PKEY *a, a, return NID_undef, return) DEFINEFUNC(int, RSA_bits, RSA *a, a, return 0, return) DEFINEFUNC(int, DSA_bits, DSA *a, a, return 0, return) DEFINEFUNC(int, OPENSSL_sk_num, OPENSSL_STACK *a, a, return -1, return) @@ -368,7 +367,15 @@ DEFINEFUNC(int, SSL_version, const SSL *a, a, return 0, return) DEFINEFUNC2(int, SSL_get_error, SSL *a, a, int b, b, return -1, return) DEFINEFUNC(STACK_OF(X509) *, SSL_get_peer_cert_chain, SSL *a, a, return nullptr, return) + +#if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3 +DEFINEFUNC(X509 *, SSL_get1_peer_certificate, SSL *a, a, return nullptr, return) +DEFINEFUNC(int, EVP_PKEY_get_base_id, const EVP_PKEY *pkey, pkey, return -1, return) +#else DEFINEFUNC(X509 *, SSL_get_peer_certificate, SSL *a, a, return nullptr, return) +DEFINEFUNC(int, EVP_PKEY_base_id, EVP_PKEY *a, a, return NID_undef, return) +#endif // OPENSSL_VERSION_MAJOR >= 3 + DEFINEFUNC(long, SSL_get_verify_result, const SSL *a, a, return -1, return) DEFINEFUNC(SSL *, SSL_new, SSL_CTX *a, a, return nullptr, return) DEFINEFUNC(SSL_CTX *, SSL_get_SSL_CTX, SSL *a, a, return nullptr, return) @@ -489,9 +496,7 @@ DEFINEFUNC(void, DH_free, DH *dh, dh, return, DUMMYARG) DEFINEFUNC3(DH *, d2i_DHparams, DH**a, a, const unsigned char **pp, pp, long length, length, return nullptr, return) DEFINEFUNC2(int, i2d_DHparams, DH *a, a, unsigned char **p, p, return -1, return) -#ifndef OPENSSL_NO_DEPRECATED_3_0 DEFINEFUNC2(int, DH_check, DH *dh, dh, int *codes, codes, return 0, return) -#endif // OPENSSL_NO_DEPRECATED_3_0 DEFINEFUNC3(BIGNUM *, BN_bin2bn, const unsigned char *s, s, int len, len, BIGNUM *ret, ret, return nullptr, return) #ifndef OPENSSL_NO_EC @@ -848,7 +853,6 @@ RESOLVEFUNC(EVP_PKEY_CTX_new) RESOLVEFUNC(EVP_PKEY_param_check) RESOLVEFUNC(EVP_PKEY_CTX_free) - RESOLVEFUNC(EVP_PKEY_base_id) RESOLVEFUNC(RSA_bits) RESOLVEFUNC(OPENSSL_sk_new_null) RESOLVEFUNC(OPENSSL_sk_push) @@ -1073,7 +1077,15 @@ RESOLVEFUNC(SSL_version) RESOLVEFUNC(SSL_get_error) RESOLVEFUNC(SSL_get_peer_cert_chain) + +#if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3 + RESOLVEFUNC(SSL_get1_peer_certificate) + RESOLVEFUNC(EVP_PKEY_get_base_id) +#else RESOLVEFUNC(SSL_get_peer_certificate) + RESOLVEFUNC(EVP_PKEY_base_id) +#endif // OPENSSL_VERSION_MAJOR >= 3 + RESOLVEFUNC(SSL_get_verify_result) RESOLVEFUNC(SSL_new) RESOLVEFUNC(SSL_get_SSL_CTX) @@ -1172,9 +1184,7 @@ RESOLVEFUNC(DH_free) RESOLVEFUNC(d2i_DHparams) RESOLVEFUNC(i2d_DHparams) -#ifndef OPENSSL_NO_DEPRECATED_3_0 RESOLVEFUNC(DH_check) -#endif // OPENSSL_NO_DEPRECATED_3_0 RESOLVEFUNC(BN_bin2bn) #ifndef OPENSSL_NO_EC diff -Naur a/qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h b/qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h --- a/qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/ssl/qsslsocket_openssl_symbols_p.h 2022-01-25 17:23:44.195496107 +0000 @@ -236,7 +236,6 @@ EVP_PKEY_CTX *q_EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e); void q_EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx); int q_EVP_PKEY_param_check(EVP_PKEY_CTX *ctx); -int q_EVP_PKEY_base_id(EVP_PKEY *a); int q_RSA_bits(RSA *a); Q_AUTOTEST_EXPORT int q_OPENSSL_sk_num(OPENSSL_STACK *a); Q_AUTOTEST_EXPORT void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *)); @@ -509,7 +508,6 @@ int q_SSL_version(const SSL *a); int q_SSL_get_error(SSL *a, int b); STACK_OF(X509) *q_SSL_get_peer_cert_chain(SSL *a); -X509 *q_SSL_get_peer_certificate(SSL *a); long q_SSL_get_verify_result(const SSL *a); SSL *q_SSL_new(SSL_CTX *a); SSL_CTX *q_SSL_get_SSL_CTX(SSL *a); @@ -581,10 +579,7 @@ void q_DH_free(DH *dh); DH *q_d2i_DHparams(DH **a, const unsigned char **pp, long length); int q_i2d_DHparams(DH *a, unsigned char **p); - -#ifndef OPENSSL_NO_DEPRECATED_3_0 int q_DH_check(DH *dh, int *codes); -#endif // OPENSSL_NO_DEPRECATED_3_0 BIGNUM *q_BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret); #define q_SSL_CTX_set_tmp_dh(ctx, dh) q_SSL_CTX_ctrl((ctx), SSL_CTRL_SET_TMP_DH, 0, (char *)dh) @@ -751,6 +746,17 @@ int q_SSL_CTX_get_security_level(const SSL_CTX *ctx); void q_SSL_CTX_set_security_level(SSL_CTX *ctx, int level); +// Here we have the ones that make difference between OpenSSL pre/post v3: +#if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3 +X509 *q_SSL_get1_peer_certificate(SSL *a); +#define q_SSL_get_peer_certificate q_SSL_get1_peer_certificate +int q_EVP_PKEY_get_base_id(const EVP_PKEY *pkey); +#define q_EVP_PKEY_base_id q_EVP_PKEY_get_base_id +#else +X509 *q_SSL_get_peer_certificate(SSL *a); +int q_EVP_PKEY_base_id(EVP_PKEY *a); +#endif // OPENSSL_VERSION_MAJOR >= 3 + QT_END_NAMESPACE #endif diff -Naur a/qtbase/src/network/ssl/qsslsocket_schannel.cpp b/qtbase/src/network/ssl/qsslsocket_schannel.cpp --- a/qtbase/src/network/ssl/qsslsocket_schannel.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/network/ssl/qsslsocket_schannel.cpp 2022-01-25 17:23:44.125496359 +0000 @@ -1253,6 +1253,9 @@ { Q_Q(QSslSocket); + if (mode == QSslSocket::UnencryptedMode) + return; // This function should not have been called + // Can happen if called through QSslSocket::abort->QSslSocket::close->QSslSocket::flush->here if (plainSocket->state() == QAbstractSocket::SocketState::UnconnectedState) return; diff -Naur a/qtbase/src/platformsupport/eglconvenience/qt_egl_p.h b/qtbase/src/platformsupport/eglconvenience/qt_egl_p.h --- a/qtbase/src/platformsupport/eglconvenience/qt_egl_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/platformsupport/eglconvenience/qt_egl_p.h 2022-01-25 17:23:44.180496161 +0000 @@ -61,7 +61,11 @@ # if !defined(Q_OS_INTEGRITY) # define WIN_INTERFACE_CUSTOM // NV # endif // Q_OS_INTEGRITY -#endif // QT_EGL_NO_X11 +#else // QT_EGL_NO_X11 +// If one has an eglplatform.h with https://github.com/KhronosGroup/EGL-Registry/pull/130 +// that needs USE_X11 to be defined. +# define USE_X11 +#endif #ifdef QT_EGL_WAYLAND # define WAYLAND // NV diff -Naur a/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm b/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm --- a/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm 2022-01-25 17:23:44.078496528 +0000 @@ -405,7 +405,10 @@ faceId.filename = QString::fromNSString(url.path).toUtf8(); return QFontEngineFT::create(fontDef, faceId); } - Q_UNREACHABLE(); + // We end up here with a descriptor does not contain Qt font data or kCTFontURLAttribute. + // Since the FT engine can't deal with a descriptor with just a NSFontNameAttribute, + // we should return nullptr. + return nullptr; } #endif diff -Naur a/qtbase/src/platformsupport/input/xkbcommon/qxkbcommon.cpp b/qtbase/src/platformsupport/input/xkbcommon/qxkbcommon.cpp --- a/qtbase/src/platformsupport/input/xkbcommon/qxkbcommon.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/platformsupport/input/xkbcommon/qxkbcommon.cpp 2022-01-25 17:23:44.152496262 +0000 @@ -93,6 +93,7 @@ Xkb2Qt, Xkb2Qt, Xkb2Qt, + Xkb2Qt, Xkb2Qt<0x1005FF60, Qt::Key_SysReq>, // hardcoded Sun SysReq Xkb2Qt<0x1007ff00, Qt::Key_SysReq>, // hardcoded X386 SysReq @@ -469,7 +470,7 @@ } else if (event->modifiers() & Qt::KeypadModifier) { if (qtKey >= Qt::Key_0 && qtKey <= Qt::Key_9) keysyms.append(XKB_KEY_KP_0 + (qtKey - Qt::Key_0)); - } else if (isLatin(qtKey) && event->text().isUpper()) { + } else if (isLatin1(qtKey) && event->text().isUpper()) { keysyms.append(qtKey); } @@ -521,7 +522,7 @@ // With standard shortcuts we should prefer a latin character, this is // for checks like "some qkeyevent == QKeySequence::Copy" to work even // when using for example 'russian' keyboard layout. - if (!QXkbCommon::isLatin(keysym)) { + if (!QXkbCommon::isLatin1(keysym)) { xkb_keysym_t latinKeysym = QXkbCommon::lookupLatinKeysym(state, code); if (latinKeysym != XKB_KEY_NoSymbol) keysym = latinKeysym; @@ -544,7 +545,7 @@ } else if (keysym >= XKB_KEY_KP_0 && keysym <= XKB_KEY_KP_9) { // numeric keypad keys qtKey = Qt::Key_0 + (keysym - XKB_KEY_KP_0); - } else if (QXkbCommon::isLatin(keysym)) { + } else if (QXkbCommon::isLatin1(keysym)) { qtKey = QXkbCommon::qxkbcommon_xkb_keysym_to_upper(keysym); } else { // check if we have a direct mapping @@ -674,7 +675,7 @@ Qt::KeyboardModifiers neededMods = ModsTbl[i]; if ((modifiers & neededMods) == neededMods) { if (i == 8) { - if (isLatin(baseQtKey)) + if (isLatin1(baseQtKey)) continue; // add a latin key as a fall back key sym = lookupLatinKeysym(state, keycode); @@ -729,7 +730,7 @@ for (xkb_layout_index_t layout = 0; layout < layoutCount; ++layout) { for (xkb_keycode_t code = minKeycode; code < maxKeycode; ++code) { xkb_keymap_key_get_syms_by_level(keymap, code, layout, 0, &keysyms); - if (keysyms && isLatin(keysyms[0])) + if (keysyms && isLatin1(keysyms[0])) nrLatinKeys++; if (nrLatinKeys > 10) // arbitrarily chosen threshold return; @@ -762,7 +763,7 @@ xkb_level_index_t level = xkb_state_key_get_level(state, keycode, layout); if (xkb_keymap_key_get_syms_by_level(keymap, keycode, layout, level, &syms) != 1) continue; - if (isLatin(syms[0])) { + if (isLatin1(syms[0])) { sym = syms[0]; break; } diff -Naur a/qtbase/src/platformsupport/input/xkbcommon/qxkbcommon_p.h b/qtbase/src/platformsupport/input/xkbcommon/qxkbcommon_p.h --- a/qtbase/src/platformsupport/input/xkbcommon/qxkbcommon_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/platformsupport/input/xkbcommon/qxkbcommon_p.h 2022-01-25 17:23:44.152496262 +0000 @@ -94,8 +94,8 @@ static void verifyHasLatinLayout(xkb_keymap *keymap); static xkb_keysym_t lookupLatinKeysym(xkb_state *state, xkb_keycode_t keycode); - static bool isLatin(xkb_keysym_t sym) { - return ((sym >= 'a' && sym <= 'z') || (sym >= 'A' && sym <= 'Z')); + static bool isLatin1(xkb_keysym_t sym) { + return sym <= 0xff; } static bool isKeypad(xkb_keysym_t sym) { return sym >= XKB_KEY_KP_Space && sym <= XKB_KEY_KP_9; diff -Naur a/qtbase/src/platformsupport/linuxaccessibility/atspiadaptor.cpp b/qtbase/src/platformsupport/linuxaccessibility/atspiadaptor.cpp --- a/qtbase/src/platformsupport/linuxaccessibility/atspiadaptor.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/platformsupport/linuxaccessibility/atspiadaptor.cpp 2022-01-25 17:23:44.078496528 +0000 @@ -803,7 +803,9 @@ return; QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(window); - Q_ASSERT(iface); + // If the window has been quickly activated or disabled, it will cause a crash. + if (iface == nullptr) + return; Q_ASSERT(!active || iface->isValid()); QString windowTitle; diff -Naur a/qtbase/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection.cpp b/qtbase/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection.cpp --- a/qtbase/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection.cpp 2022-01-25 17:23:44.147496280 +0000 @@ -105,13 +105,7 @@ bool QDBusMenuConnection::registerTrayIcon(QDBusTrayIcon *item) { - bool success = connection().registerService(item->instanceId()); - if (!success) { - qWarning() << "failed to register service" << item->instanceId(); - return false; - } - - success = connection().registerObject(StatusNotifierItemPath, item); + bool success = connection().registerObject(StatusNotifierItemPath, item); if (!success) { unregisterTrayIcon(item); qWarning() << "failed to register" << item->instanceId() << StatusNotifierItemPath; @@ -126,21 +120,18 @@ bool QDBusMenuConnection::registerTrayIconWithWatcher(QDBusTrayIcon *item) { + Q_UNUSED(item); QDBusMessage registerMethod = QDBusMessage::createMethodCall( StatusNotifierWatcherService, StatusNotifierWatcherPath, StatusNotifierWatcherService, QLatin1String("RegisterStatusNotifierItem")); - registerMethod.setArguments(QVariantList() << item->instanceId()); + registerMethod.setArguments(QVariantList() << m_connection.baseService()); return m_connection.callWithCallback(registerMethod, this, SIGNAL(trayIconRegistered()), SLOT(dbusError(QDBusError))); } -bool QDBusMenuConnection::unregisterTrayIcon(QDBusTrayIcon *item) +void QDBusMenuConnection::unregisterTrayIcon(QDBusTrayIcon *item) { unregisterTrayIconMenu(item); connection().unregisterObject(StatusNotifierItemPath); - bool success = connection().unregisterService(item->instanceId()); - if (!success) - qWarning() << "failed to unregister service" << item->instanceId(); - return success; } #endif // QT_NO_SYSTEMTRAYICON diff -Naur a/qtbase/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h b/qtbase/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h --- a/qtbase/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h 2022-01-25 17:23:44.147496280 +0000 @@ -78,7 +78,7 @@ void unregisterTrayIconMenu(QDBusTrayIcon *item); bool registerTrayIcon(QDBusTrayIcon *item); bool registerTrayIconWithWatcher(QDBusTrayIcon *item); - bool unregisterTrayIcon(QDBusTrayIcon *item); + void unregisterTrayIcon(QDBusTrayIcon *item); #endif // QT_NO_SYSTEMTRAYICON Q_SIGNALS: diff -Naur a/qtbase/src/plugins/imageformats/jpeg/jpeg.pro b/qtbase/src/plugins/imageformats/jpeg/jpeg.pro --- a/qtbase/src/plugins/imageformats/jpeg/jpeg.pro 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/imageformats/jpeg/jpeg.pro 2022-01-25 17:23:44.115496395 +0000 @@ -8,7 +8,7 @@ qtConfig(system-jpeg) { QMAKE_USE += libjpeg } else { - include($$PWD/../../../3rdparty/libjpeg.pri) + QMAKE_USE_PRIVATE += libjpeg } OTHER_FILES += jpeg.json diff -Naur a/qtbase/src/plugins/platforms/android/androidjniaccessibility.cpp b/qtbase/src/plugins/platforms/android/androidjniaccessibility.cpp --- a/qtbase/src/plugins/platforms/android/androidjniaccessibility.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/android/androidjniaccessibility.cpp 2022-01-25 17:23:44.138496312 +0000 @@ -65,6 +65,7 @@ static jmethodID m_setCheckedMethodID = 0; static jmethodID m_setClickableMethodID = 0; static jmethodID m_setContentDescriptionMethodID = 0; + static jmethodID m_setEditableMethodID = 0; static jmethodID m_setEnabledMethodID = 0; static jmethodID m_setFocusableMethodID = 0; static jmethodID m_setFocusedMethodID = 0; @@ -72,20 +73,28 @@ static jmethodID m_setTextSelectionMethodID = 0; static jmethodID m_setVisibleToUserMethodID = 0; + static bool m_accessibilityActivated = false; + void initialize() { QJNIObjectPrivate::callStaticMethod(QtAndroid::applicationClass(), "initializeAccessibility"); } + bool isActive() + { + return m_accessibilityActivated; + } + static void setActive(JNIEnv */*env*/, jobject /*thiz*/, jboolean active) { QMutexLocker lock(QtAndroid::platformInterfaceMutex()); QAndroidPlatformIntegration *platformIntegration = QtAndroid::androidPlatformIntegration(); + m_accessibilityActivated = active; if (platformIntegration) platformIntegration->accessibility()->setActive(active); else - __android_log_print(ANDROID_LOG_WARN, m_qtTag, "Could not activate platform accessibility."); + __android_log_print(ANDROID_LOG_WARN, m_qtTag, "Could not (yet) activate platform accessibility."); } QAccessibleInterface *interfaceFromId(jint objectId) @@ -101,6 +110,21 @@ return iface; } + void notifyLocationChange() + { + QtAndroid::notifyAccessibilityLocationChange(); + } + + void notifyObjectHide(uint accessibilityObjectId) + { + QtAndroid::notifyObjectHide(accessibilityObjectId); + } + + void notifyObjectFocus(uint accessibilityObjectId) + { + QtAndroid::notifyObjectFocus(accessibilityObjectId); + } + static jintArray childIdListForAccessibleObject(JNIEnv *env, jobject /*thiz*/, jint objectId) { QAccessibleInterface *iface = interfaceFromId(objectId); @@ -142,6 +166,11 @@ if (iface && iface->isValid()) { rect = QHighDpi::toNativePixels(iface->rect(), iface->window()); } + // If the widget is not fully in-bound in its parent then we have to clip the rectangle to draw + if (iface && iface->parent() && iface->parent()->isValid()) { + const auto parentRect = QHighDpi::toNativePixels(iface->parent()->rect(), iface->parent()->window()); + rect = rect.intersected(parentRect); + } jclass rectClass = env->FindClass("android/graphics/Rect"); jmethodID ctor = env->GetMethodID(rectClass, "", "(IIII)V"); @@ -167,17 +196,33 @@ return -1; } + static void invokeActionOnInterfaceInMainThread(QAccessibleActionInterface* actionInterface, + const QString& action) + { + QMetaObject::invokeMethod(qApp, [actionInterface, action]() { + actionInterface->doAction(action); + }); + } + static jboolean clickAction(JNIEnv */*env*/, jobject /*thiz*/, jint objectId) { // qDebug() << "A11Y: CLICK: " << objectId; QAccessibleInterface *iface = interfaceFromId(objectId); - if (iface && iface->isValid() && iface->actionInterface()) { - if (iface->actionInterface()->actionNames().contains(QAccessibleActionInterface::pressAction())) - iface->actionInterface()->doAction(QAccessibleActionInterface::pressAction()); - else - iface->actionInterface()->doAction(QAccessibleActionInterface::toggleAction()); + if (!iface || !iface->isValid() || !iface->actionInterface()) + return false; + + const auto& actionNames = iface->actionInterface()->actionNames(); + + if (actionNames.contains(QAccessibleActionInterface::pressAction())) { + invokeActionOnInterfaceInMainThread(iface->actionInterface(), + QAccessibleActionInterface::pressAction()); + } else if (actionNames.contains(QAccessibleActionInterface::toggleAction())) { + invokeActionOnInterfaceInMainThread(iface->actionInterface(), + QAccessibleActionInterface::toggleAction()); + } else { + return false; } - return false; + return true; } static jboolean scrollForward(JNIEnv */*env*/, jobject /*thiz*/, jint objectId) @@ -259,9 +304,10 @@ } } - env->CallVoidMethod(node, m_setEnabledMethodID, !state.disabled); env->CallVoidMethod(node, m_setCheckableMethodID, (bool)state.checkable); env->CallVoidMethod(node, m_setCheckedMethodID, (bool)state.checked); + env->CallVoidMethod(node, m_setEditableMethodID, state.editable); + env->CallVoidMethod(node, m_setEnabledMethodID, !state.disabled); env->CallVoidMethod(node, m_setFocusableMethodID, (bool)state.focusable); env->CallVoidMethod(node, m_setFocusedMethodID, (bool)state.focused); env->CallVoidMethod(node, m_setVisibleToUserMethodID, !state.invisible); @@ -270,15 +316,15 @@ // Add ACTION_CLICK if (hasClickableAction) - env->CallVoidMethod(node, m_addActionMethodID, (int)16); // ACTION_CLICK defined in AccessibilityNodeInfo + env->CallVoidMethod(node, m_addActionMethodID, (int)0x00000010); // ACTION_CLICK defined in AccessibilityNodeInfo // Add ACTION_SCROLL_FORWARD if (hasIncreaseAction) - env->CallVoidMethod(node, m_addActionMethodID, (int)4096); // ACTION_SCROLL_FORWARD defined in AccessibilityNodeInfo + env->CallVoidMethod(node, m_addActionMethodID, (int)0x00001000); // ACTION_SCROLL_FORWARD defined in AccessibilityNodeInfo // Add ACTION_SCROLL_BACKWARD if (hasDecreaseAction) - env->CallVoidMethod(node, m_addActionMethodID, (int)8192); // ACTION_SCROLL_BACKWARD defined in AccessibilityNodeInfo + env->CallVoidMethod(node, m_addActionMethodID, (int)0x00002000); // ACTION_SCROLL_BACKWARD defined in AccessibilityNodeInfo //CALL_METHOD(node, "setText", "(Ljava/lang/CharSequence;)V", jdesc) @@ -324,6 +370,7 @@ GET_AND_CHECK_STATIC_METHOD(m_setCheckedMethodID, nodeInfoClass, "setChecked", "(Z)V"); GET_AND_CHECK_STATIC_METHOD(m_setClickableMethodID, nodeInfoClass, "setClickable", "(Z)V"); GET_AND_CHECK_STATIC_METHOD(m_setContentDescriptionMethodID, nodeInfoClass, "setContentDescription", "(Ljava/lang/CharSequence;)V"); + GET_AND_CHECK_STATIC_METHOD(m_setEditableMethodID, nodeInfoClass, "setEditable", "(Z)V"); GET_AND_CHECK_STATIC_METHOD(m_setEnabledMethodID, nodeInfoClass, "setEnabled", "(Z)V"); GET_AND_CHECK_STATIC_METHOD(m_setFocusableMethodID, nodeInfoClass, "setFocusable", "(Z)V"); GET_AND_CHECK_STATIC_METHOD(m_setFocusedMethodID, nodeInfoClass, "setFocused", "(Z)V"); diff -Naur a/qtbase/src/plugins/platforms/android/androidjniaccessibility.h b/qtbase/src/plugins/platforms/android/androidjniaccessibility.h --- a/qtbase/src/plugins/platforms/android/androidjniaccessibility.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/android/androidjniaccessibility.h 2022-01-25 17:23:44.138496312 +0000 @@ -47,7 +47,11 @@ namespace QtAndroidAccessibility { void initialize(); + bool isActive(); bool registerNatives(JNIEnv *env); + void notifyLocationChange(); + void notifyObjectHide(uint accessibilityObjectId); + void notifyObjectFocus(uint accessibilityObjectId); } QT_END_NAMESPACE diff -Naur a/qtbase/src/plugins/platforms/android/androidjnimain.cpp b/qtbase/src/plugins/platforms/android/androidjnimain.cpp --- a/qtbase/src/plugins/platforms/android/androidjnimain.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/android/androidjnimain.cpp 2022-01-25 17:23:44.138496312 +0000 @@ -218,6 +218,21 @@ m_statusBarShowing = false; } + void notifyAccessibilityLocationChange() + { + QJNIObjectPrivate::callStaticMethod(m_applicationClass, "notifyAccessibilityLocationChange"); + } + + void notifyObjectHide(uint accessibilityObjectId) + { + QJNIObjectPrivate::callStaticMethod(m_applicationClass, "notifyObjectHide","(I)V", accessibilityObjectId); + } + + void notifyObjectFocus(uint accessibilityObjectId) + { + QJNIObjectPrivate::callStaticMethod(m_applicationClass, "notifyObjectFocus","(I)V", accessibilityObjectId); + } + jobject createBitmap(QImage img, JNIEnv *env) { if (!m_bitmapClass) diff -Naur a/qtbase/src/plugins/platforms/android/androidjnimain.h b/qtbase/src/plugins/platforms/android/androidjnimain.h --- a/qtbase/src/plugins/platforms/android/androidjnimain.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/android/androidjnimain.h 2022-01-25 17:23:44.138496312 +0000 @@ -95,6 +95,10 @@ jobject createBitmap(int width, int height, QImage::Format format, JNIEnv *env); jobject createBitmapDrawable(jobject bitmap, JNIEnv *env = 0); + void notifyAccessibilityLocationChange(); + void notifyObjectHide(uint accessibilityObjectId); + void notifyObjectFocus(uint accessibilityObjectId); + const char *classErrorMsgFmt(); const char *methodErrorMsgFmt(); const char *qtTagText(); diff -Naur a/qtbase/src/plugins/platforms/android/qandroidinputcontext.cpp b/qtbase/src/plugins/platforms/android/qandroidinputcontext.cpp --- a/qtbase/src/plugins/platforms/android/qandroidinputcontext.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/android/qandroidinputcontext.cpp 2022-01-25 17:23:44.071496553 +0000 @@ -1409,16 +1409,25 @@ const int absoluteCursorPos = getAbsoluteCursorPosition(query); int absoluteAnchorPos = getBlockPosition(query) + query->value(Qt::ImAnchorPosition).toInt(); + auto setCursorPosition = [=]() { + const int cursorPos = query->value(Qt::ImCursorPosition).toInt(); + QInputMethodEvent event({}, { { QInputMethodEvent::Selection, cursorPos, 0 } }); + QGuiApplication::sendEvent(m_focusObject, &event); + }; + // If we have composing region and selection (and therefore focusObjectIsComposing() == false), // we must clear selection so that we won't delete it when we will be replacing composing text if (!m_composingText.isEmpty() && absoluteCursorPos != absoluteAnchorPos) { - const int cursorPos = query->value(Qt::ImCursorPosition).toInt(); - QInputMethodEvent event({}, { { QInputMethodEvent::Selection, cursorPos, 0 } }); - QGuiApplication::sendEvent(m_focusObject, &event); - + setCursorPosition(); absoluteAnchorPos = absoluteCursorPos; } + // The value of Qt::ImCursorPosition is not updated at the start + // when the first character is added, so we must update it (QTBUG-85090) + if (absoluteCursorPos == 0 && text.length() == 1 && getTextAfterCursor(1,1).length() >= 0) { + setCursorPosition(); + } + // If we had no composing region, pretend that we had a zero-length composing region at current // cursor position to simplify code. Also account for that we must delete selected text if there // (still) is any. diff -Naur a/qtbase/src/plugins/platforms/android/qandroidplatformaccessibility.cpp b/qtbase/src/plugins/platforms/android/qandroidplatformaccessibility.cpp --- a/qtbase/src/plugins/platforms/android/qandroidplatformaccessibility.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/android/qandroidplatformaccessibility.cpp 2022-01-25 17:23:44.138496312 +0000 @@ -42,7 +42,6 @@ #include "androidjniaccessibility.h" QT_BEGIN_NAMESPACE - QAndroidPlatformAccessibility::QAndroidPlatformAccessibility() { QtAndroidAccessibility::initialize(); @@ -51,9 +50,23 @@ QAndroidPlatformAccessibility::~QAndroidPlatformAccessibility() {} -void QAndroidPlatformAccessibility::notifyAccessibilityUpdate(QAccessibleEvent */*event*/) +void QAndroidPlatformAccessibility::notifyAccessibilityUpdate(QAccessibleEvent *event) { - // FIXME send events + if (event == nullptr || !event->accessibleInterface()) + return; + + // We do not need implementation of all events, as current statues are polled + // by QtAccessibilityDelegate.java on every accessibility interaction. + // Currently we only send notification about the element's position change, + // so that the element can be moved on the screen if it's focused. + + if (event->type() == QAccessible::LocationChanged) { + QtAndroidAccessibility::notifyLocationChange(); + } else if (event->type() == QAccessible::ObjectHide) { + QtAndroidAccessibility::notifyObjectHide(event->uniqueId()); + } else if (event->type() == QAccessible::Focus) { + QtAndroidAccessibility::notifyObjectFocus(event->uniqueId()); + } } QT_END_NAMESPACE diff -Naur a/qtbase/src/plugins/platforms/android/qandroidplatformintegration.cpp b/qtbase/src/plugins/platforms/android/qandroidplatformintegration.cpp --- a/qtbase/src/plugins/platforms/android/qandroidplatformintegration.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/android/qandroidplatformintegration.cpp 2022-01-25 17:23:44.104496434 +0000 @@ -52,6 +52,7 @@ #include #include "androidjnimain.h" +#include "androidjniaccessibility.h" #include "qabstracteventdispatcher.h" #include "qandroideventdispatcher.h" #include "qandroidplatformbackingstore.h" @@ -151,6 +152,12 @@ QMutexLocker lock(QtAndroid::platformInterfaceMutex()); QAndroidPlatformIntegration *api = static_cast(QGuiApplicationPrivate::platformIntegration()); QtAndroid::setAndroidPlatformIntegration(api); + +#ifndef QT_NO_ACCESSIBILITY + // Android accessibility activation event might have been already received + api->accessibility()->setActive(QtAndroidAccessibility::isActive()); +#endif // QT_NO_ACCESSIBILITY + api->flushPendingUpdates(); } diff -Naur a/qtbase/src/plugins/platforms/android/qandroidplatformwindow.cpp b/qtbase/src/plugins/platforms/android/qandroidplatformwindow.cpp --- a/qtbase/src/plugins/platforms/android/qandroidplatformwindow.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/android/qandroidplatformwindow.cpp 2022-01-25 17:23:44.095496467 +0000 @@ -46,6 +46,7 @@ #include #include +#include QT_BEGIN_NAMESPACE @@ -58,6 +59,15 @@ m_windowState = Qt::WindowNoState; m_windowId = winIdGenerator.fetchAndAddRelaxed(1) + 1; setWindowState(window->windowStates()); + + const bool forceMaximize = m_windowState & (Qt::WindowMaximized | Qt::WindowFullScreen); + const QRect requestedGeometry = forceMaximize ? QRect() : window->geometry(); + const QRect availableGeometry = (window->parent()) ? window->parent()->geometry() : platformScreen()->availableGeometry(); + const QRect finalGeometry = QPlatformWindow::initialGeometry(window, requestedGeometry, + availableGeometry.width(), availableGeometry.height()); + + if (requestedGeometry != finalGeometry) + setGeometry(QHighDpi::toNativePixels(finalGeometry, window)); } void QAndroidPlatformWindow::lower() @@ -73,6 +83,7 @@ void QAndroidPlatformWindow::setGeometry(const QRect &rect) { + QPlatformWindow::setGeometry(rect); QWindowSystemInterface::handleGeometryChange(window(), rect); } diff -Naur a/qtbase/src/plugins/platforms/cocoa/qcocoamenuloader.mm b/qtbase/src/plugins/platforms/cocoa/qcocoamenuloader.mm --- a/qtbase/src/plugins/platforms/cocoa/qcocoamenuloader.mm 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/cocoa/qcocoamenuloader.mm 2022-01-25 17:23:44.091496481 +0000 @@ -322,7 +322,8 @@ return [NSApp validateMenuItem:menuItem]; if (menuItem.action == @selector(hide:)) { - if (QCocoaIntegration::instance()->activePopupWindow()) + auto *w = QCocoaIntegration::instance()->activePopupWindow(); + if (w && (w->window()->type() != Qt::ToolTip)) return NO; return [NSApp validateMenuItem:menuItem]; } diff -Naur a/qtbase/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm b/qtbase/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm --- a/qtbase/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/cocoa/qcocoasystemtrayicon.mm 2022-01-25 17:23:44.100496449 +0000 @@ -203,6 +203,7 @@ r.moveCenter(fullHeightPixmap.rect().center()); p.drawPixmap(r, pixmap); } + fullHeightPixmap.setDevicePixelRatio(devicePixelRatio); auto *nsimage = [NSImage imageFromQImage:fullHeightPixmap.toImage()]; [nsimage setTemplate:icon.isMask()]; diff -Naur a/qtbase/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h b/qtbase/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h --- a/qtbase/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h 2022-01-25 17:23:44.200496089 +0000 @@ -43,6 +43,8 @@ #include #include +#include + QT_BEGIN_NAMESPACE class QIOSurfaceGraphicsBuffer : public QPlatformGraphicsBuffer diff -Naur a/qtbase/src/plugins/platforms/cocoa/qnsview_drawing.mm b/qtbase/src/plugins/platforms/cocoa/qnsview_drawing.mm --- a/qtbase/src/plugins/platforms/cocoa/qnsview_drawing.mm 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/cocoa/qnsview_drawing.mm 2022-01-25 17:23:44.095496467 +0000 @@ -73,8 +73,15 @@ // by AppKit at a point where we've already set up other parts of the platform plugin // based on the presence of layers or not. Once we've rewritten these parts to support // dynamically picking up layer enablement we can let AppKit do its thing. - return QMacVersion::buildSDK() >= QOperatingSystemVersion::MacOSMojave - && QMacVersion::currentRuntime() >= QOperatingSystemVersion::MacOSMojave; + + if (QMacVersion::currentRuntime() >= QOperatingSystemVersion::MacOSBigSur) + return true; // Big Sur always enables layer-backing, regardless of SDK + + if (QMacVersion::currentRuntime() >= QOperatingSystemVersion::MacOSMojave + && QMacVersion::buildSDK() >= QOperatingSystemVersion::MacOSMojave) + return true; // Mojave and Catalina enable layers based on the app's SDK + + return false; // Prior versions needed explicitly enabled layer backing } - (BOOL)layerExplicitlyRequested diff -Naur a/qtbase/src/plugins/platforms/cocoa/qnswindow.mm b/qtbase/src/plugins/platforms/cocoa/qnswindow.mm --- a/qtbase/src/plugins/platforms/cocoa/qnswindow.mm 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/cocoa/qnswindow.mm 2022-01-25 17:23:44.135496323 +0000 @@ -178,6 +178,14 @@ if (!NSApp.modalWindow) return NO; + // Special case popup windows (menus, completions, etc), as these usually + // don't have a transient parent set, and we don't want to block them. The + // assumption is that these windows are only opened intermittently, from + // within windows that can already be interacted with in this modal session. + Qt::WindowType type = m_platformWindow->window()->type(); + if (type == Qt::Popup) + return YES; + // If the current modal window (top level modal session) is not a Qt window we // have no way of knowing if this window is transient child of the modal window. if (![NSApp.modalWindow conformsToProtocol:@protocol(QNSWindowProtocol)]) diff -Naur a/qtbase/src/plugins/platforms/offscreen/qoffscreencommon.cpp b/qtbase/src/plugins/platforms/offscreen/qoffscreencommon.cpp --- a/qtbase/src/plugins/platforms/offscreen/qoffscreencommon.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/offscreen/qoffscreencommon.cpp 2022-01-25 17:23:44.074496542 +0000 @@ -223,4 +223,6 @@ QHash QOffscreenBackingStore::m_backingStoreForWinIdHash; +QOffscreenPlatformNativeInterface::~QOffscreenPlatformNativeInterface() = default; + QT_END_NAMESPACE diff -Naur a/qtbase/src/plugins/platforms/offscreen/qoffscreencommon.h b/qtbase/src/plugins/platforms/offscreen/qoffscreencommon.h --- a/qtbase/src/plugins/platforms/offscreen/qoffscreencommon.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/offscreen/qoffscreencommon.h 2022-01-25 17:23:44.074496542 +0000 @@ -45,6 +45,7 @@ #include #endif #include +#include #include #include @@ -105,6 +106,12 @@ static QHash m_backingStoreForWinIdHash; }; +class QOffscreenPlatformNativeInterface : public QPlatformNativeInterface +{ +public: + ~QOffscreenPlatformNativeInterface(); +}; + QT_END_NAMESPACE #endif diff -Naur a/qtbase/src/plugins/platforms/offscreen/qoffscreenintegration.cpp b/qtbase/src/plugins/platforms/offscreen/qoffscreenintegration.cpp --- a/qtbase/src/plugins/platforms/offscreen/qoffscreenintegration.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/offscreen/qoffscreenintegration.cpp 2022-01-25 17:23:44.170496197 +0000 @@ -122,11 +122,13 @@ #endif m_services.reset(new QPlatformServices); - QWindowSystemInterface::handleScreenAdded(new QOffscreenScreen); + m_screen = new QOffscreenScreen; + QWindowSystemInterface::handleScreenAdded(m_screen); } QOffscreenIntegration::~QOffscreenIntegration() { + QWindowSystemInterface::handleScreenRemoved(m_screen); } void QOffscreenIntegration::initialize() @@ -176,6 +178,13 @@ #endif } +QPlatformNativeInterface *QOffscreenIntegration::nativeInterface() const +{ + if (!m_nativeInterface) + m_nativeInterface.reset(new QOffscreenPlatformNativeInterface); + return m_nativeInterface.get(); +} + static QString themeName() { return QStringLiteral("offscreen"); } QStringList QOffscreenIntegration::themeNames() const diff -Naur a/qtbase/src/plugins/platforms/offscreen/qoffscreenintegration.h b/qtbase/src/plugins/platforms/offscreen/qoffscreenintegration.h --- a/qtbase/src/plugins/platforms/offscreen/qoffscreenintegration.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/offscreen/qoffscreenintegration.h 2022-01-25 17:23:44.170496197 +0000 @@ -70,18 +70,22 @@ QPlatformFontDatabase *fontDatabase() const override; QAbstractEventDispatcher *createEventDispatcher() const override; + QPlatformNativeInterface *nativeInterface() const override; + QStringList themeNames() const override; QPlatformTheme *createPlatformTheme(const QString &name) const override; static QOffscreenIntegration *createOffscreenIntegration(); -private: +protected: QScopedPointer m_fontDatabase; #if QT_CONFIG(draganddrop) QScopedPointer m_drag; #endif QScopedPointer m_inputContext; QScopedPointer m_services; + QPlatformScreen *m_screen; + mutable QScopedPointer m_nativeInterface; }; QT_END_NAMESPACE diff -Naur a/qtbase/src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp b/qtbase/src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp --- a/qtbase/src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/offscreen/qoffscreenintegration_x11.cpp 2022-01-25 17:23:44.074496542 +0000 @@ -77,6 +77,8 @@ QOffscreenX11Connection *m_connection; }; +QOffscreenX11Integration::~QOffscreenX11Integration() = default; + bool QOffscreenX11Integration::hasCapability(QPlatformIntegration::Capability cap) const { switch (cap) { @@ -89,21 +91,27 @@ QPlatformOpenGLContext *QOffscreenX11Integration::createPlatformOpenGLContext(QOpenGLContext *context) const { - if (!m_connection) - m_connection.reset(new QOffscreenX11Connection); + auto &connection = nativeInterface()->m_connection; + + if (!connection) + connection.reset(new QOffscreenX11Connection); - if (!m_connection->display()) + if (!connection->display()) return nullptr; - return new QOffscreenX11GLXContext(m_connection->x11Info(), context); + return new QOffscreenX11GLXContext(connection->x11Info(), context); } -QPlatformNativeInterface *QOffscreenX11Integration::nativeInterface() const +QOffscreenX11PlatformNativeInterface *QOffscreenX11Integration::nativeInterface() const { - return const_cast(this); + if (!m_nativeInterface) + m_nativeInterface.reset(new QOffscreenX11PlatformNativeInterface); + return static_cast(m_nativeInterface.data()); } -void *QOffscreenX11Integration::nativeResourceForScreen(const QByteArray &resource, QScreen *screen) +QOffscreenX11PlatformNativeInterface::~QOffscreenX11PlatformNativeInterface() = default; + +void *QOffscreenX11PlatformNativeInterface::nativeResourceForScreen(const QByteArray &resource, QScreen *screen) { Q_UNUSED(screen) if (resource.toLower() == QByteArrayLiteral("display") ) { @@ -115,7 +123,7 @@ } #ifndef QT_NO_OPENGL -void *QOffscreenX11Integration::nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context) { +void *QOffscreenX11PlatformNativeInterface::nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context) { if (resource.toLower() == QByteArrayLiteral("glxconfig") ) { if (context) { QOffscreenX11GLXContext *glxPlatformContext = static_cast(context->handle()); diff -Naur a/qtbase/src/plugins/platforms/offscreen/qoffscreenintegration_x11.h b/qtbase/src/plugins/platforms/offscreen/qoffscreenintegration_x11.h --- a/qtbase/src/plugins/platforms/offscreen/qoffscreenintegration_x11.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/offscreen/qoffscreenintegration_x11.h 2022-01-25 17:23:44.074496542 +0000 @@ -41,6 +41,7 @@ #define QOFFSCREENINTEGRATION_X11_H #include "qoffscreenintegration.h" +#include "qoffscreencommon.h" #include #include @@ -52,22 +53,27 @@ class QOffscreenX11Connection; class QOffscreenX11Info; -class QOffscreenX11Integration : public QOffscreenIntegration, public QPlatformNativeInterface +class QOffscreenX11PlatformNativeInterface : public QOffscreenPlatformNativeInterface { public: - bool hasCapability(QPlatformIntegration::Capability cap) const override; - - QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const override; - QPlatformNativeInterface *nativeInterface()const override; + ~QOffscreenX11PlatformNativeInterface(); - // QPlatformNativeInterface void *nativeResourceForScreen(const QByteArray &resource, QScreen *screen) override; #ifndef QT_NO_OPENGL void *nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context) override; #endif -private: - mutable QScopedPointer m_connection; + QScopedPointer m_connection; +}; + +class QOffscreenX11Integration : public QOffscreenIntegration +{ +public: + ~QOffscreenX11Integration(); + bool hasCapability(QPlatformIntegration::Capability cap) const override; + + QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const override; + QOffscreenX11PlatformNativeInterface *nativeInterface() const override; }; class QOffscreenX11Connection { diff -Naur a/qtbase/src/plugins/platforms/qnx/qqnxwindow.cpp b/qtbase/src/plugins/platforms/qnx/qqnxwindow.cpp --- a/qtbase/src/plugins/platforms/qnx/qqnxwindow.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/qnx/qqnxwindow.cpp 2022-01-25 17:23:44.077496531 +0000 @@ -225,6 +225,21 @@ if (windowGroup.isValid() && windowGroup.canConvert()) joinWindowGroup(windowGroup.toByteArray()); + QVariant pipelineValue = window->property("_q_platform_qnxPipeline"); + if (pipelineValue.isValid()) { + bool ok = false; + int pipeline = pipelineValue.toInt(&ok); + if (ok) { + qWindowDebug() << "Set pipeline value to" << pipeline; + + Q_SCREEN_CHECKERROR( + screen_set_window_property_iv(m_window, SCREEN_PROPERTY_PIPELINE, &pipeline), + "Failed to set window pipeline"); + } else { + qWindowDebug() << "Invalid pipeline value:" << pipelineValue; + } + } + int debug = 0; if (Q_UNLIKELY(debug_fps())) { debug |= SCREEN_DEBUG_GRAPH_FPS; diff -Naur a/qtbase/src/plugins/platforms/wasm/qwasmeventtranslator.cpp b/qtbase/src/plugins/platforms/wasm/qwasmeventtranslator.cpp --- a/qtbase/src/plugins/platforms/wasm/qwasmeventtranslator.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/wasm/qwasmeventtranslator.cpp 2022-01-25 17:23:44.120496377 +0000 @@ -43,6 +43,7 @@ #include #include #include +#include #include @@ -329,10 +330,18 @@ , pressedButtons(Qt::NoButton) , resizeMode(QWasmWindow::ResizeNone) { +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + touchDevice = new QPointingDevice("touchscreen", 1, QInputDevice::DeviceType::TouchScreen, + QPointingDevice::PointerType::Finger, + QPointingDevice::Capability::Position | QPointingDevice::Capability::Area | QPointingDevice::Capability::NormalizedPosition, + 10, 0); + QWindowSystemInterface::registerInputDevice(touchDevice); +#else touchDevice = new QTouchDevice; touchDevice->setType(QTouchDevice::TouchScreen); touchDevice->setCapabilities(QTouchDevice::Position | QTouchDevice::Area | QTouchDevice::NormalizedPosition); QWindowSystemInterface::registerTouchDevice(touchDevice); +#endif initEventHandlers(); } @@ -566,7 +575,6 @@ void QWasmEventTranslator::processMouse(int eventType, const EmscriptenMouseEvent *mouseEvent) { - auto timestamp = emscripten_date_now(); QPoint targetPoint(mouseEvent->targetX, mouseEvent->targetY); QPoint globalPoint = screen()->geometry().topLeft() + targetPoint; @@ -574,8 +582,13 @@ Qt::MouseButton button = translateMouseButton(mouseEvent->button); Qt::KeyboardModifiers modifiers = translateMouseEventModifier(mouseEvent); - QWindow *window2 = screen()->compositor()->windowAt(globalPoint, 5); + QWindow *window2 = nullptr; + if (resizeMode == QWasmWindow::ResizeNone) + window2 = screen()->compositor()->windowAt(globalPoint, 5); + if (lastWindow && lastWindow->cursor() != Qt::ArrowCursor) { + lastWindow->setCursor(Qt::ArrowCursor); + } if (window2 == nullptr) { window2 = lastWindow; } else { @@ -630,11 +643,17 @@ if (oldWindow) oldWindow->injectMouseReleased(localPoint, globalPoint, button, modifiers); + else + htmlWindow->injectMouseReleased(localPoint, globalPoint, button, modifiers); break; } case EMSCRIPTEN_EVENT_MOUSEMOVE: // drag event { buttonEventType = QEvent::MouseMove; + + if (htmlWindow && htmlWindow->isPointOnResizeRegion(globalPoint)) + window2->setCursor(cursorForMode(htmlWindow->resizeModeAtPoint(globalPoint))); + if (!(htmlWindow->m_windowState & Qt::WindowFullScreen) && !(htmlWindow->m_windowState & Qt::WindowMaximized)) { if (resizeMode == QWasmWindow::ResizeNone && draggedWindow) { draggedWindow->setX(draggedWindow->x() + mouseEvent->movementX); @@ -658,7 +677,7 @@ } if (window2 && interior) { QWindowSystemInterface::handleMouseEvent( - window2, timestamp, localPoint, globalPoint, pressedButtons, button, buttonEventType, modifiers); + window2, getTimestamp(), localPoint, globalPoint, pressedButtons, button, buttonEventType, modifiers); } } @@ -692,7 +711,6 @@ QWasmEventTranslator *translator = (QWasmEventTranslator*)userData; Qt::KeyboardModifiers modifiers = translator->translateMouseEventModifier(&mouseEvent); - auto timestamp = emscripten_date_now(); QPoint targetPoint(mouseEvent.targetX, mouseEvent.targetY); QPoint globalPoint = eventTranslator->screen()->geometry().topLeft() + targetPoint; @@ -706,7 +724,7 @@ if (wheelEvent->deltaY != 0) pixelDelta.setY(wheelEvent->deltaY * scrollFactor); if (wheelEvent->deltaX != 0) pixelDelta.setX(wheelEvent->deltaX * scrollFactor); - QWindowSystemInterface::handleWheelEvent(window2, timestamp, localPoint, + QWindowSystemInterface::handleWheelEvent(window2, getTimestamp(), localPoint, globalPoint, QPoint(), pixelDelta, modifiers); QWasmEventDispatcher::maintainTimers(); @@ -989,4 +1007,27 @@ return accepted; } +QCursor QWasmEventTranslator::cursorForMode(QWasmWindow::ResizeMode m) +{ + switch (m) { + case QWasmWindow::ResizeTopLeft: + case QWasmWindow::ResizeBottomRight: + return Qt::SizeFDiagCursor; + break; + case QWasmWindow::ResizeBottomLeft: + case QWasmWindow::ResizeTopRight: + return Qt::SizeBDiagCursor; + break; + case QWasmWindow::ResizeTop: + case QWasmWindow::ResizeBottom: + return Qt::SizeVerCursor; + break; + case QWasmWindow::ResizeLeft: + case QWasmWindow::ResizeRight: + return Qt::SizeHorCursor; + break; + } + return Qt::ArrowCursor; +} + QT_END_NAMESPACE diff -Naur a/qtbase/src/plugins/platforms/wasm/qwasmeventtranslator.h b/qtbase/src/plugins/platforms/wasm/qwasmeventtranslator.h --- a/qtbase/src/plugins/platforms/wasm/qwasmeventtranslator.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/wasm/qwasmeventtranslator.h 2022-01-25 17:23:44.120496377 +0000 @@ -35,8 +35,13 @@ #include #include #include "qwasmwindow.h" +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) +#include +#else #include +#endif #include +#include QT_BEGIN_NAMESPACE @@ -89,11 +94,16 @@ QWasmWindow::ResizeMode resizeMode; QPoint resizePoint; QRect resizeStartRect; +#if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) + QPointingDevice *touchDevice; +#else QTouchDevice *touchDevice; - quint64 getTimestamp(); +#endif + static quint64 getTimestamp(); Qt::Key m_emDeadKey = Qt::Key_unknown; bool m_emStickyDeadKey = false; + QCursor cursorForMode(QWasmWindow::ResizeMode mode); }; QT_END_NAMESPACE diff -Naur a/qtbase/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp b/qtbase/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp --- a/qtbase/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/xcb/gl_integrations/xcb_glx/qxcbglxintegration.cpp 2022-01-25 17:23:44.080496521 +0000 @@ -48,6 +48,7 @@ #include "qxcbscreen.h" #include "qglxintegration.h" +#include #include #include "qxcbglxnativeinterfacehandler.h" @@ -59,6 +60,9 @@ QT_BEGIN_NAMESPACE #if QT_CONFIG(xcb_glx) + #define QT_XCB_GLX_REQUIRED_MAJOR 1 + #define QT_XCB_GLX_REQUIRED_MINOR 3 + #if XCB_GLX_MAJOR_VERSION == 1 && XCB_GLX_MINOR_VERSION < 4 #define XCB_GLX_BUFFER_SWAP_COMPLETE 1 typedef struct xcb_glx_buffer_swap_complete_event_t { @@ -113,7 +117,9 @@ auto xglx_query = Q_XCB_REPLY(xcb_glx_query_version, m_connection->xcb_connection(), XCB_GLX_MAJOR_VERSION, XCB_GLX_MINOR_VERSION); - if (!xglx_query) { + if ((!xglx_query) + || (QVersionNumber(xglx_query->major_version, xglx_query->minor_version) + < QVersionNumber(QT_XCB_GLX_REQUIRED_MAJOR, QT_XCB_GLX_REQUIRED_MINOR))) { qCWarning(lcQpaGl) << "QXcbConnection: Failed to initialize GLX"; return false; } diff -Naur a/qtbase/src/plugins/platforms/xcb/qxcbclipboard.cpp b/qtbase/src/plugins/platforms/xcb/qxcbclipboard.cpp --- a/qtbase/src/plugins/platforms/xcb/qxcbclipboard.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/xcb/qxcbclipboard.cpp 2022-01-25 17:23:44.176496176 +0000 @@ -781,6 +781,12 @@ if (e) // found the waited for event return e; + // It is safe to assume here that the pointed to node won't be re-used + // while we are holding the pointer to it. The nodes can be recycled + // only when they are dequeued, which is done only by + // QXcbConnection::processXcbEvents(). + const QXcbEventNode *flushedTailNode = queue->flushedTail(); + if (checkManager) { auto reply = Q_XCB_REPLY(xcb_get_selection_owner, xcb_connection(), atom(QXcbAtom::CLIPBOARD_MANAGER)); if (!reply || reply->owner == XCB_NONE) @@ -806,7 +812,7 @@ const auto elapsed = timer.elapsed(); if (elapsed < clipboard_timeout) - queue->waitForNewEvents(clipboard_timeout - elapsed); + queue->waitForNewEvents(flushedTailNode, clipboard_timeout - elapsed); } while (timer.elapsed() < clipboard_timeout); return nullptr; @@ -829,6 +835,8 @@ alloc_error = buf.size() != nbytes+1; } + QElapsedTimer timer; + timer.start(); for (;;) { connection()->flush(); xcb_generic_event_t *ge = waitForClipboardEvent(win, XCB_PROPERTY_NOTIFY); @@ -864,9 +872,11 @@ tmp_buf.resize(0); offset += length; } - } else { - break; } + + const auto elapsed = timer.elapsed(); + if (elapsed > clipboard_timeout) + break; } // timed out ... create a new requestor window, otherwise the requestor diff -Naur a/qtbase/src/plugins/platforms/xcb/qxcbconnection_basic.cpp b/qtbase/src/plugins/platforms/xcb/qxcbconnection_basic.cpp --- a/qtbase/src/plugins/platforms/xcb/qxcbconnection_basic.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/xcb/qxcbconnection_basic.cpp 2022-01-25 17:23:44.199496093 +0000 @@ -179,7 +179,13 @@ if (!name || *name == 0) return XCB_NONE; - return Q_XCB_REPLY(xcb_intern_atom, m_xcbConnection, false, strlen(name), name)->atom; + auto reply = Q_XCB_REPLY(xcb_intern_atom, m_xcbConnection, false, strlen(name), name); + if (!reply) { + qCDebug(lcQpaXcb) << "failed to query intern atom: " << name; + return XCB_NONE; + } + + return reply->atom; } QByteArray QXcbBasicConnection::atomName(xcb_atom_t atom) diff -Naur a/qtbase/src/plugins/platforms/xcb/qxcbconnection.cpp b/qtbase/src/plugins/platforms/xcb/qxcbconnection.cpp --- a/qtbase/src/plugins/platforms/xcb/qxcbconnection.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/xcb/qxcbconnection.cpp 2022-01-25 17:23:44.199496093 +0000 @@ -763,7 +763,10 @@ xcb_generic_event_t *event = nullptr; - while (!event) { + // When disconnection is caused by X server, event will never be able to hold + // a valid pointer. isConnected(), which calls xcb_connection_has_error(), + // can handle this type of disconnection and properly quits the loop. + while (isConnected() && !event) { connection()->sync(); event = eventQueue()->peek([window, dummyAtom](xcb_generic_event_t *event, int type) { if (type != XCB_PROPERTY_NOTIFY) @@ -773,6 +776,14 @@ }); } + if (!event) { + // https://www.x.org/releases/X11R7.7/doc/xproto/x11protocol.html#glossary + // > One timestamp value (named CurrentTime) is never generated by the + // > server. This value is reserved for use in requests to represent the + // > current server time. + return XCB_CURRENT_TIME; + } + xcb_property_notify_event_t *pn = reinterpret_cast(event); xcb_timestamp_t timestamp = pn->time; free(event); @@ -784,7 +795,13 @@ xcb_window_t QXcbConnection::getSelectionOwner(xcb_atom_t atom) const { - return Q_XCB_REPLY(xcb_get_selection_owner, xcb_connection(), atom)->owner; + auto reply = Q_XCB_REPLY(xcb_get_selection_owner, xcb_connection(), atom); + if (!reply) { + qCDebug(lcQpaXcb) << "failed to query selection owner"; + return XCB_NONE; + } + + return reply->owner; } xcb_window_t QXcbConnection::getQtSelectionOwner() diff -Naur a/qtbase/src/plugins/platforms/xcb/qxcbconnection_screens.cpp b/qtbase/src/plugins/platforms/xcb/qxcbconnection_screens.cpp --- a/qtbase/src/plugins/platforms/xcb/qxcbconnection_screens.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/xcb/qxcbconnection_screens.cpp 2022-01-25 17:23:44.169496201 +0000 @@ -290,6 +290,8 @@ // RRGetScreenResources in this case. auto resources_current = Q_XCB_REPLY(xcb_randr_get_screen_resources_current, xcb_connection(), xcbScreen->root); + decltype(Q_XCB_REPLY(xcb_randr_get_screen_resources, + xcb_connection(), xcbScreen->root)) resources; if (!resources_current) { qWarning("failed to get the current screen resources"); } else { @@ -300,8 +302,8 @@ timestamp = resources_current->config_timestamp; outputs = xcb_randr_get_screen_resources_current_outputs(resources_current.get()); } else { - auto resources = Q_XCB_REPLY(xcb_randr_get_screen_resources, - xcb_connection(), xcbScreen->root); + resources = Q_XCB_REPLY(xcb_randr_get_screen_resources, + xcb_connection(), xcbScreen->root); if (!resources) { qWarning("failed to get the screen resources"); } else { diff -Naur a/qtbase/src/plugins/platforms/xcb/qxcbcursor.cpp b/qtbase/src/plugins/platforms/xcb/qxcbcursor.cpp --- a/qtbase/src/plugins/platforms/xcb/qxcbcursor.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/xcb/qxcbcursor.cpp 2022-01-25 17:23:44.200496089 +0000 @@ -668,7 +668,8 @@ { QXcbVirtualDesktop *virtualDesktop = nullptr; queryPointer(connection(), &virtualDesktop, nullptr); - xcb_warp_pointer(xcb_connection(), XCB_NONE, virtualDesktop->root(), 0, 0, 0, 0, pos.x(), pos.y()); + if (virtualDesktop) + xcb_warp_pointer(xcb_connection(), XCB_NONE, virtualDesktop->root(), 0, 0, 0, 0, pos.x(), pos.y()); xcb_flush(xcb_connection()); } diff -Naur a/qtbase/src/plugins/platforms/xcb/qxcbeventqueue.cpp b/qtbase/src/plugins/platforms/xcb/qxcbeventqueue.cpp --- a/qtbase/src/plugins/platforms/xcb/qxcbeventqueue.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/xcb/qxcbeventqueue.cpp 2022-01-25 17:23:44.154496255 +0000 @@ -226,6 +226,8 @@ }; while (!m_closeConnectionDetected && (event = xcb_wait_for_event(connection))) { + // This lock can block only if there are users of waitForNewEvents(). + // Currently only the clipboard implementation relies on it. m_newEventsMutex.lock(); enqueueEvent(event); while (!m_closeConnectionDetected && (event = xcb_poll_for_queued_event(connection))) @@ -350,12 +352,12 @@ return result; } -void QXcbEventQueue::waitForNewEvents(unsigned long time) +void QXcbEventQueue::waitForNewEvents(const QXcbEventNode *sinceFlushedTail, + unsigned long time) { QMutexLocker locker(&m_newEventsMutex); - QXcbEventNode *tailBeforeFlush = m_flushedTail; flushBufferedEvents(); - if (tailBeforeFlush != m_flushedTail) + if (sinceFlushedTail != m_flushedTail) return; m_newEventsCondition.wait(&m_newEventsMutex, time); } diff -Naur a/qtbase/src/plugins/platforms/xcb/qxcbeventqueue.h b/qtbase/src/plugins/platforms/xcb/qxcbeventqueue.h --- a/qtbase/src/plugins/platforms/xcb/qxcbeventqueue.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/xcb/qxcbeventqueue.h 2022-01-25 17:23:44.154496255 +0000 @@ -106,7 +106,9 @@ bool peekEventQueue(PeekerCallback peeker, void *peekerData = nullptr, PeekOptions option = PeekDefault, qint32 peekerId = -1); - void waitForNewEvents(unsigned long time = ULONG_MAX); + const QXcbEventNode *flushedTail() const { return m_flushedTail; } + void waitForNewEvents(const QXcbEventNode *sinceFlushedTail, + unsigned long time = ULONG_MAX); private: QXcbEventNode *qXcbEventNodeFactory(xcb_generic_event_t *event); diff -Naur a/qtbase/src/plugins/platforms/xcb/qxcbintegration.cpp b/qtbase/src/plugins/platforms/xcb/qxcbintegration.cpp --- a/qtbase/src/plugins/platforms/xcb/qxcbintegration.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/xcb/qxcbintegration.cpp 2022-01-25 17:23:44.169496201 +0000 @@ -274,8 +274,7 @@ #ifndef QT_NO_OPENGL QPlatformOpenGLContext *QXcbIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const { - QXcbScreen *screen = static_cast(context->screen()->handle()); - QXcbGlIntegration *glIntegration = screen->connection()->glIntegration(); + QXcbGlIntegration *glIntegration = defaultConnection()->glIntegration(); if (!glIntegration) { qWarning("QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enabled"); return nullptr; diff -Naur a/qtbase/src/plugins/platforms/xcb/qxcbwindow.cpp b/qtbase/src/plugins/platforms/xcb/qxcbwindow.cpp --- a/qtbase/src/plugins/platforms/xcb/qxcbwindow.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platforms/xcb/qxcbwindow.cpp 2022-01-25 17:23:44.144496291 +0000 @@ -698,7 +698,7 @@ if (isTransient(window())) { const QWindow *tp = window()->transientParent(); if (tp && tp->handle()) - transientXcbParent = static_cast(tp->handle())->winId(); + transientXcbParent = tp->handle()->winId(); // Default to client leader if there is no transient parent, else modal dialogs can // be hidden by their parents. if (!transientXcbParent) diff -Naur a/qtbase/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp b/qtbase/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp --- a/qtbase/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp 2022-01-25 17:23:44.181496158 +0000 @@ -302,6 +302,7 @@ this, SLOT(gotResponse(uint,QVariantMap))); } + watcher->deleteLater(); }); } diff -Naur a/qtbase/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp b/qtbase/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp --- a/qtbase/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp 2022-01-25 17:23:44.181496158 +0000 @@ -111,6 +111,7 @@ if (reply.isValid()) { d->fileChooserPortalVersion = reply.value().toUInt(); } + watcher->deleteLater(); }); } diff -Naur a/qtbase/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/qtbase/src/plugins/sqldrivers/mysql/qsql_mysql.cpp --- a/qtbase/src/plugins/sqldrivers/mysql/qsql_mysql.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/sqldrivers/mysql/qsql_mysql.cpp 2022-01-25 17:23:44.190496125 +0000 @@ -158,6 +158,20 @@ #endif } +// check if this client and server version of MySQL/MariaDB support prepared statements +static inline bool checkPreparedQueries(MYSQL *mysql) +{ + std::unique_ptr stmt(mysql_stmt_init(mysql), &mysql_stmt_close); + if (!stmt) + return false; + + static const char dummyQuery[] = "SELECT ? + ?"; + if (mysql_stmt_prepare(stmt.get(), dummyQuery, sizeof(dummyQuery) - 1)) + return false; + + return mysql_stmt_param_count(stmt.get()) == 2; +} + class QMYSQLResultPrivate; class QMYSQLResult : public QSqlResult @@ -209,7 +223,7 @@ struct QMyField { char *outField = nullptr; - MYSQL_FIELD *myField = nullptr; + const MYSQL_FIELD *myField = nullptr; QMetaType::Type type = QMetaType::UnknownType; my_bool nullIndicator = false; ulong bufLength = 0ul; @@ -347,7 +361,7 @@ void QMYSQLResultPrivate::bindBlobs() { int i; - MYSQL_FIELD *fieldInfo; + const MYSQL_FIELD *fieldInfo; MYSQL_BIND *bind; for(i = 0; i < fields.count(); ++i) { @@ -365,7 +379,6 @@ bool QMYSQLResultPrivate::bindInValues() { MYSQL_BIND *bind; - char *field; int i = 0; if (!meta) @@ -378,35 +391,34 @@ inBinds = new MYSQL_BIND[fields.size()]; memset(inBinds, 0, fields.size() * sizeof(MYSQL_BIND)); - MYSQL_FIELD *fieldInfo; + const MYSQL_FIELD *fieldInfo; while((fieldInfo = mysql_fetch_field(meta))) { + bind = &inBinds[i]; + QMyField &f = fields[i]; f.myField = fieldInfo; - + bind->buffer_length = f.bufLength = fieldInfo->length + 1; + bind->buffer_type = fieldInfo->type; f.type = qDecodeMYSQLType(fieldInfo->type, fieldInfo->flags); if (qIsBlob(fieldInfo->type)) { // the size of a blob-field is available as soon as we call // mysql_stmt_store_result() // after mysql_stmt_exec() in QMYSQLResult::exec() - fieldInfo->length = 0; + bind->buffer_length = f.bufLength = 0; hasBlobs = true; } else if (qIsInteger(f.type)) { - fieldInfo->length = 8; + bind->buffer_length = f.bufLength = 8; } else { - fieldInfo->type = MYSQL_TYPE_STRING; + bind->buffer_type = MYSQL_TYPE_STRING; } - bind = &inBinds[i]; - field = new char[fieldInfo->length + 1]; - memset(field, 0, fieldInfo->length + 1); - bind->buffer_type = fieldInfo->type; - bind->buffer = field; - bind->buffer_length = f.bufLength = fieldInfo->length + 1; bind->is_null = &f.nullIndicator; bind->length = &f.bufLength; bind->is_unsigned = fieldInfo->flags & UNSIGNED_FLAG ? 1 : 0; - f.outField=field; + + char *field = new char[bind->buffer_length + 1]{}; + bind->buffer = f.outField = field; ++i; } @@ -1355,24 +1367,23 @@ } #if MYSQL_VERSION_ID >= 50007 - if (mysql_get_client_version() >= 50503 && mysql_get_server_version(d->mysql) >= 50503) { - // force the communication to be utf8mb4 (only utf8mb4 supports 4-byte characters) - mysql_set_character_set(d->mysql, "utf8mb4"); + // force the communication to be utf8mb4 (only utf8mb4 supports 4-byte characters) + if (mysql_set_character_set(d->mysql, "utf8mb4")) { + // this failed, try forcing it to utf (BMP only) + if (mysql_set_character_set(d->mysql, "utf8")) + qWarning() << "MySQL: Unable to set the client character set to utf8."; #if QT_CONFIG(textcodec) - d->tc = QTextCodec::codecForName("UTF-8"); + else + d->tc = codec(d->mysql); #endif - } else - { - // force the communication to be utf8 - mysql_set_character_set(d->mysql, "utf8"); + } #if QT_CONFIG(textcodec) - d->tc = codec(d->mysql); + else + d->tc = QTextCodec::codecForName("UTF-8"); #endif - } #endif // MYSQL_VERSION_ID >= 50007 - d->preparedQuerysEnabled = mysql_get_client_version() >= 40108 - && mysql_get_server_version(d->mysql) >= 40100; + d->preparedQuerysEnabled = checkPreparedQueries(d->mysql); #if QT_CONFIG(thread) mysql_thread_init(); diff -Naur a/qtbase/src/plugins/sqldrivers/psql/qsql_psql.cpp b/qtbase/src/plugins/sqldrivers/psql/qsql_psql.cpp --- a/qtbase/src/plugins/sqldrivers/psql/qsql_psql.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/sqldrivers/psql/qsql_psql.cpp 2022-01-25 17:23:44.188496133 +0000 @@ -1198,8 +1198,7 @@ const QString &connOpts) { Q_D(QPSQLDriver); - if (isOpen()) - close(); + close(); QString connectString; if (!host.isEmpty()) connectString.append(QLatin1String("host=")).append(qQuote(host)); @@ -1242,21 +1241,19 @@ void QPSQLDriver::close() { Q_D(QPSQLDriver); - if (isOpen()) { - d->seid.clear(); - if (d->sn) { - disconnect(d->sn, SIGNAL(activated(QSocketDescriptor)), this, SLOT(_q_handleNotification())); - delete d->sn; - d->sn = nullptr; - } - - if (d->connection) - PQfinish(d->connection); - d->connection = nullptr; - setOpen(false); - setOpenError(false); + d->seid.clear(); + if (d->sn) { + disconnect(d->sn, SIGNAL(activated(QSocketDescriptor)), this, SLOT(_q_handleNotification())); + delete d->sn; + d->sn = nullptr; } + + if (d->connection) + PQfinish(d->connection); + d->connection = nullptr; + setOpen(false); + setOpenError(false); } QSqlResult *QPSQLDriver::createResult() const diff -Naur a/qtbase/src/plugins/styles/mac/qmacstyle_mac.mm b/qtbase/src/plugins/styles/mac/qmacstyle_mac.mm --- a/qtbase/src/plugins/styles/mac/qmacstyle_mac.mm 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/plugins/styles/mac/qmacstyle_mac.mm 2022-01-25 17:23:44.117496388 +0000 @@ -3870,6 +3870,7 @@ const auto cs = d->effectiveAquaSizeConstrain(opt, w); // Extra hacks to get the proper pressed appreance when not selected or selected and inactive const bool needsInactiveHack = (!isActive && isSelected); + const bool isBigSurOrAbove = QOperatingSystemVersion::current() >= QOperatingSystemVersion::MacOSBigSur; const auto ct = !needsInactiveHack && (isSelected || tp == QStyleOptionTab::OnlyOneTab) ? QMacStylePrivate::Button_PushButton : QMacStylePrivate::Button_PopupButton; @@ -3878,6 +3879,12 @@ auto *pb = static_cast(d->cocoaControl(cw)); auto vOffset = isPopupButton ? 1 : 2; + if (isBigSurOrAbove) { + // Make it 1, otherwise, offset is very visible compared + // to selected tab (which is not a popup button). + vOffset = 1; + } + if (tabDirection == QMacStylePrivate::East) vOffset -= 1; const auto outerAdjust = isPopupButton ? 1 : 4; @@ -3894,9 +3901,22 @@ frameRect = frameRect.adjusted(-innerAdjust, 0, outerAdjust, 0); else frameRect = frameRect.adjusted(-outerAdjust, 0, innerAdjust, 0); + + if (isSelected && isBigSurOrAbove) { + // 1 pixed of 'roundness' is still visible on the right + // (the left is OK, it's rounded). + frameRect = frameRect.adjusted(0, 0, 1, 0); + } + break; case QStyleOptionTab::Middle: frameRect = frameRect.adjusted(-innerAdjust, 0, innerAdjust, 0); + + if (isSelected && isBigSurOrAbove) { + // 1 pixel of 'roundness' is still visible on both + // sides - left and right. + frameRect = frameRect.adjusted(-1, 0, 1, 0); + } break; case QStyleOptionTab::End: // Pressed state hack: tweak adjustments in preparation for flip below @@ -3904,6 +3924,11 @@ frameRect = frameRect.adjusted(-innerAdjust, 0, outerAdjust, 0); else frameRect = frameRect.adjusted(-outerAdjust, 0, innerAdjust, 0); + + if (isSelected && isBigSurOrAbove) { + // 1 pixel of 'roundness' is still visible on the left. + frameRect = frameRect.adjusted(-1, 0, 0, 0); + } break; case QStyleOptionTab::OnlyOneTab: frameRect = frameRect.adjusted(-outerAdjust, 0, outerAdjust, 0); @@ -3951,7 +3976,10 @@ NSPopUpArrowPosition oldPosition = NSPopUpArrowAtCenter; NSPopUpButtonCell *pbCell = nil; auto rAdjusted = r; - if (isPopupButton && tp == QStyleOptionTab::OnlyOneTab) { + if (isPopupButton && (tp == QStyleOptionTab::OnlyOneTab || isBigSurOrAbove)) { + // Note: starting from macOS BigSur NSPopupButton has this + // arrow 'button' in a different place and it became + // quite visible 'in between' inactive tabs. pbCell = static_cast(pb.cell); oldPosition = pbCell.arrowPosition; pbCell.arrowPosition = NSPopUpNoArrow; @@ -3959,6 +3987,10 @@ // NSPopUpButton in this state is smaller. rAdjusted.origin.x -= 3; rAdjusted.size.width += 6; + if (isBigSurOrAbove) { + if (tp == QStyleOptionTab::End) + rAdjusted.origin.x -= 2; + } } } diff -Naur a/qtbase/src/printsupport/dialogs/images/fit-page-24.png b/qtbase/src/printsupport/dialogs/images/fit-page-24.png --- a/qtbase/src/printsupport/dialogs/images/fit-page-24.png 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/printsupport/dialogs/images/fit-page-24.png 1970-01-01 01:00:00.000000000 +0100 @@ -1,12 +0,0 @@ -PNG - - IHDRw=tEXtSoftwareAdobe ImageReadyqe<{IDATHDžV[OAހJ˥U -)((E%B|/'fF|@%b@DITXnPn$ә9ߜs -tyn1_t=lky8 3>fYfU G31`pMG cpַwWFꀙ}TfeGF*Hled*"Eڌ0FS&}Yĕ}j - -?C&g2D)MY,ΎDNHdDBZv})'ppp]$jaKvkըUn/YЖZLsuTp@.Eŀu\%%&.T]0j1g :q 9x&C5#ү0"kwĹB=|f)ѐ^NbkHv!Tѳ ΠXr;i-/i~5UeL|xb=ƃx3d{voFEoY"j:s}<&E| PFo{ĝ"~x)Sxn -ȴROF4pF)#x)1MEOɴ % ^>ܻG EI$;O{ 0N -O -x8 -X"BdE}FQ`/NeeȒ$@ZQu^/\t}o\LYΘIENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/fit-page-32.png b/qtbase/src/printsupport/dialogs/images/fit-page-32.png --- a/qtbase/src/printsupport/dialogs/images/fit-page-32.png 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/printsupport/dialogs/images/fit-page-32.png 1970-01-01 01:00:00.000000000 +0100 @@ -1,12 +0,0 @@ -PNG - - IHDR szzIDATx^WYh\e{LI%MLkZUJ_%VA]E|WIDAEӊR Ғt$N'3̽l=l9744\<$sS{cǯȂ"xAEӭU^J-wA2XXSύ:}max>ؖWA{v+4㍓iaJ -WOcts,r;n;xgZ"XB0:G8ˋH$!+cxiWzU}DK1 5 O 12n."+1NMD^8JH 24kxjz)xnl2Me5Oq d=+v^|u 2)gQ+ YΙ'U -ܷUX؉C -%P&WkJg =V,/ -zc>vQM&Z8—\Lb\ h@T#JG'fA` aPh\Q(B!1%WW oRq bj8DsPO1x:`-Np0 Z7_S=<{yO#0sk8,-ƶ𚯸!\\༔yh @BSXTi"2c֞)3IENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/fit-width-24.png b/qtbase/src/printsupport/dialogs/images/fit-width-24.png --- a/qtbase/src/printsupport/dialogs/images/fit-width-24.png 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/printsupport/dialogs/images/fit-width-24.png 1970-01-01 01:00:00.000000000 +0100 @@ -1,5 +0,0 @@ -PNG - - IHDRw=tEXtSoftwareAdobe ImageReadyqe<dIDATHǍVϫNA~ΙE~$Š(+) +e_KY!Fn/) ~^X̯w̹LMs9}yiǽsI i}dkm/sGw?=B8dUjEp<|6ld  +^@g}G}3F%(7bY$,>|HY3Bum\ -D2cAִJC`>E((:ȍDO1,:͠-@~e\rWh7F03's|}PT/%BH|;|%V~Wn<n2X74@%Bl/ޯ^Z8#浻/01 {R%b Ο8=;y#+ޮmq>lvi̤kp,^8yV\'",MCVJH|f 2Ѝyd޸+R]2 - :cX^ k4:1c ܋n`DmЙc u+/Rd1-i#@gx$`Lm:t{w4_$a hJIENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/fit-width-32.png b/qtbase/src/printsupport/dialogs/images/fit-width-32.png --- a/qtbase/src/printsupport/dialogs/images/fit-width-32.png 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/printsupport/dialogs/images/fit-width-32.png 1970-01-01 01:00:00.000000000 +0100 @@ -1,6 +0,0 @@ -PNG - - IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATXõWKoMQ*+(iZ4 `h @ H@ hH'IE<H%V<ڏs &<^Z'#  ܵwgxzE5wB$P @x[F#{(LbQݷ|0>D`}d<|ؼh;$:B-4Ha2zju9># -f|-mZ9:y1oR=e2ec$fj_,ϕ'!AżdP"`(p9%"{ҬQMGb&귺7\Sf'ݗ'_ں -QPVps|d722+_cN@Oq#**|Zĵ{oW/ ߸k?̲ mRLOgü .?ߌuMJ#C-9Pz7;;=`b$%vmF2^ggw]<ՌSkٶ^O-(rztt p:`x]l@T'i80f1s6 'TєR alݲ[OY6~68yh[tY[ VZlǹ]lX"kE3Ga$ѓ^E RCjIENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/print-24.png b/qtbase/src/printsupport/dialogs/images/print-24.png --- a/qtbase/src/printsupport/dialogs/images/print-24.png 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/printsupport/dialogs/images/print-24.png 1970-01-01 01:00:00.000000000 +0100 @@ -1,4 +0,0 @@ -PNG - - IHDRשPLTEqqqVVVhhhUUUJJJ͎LLLIIIDDDϮ湹䌌ش)))ǧbbb((('''___HHHٓPPP???KKKȿrrr&&&...^^^ʐwww000hhi111UUUлފGGG&&'噙󲲸``a񯯯ʍLtRNS? >8' )kIDATx^cs$QO4qmmVl^{z*JeoSu! :7uD0v7tukeKQNt= Qlj* -8[5:c=f@/_+.kZ|P<Ǵ]a鴞awZL(;Vډ50 WՔ>>9X,Y$Iιyo,f~'=`xj* zv'7)e}??|]n˞e1N6پ9q-Qo3@XƉqb1' {;fxXm=xVNzҋܦ R!d"IENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/print-32.png b/qtbase/src/printsupport/dialogs/images/print-32.png --- a/qtbase/src/printsupport/dialogs/images/print-32.png 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/printsupport/dialogs/images/print-32.png 1970-01-01 01:00:00.000000000 +0100 @@ -1,12 +0,0 @@ -PNG - - IHDR szzsBIT|d pHYsvv}ՂtEXtSoftwarewww.inkscape.org</IDATXW=H[QyySCDl ڂBm:Xѵ"TpVA\ĥ - -.Rpp"Q^w޻//?FH{z5}ިaij\4=9yPǴ[=[ju](RS4Mx<xR5}N٬䪪V%[t:mb}t m#,..6OOOMLt]E\#ǩK39^"$ t`pԂǣ -[t(dE -4 SB!h4@ hlldd2nz͖ .+2,2xdPGk\nۊQ~#z&&&!@|}^/kcni2jWZѤ𚣣fJH~ D>_8' )kIDATx^cs$QO4qmmVl^{z*JeoSu! :7uD0v7tukeKQNt= Qlj* +8[5:c=f@/_+.kZ|P<Ǵ]a鴞awZL(;Vډ50 WՔ>>9X,Y$Iιyo,f~'=`xj* zv'7)e}??|]n˞e1N6پ9q-Qo3@XƉqb1' {;fxXm=xVNzҋܦ R!d"IENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/printer-32.png b/qtbase/src/printsupport/dialogs/images/printer-32.png --- a/qtbase/src/printsupport/dialogs/images/printer-32.png 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/src/printsupport/dialogs/images/printer-32.png 2022-01-25 17:23:44.191496122 +0000 @@ -0,0 +1,12 @@ +PNG + + IHDR szzsBIT|d pHYsvv}ՂtEXtSoftwarewww.inkscape.org</IDATXW=H[QyySCDl ڂBm:Xѵ"TpVA\ĥ + +.Rpp"Q^w޻//?FH{z5}ިaij\4=9yPǴ[=[ju](RS4Mx<xR5}N٬䪪V%[t:mb}t m#,..6OOOMLt]E\#ǩK39^"$ t`pԂǣ +[t(dE +4 SB!h4@ hlldd2nz͖ .+2,2xdPGk\nۊQ~#z&&&!@|}^/kcni2jWZѤ𚣣fJH~ D>_$IItlޅ1P):s0dTt:V:6@vg 0< tTd ?5Ёp." va/z=^Yl[i2 -vU@3b8.{`iq~<,5#xosu~T@C) A62Q1P7_eXںkDIENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/view-page-multi-32.png b/qtbase/src/printsupport/dialogs/images/view-page-multi-32.png --- a/qtbase/src/printsupport/dialogs/images/view-page-multi-32.png 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/printsupport/dialogs/images/view-page-multi-32.png 1970-01-01 01:00:00.000000000 +0100 @@ -1,5 +0,0 @@ -PNG - - IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATXUJ1m+(bыx;sb^<%C$c&M+ Ml7e`m_\Q#16k^9B9yo;@;n !aZSvTJMoAJC6lgdb1~ڎwPzl=vUO90w@wsY&jGju` -/qPe9.qYr\r<8 - bIENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/view-page-one-24.png b/qtbase/src/printsupport/dialogs/images/view-page-one-24.png --- a/qtbase/src/printsupport/dialogs/images/view-page-one-24.png 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/printsupport/dialogs/images/view-page-one-24.png 1970-01-01 01:00:00.000000000 +0100 @@ -1,4 +0,0 @@ -PNG - - IHDRw=tEXtSoftwareAdobe ImageReadyqe<8IDATHǕVjA=wۄ A fᗹqrbE]Nq5ՏjCSCwߪ>Nu߭I$$HduToA98m!R유&f*^YO?C Vf`$ km'gJ(DY~Gdc> 5n^D?" 0X ;h1YAVa@39nY4kOz*n\Jwf*3LjUGMd#ֹۈOZLQ1UGwwEʪoNwTTĪ[yz薓T5fS5LԐИScUhɎQZE&{d((E݀*8P2>UݪUXP#MEWw,# pkg;)Fӡ'F͔DպK)DSDS ~-mv -%*DwSKhjX!Ȁ[2,!ƨZzP"Dd=(Z%K)D2$"[/?ٹz_~IENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/view-page-one-32.png b/qtbase/src/printsupport/dialogs/images/view-page-one-32.png --- a/qtbase/src/printsupport/dialogs/images/view-page-one-32.png 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/printsupport/dialogs/images/view-page-one-32.png 1970-01-01 01:00:00.000000000 +0100 @@ -1,4 +0,0 @@ -PNG - - IHDR szzIDATx^WjAݛQQ\EA$>>ŋ/`z_D$A[eM>tVUO_WՕ.q7wj>2hQ'µq6>|qh0&o#8487'm#{fwoH1DV(@Hzk衸akk,( (kyf!@RhZ J*hi8wbrKhYpɽKaCH9uu-˂׼i"ľT<&x\ ;dB$Yjl N-?Zю7)`#f3+2TwCf!7~?Qӏl ,n.bpi!Ɉ$5pæ$H&m2!j@w.&!CVg6MZi@f/40erB^j <ʩ<܇P3N{c'Qz§S7Mu7hof+o+/>48]ڤkފc -s^@LAk {t?Anマm_ɐZgɭcIENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/view-pages-facing-24.png b/qtbase/src/printsupport/dialogs/images/view-pages-facing-24.png --- a/qtbase/src/printsupport/dialogs/images/view-pages-facing-24.png 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/src/printsupport/dialogs/images/view-pages-facing-24.png 2022-01-25 17:23:44.191496122 +0000 @@ -0,0 +1,6 @@ +PNG + + IHDRotEXtSoftwareAdobe ImageReadyqe<^IDAT8˅n0'ֱViZ'ѩz bB/ hBiPhd]b;*R+$zZPeWn>AA\}^+n@?7~Z}_~ow?ٰ`U<*{V3B@/̤u z1M}2+1/G;{$K?B$-e(4K:eܢJ}_ZmDѣM <1*1/Cb>RqA wr H2Wl|=SN?۠yv{Vb]hӥiWc=bs +(X%#)9f-np %V6iokfP oLGBr&STǠG*ǓkWZJpޤodÞa94C 7T^kqJě( 3N~Zg0fg9/ ΥWa|)n5睽l*,쯲0fm #:eιh>|[7Ʊ2}i"iE/%Dh #rG럩-P;5J 2 cju=gga#ƣř={9;*&lH' 3)v,h)&6=G!2TЮΧ9T4уJh""Ei7 Lt,lCBфՌ6m(Lik/W]fT>8{)MhNM4 +7e`@kO$g +;N"N !I4qh~oZMEHv#6dA%w!16MACZ֞k&T^< :8;{xMDHd_PDb҆DN>Y!^͞@{l"BD=8qF"hp4>_9%a`dd-x j&C( 10dE;ebΣArF5Zq{GC~`&2@ .  227ßȴz. +" *24rJ)F5VQ- Z›R +Z`/(CTCY3V +(<M蔅+vn ١|1 +R7~CJH~CsH#IENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/view-page-sided-24.png b/qtbase/src/printsupport/dialogs/images/view-page-sided-24.png --- a/qtbase/src/printsupport/dialogs/images/view-page-sided-24.png 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/printsupport/dialogs/images/view-page-sided-24.png 1970-01-01 01:00:00.000000000 +0100 @@ -1,6 +0,0 @@ -PNG - - IHDRotEXtSoftwareAdobe ImageReadyqe<^IDAT8˅n0'ֱViZ'ѩz bB/ hBiPhd]b;*R+$zZPeWn>AA\}^+n@?7~Z}_~ow?ٰ`U<*{V3B@/̤u z1M}2+1/G;{$K?B$-e(4K:eܢJ}_ZmDѣM <1*1/Cb>RqA wr H2Wl|=SN?۠yv{Vb]hӥiWc=bs -(X%#)9f-np %V6iokfP oLGBr&STǠG*ǓkWZJpޤodÞa94C 7T^kqJě( 3N~Zg0fg9/ ΥWa|)n5睽l*,쯲0fm #:eιh>|[7Ʊ2}i"iE/%Dh #rG럩-P;5J 2 cju=gga#ƣř={9;*&lH' 3)v,h)&6=G!2TЮΧ9T4уJh""Ei7 Lt,lCBфՌ6m(Lik/W]fT>8{)MhNM4 -7e`@kO$g -;N"N !I4qh~oZMEHv#6dA%w!16MACZ֞k&T^< :8;{xMDHd_PDb҆DN>Y!^͞@{l"BD=8qF"hp4>_9%a`dd-x j&C( 10dE;ebΣArF5Zq{GC~`&2@ .  227ßȴz. -" *24rJ)F5VQ- Z›R -Z`/(CTCY3V -(<M蔅+vn ١|1 -R7~CJH~CsH#IENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/view-pages-overview-24.png b/qtbase/src/printsupport/dialogs/images/view-pages-overview-24.png --- a/qtbase/src/printsupport/dialogs/images/view-pages-overview-24.png 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/src/printsupport/dialogs/images/view-pages-overview-24.png 2022-01-25 17:23:44.191496122 +0000 @@ -0,0 +1,4 @@ +PNG + + IHDRotEXtSoftwareAdobe ImageReadyqe<(IDAT8퓱JA$"Fb!ACUw1 RB;XݙgPHD>$IItlޅ1P):s0dTt:V:6@vg 0< tTd ?5Ёp." va/z=^Yl[i2 +vU@3b8.{`iq~<,5#xosu~T@C) A62Q1P7_eXںkDIENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/view-pages-overview-32.png b/qtbase/src/printsupport/dialogs/images/view-pages-overview-32.png --- a/qtbase/src/printsupport/dialogs/images/view-pages-overview-32.png 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/src/printsupport/dialogs/images/view-pages-overview-32.png 2022-01-25 17:23:44.191496122 +0000 @@ -0,0 +1,5 @@ +PNG + + IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATXUJ1m+(bыx;sb^<%C$c&M+ Ml7e`m_\Q#16k^9B9yo;@;n !aZSvTJMoAJC6lgdb1~ڎwPzl=vUO90w@wsY&jGju` +/qPe9.qYr\r<8 + bIENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/view-pages-single-24.png b/qtbase/src/printsupport/dialogs/images/view-pages-single-24.png --- a/qtbase/src/printsupport/dialogs/images/view-pages-single-24.png 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/src/printsupport/dialogs/images/view-pages-single-24.png 2022-01-25 17:23:44.191496122 +0000 @@ -0,0 +1,4 @@ +PNG + + IHDRw=tEXtSoftwareAdobe ImageReadyqe<8IDATHǕVjA=wۄ A fᗹqrbE]Nq5ՏjCSCwߪ>Nu߭I$$HduToA98m!R유&f*^YO?C Vf`$ km'gJ(DY~Gdc> 5n^D?" 0X ;h1YAVa@39nY4kOz*n\Jwf*3LjUGMd#ֹۈOZLQ1UGwwEʪoNwTTĪ[yz薓T5fS5LԐИScUhɎQZE&{d((E݀*8P2>UݪUXP#MEWw,# pkg;)Fӡ'F͔DպK)DSDS ~-mv +%*DwSKhjX!Ȁ[2,!ƨZzP"Dd=(Z%K)D2$"[/?ٹz_~IENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/view-pages-single-32.png b/qtbase/src/printsupport/dialogs/images/view-pages-single-32.png --- a/qtbase/src/printsupport/dialogs/images/view-pages-single-32.png 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/src/printsupport/dialogs/images/view-pages-single-32.png 2022-01-25 17:23:44.191496122 +0000 @@ -0,0 +1,4 @@ +PNG + + IHDR szzIDATx^WjAݛQQ\EA$>>ŋ/`z_D$A[eM>tVUO_WՕ.q7wj>2hQ'µq6>|qh0&o#8487'm#{fwoH1DV(@Hzk衸akk,( (kyf!@RhZ J*hi8wbrKhYpɽKaCH9uu-˂׼i"ľT<&x\ ;dB$Yjl N-?Zю7)`#f3+2TwCf!7~?Qӏl ,n.bpi!Ɉ$5pæ$H&m2!j@w.&!CVg6MZi@f/40erB^j <ʩ<܇P3N{c'Qz§S7Mu7hof+o+/>48]ڤkފc +s^@LAk {t?Anマm_ɐZgɭcIENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/zoom-fit-page-24.png b/qtbase/src/printsupport/dialogs/images/zoom-fit-page-24.png --- a/qtbase/src/printsupport/dialogs/images/zoom-fit-page-24.png 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/src/printsupport/dialogs/images/zoom-fit-page-24.png 2022-01-25 17:23:44.192496118 +0000 @@ -0,0 +1,12 @@ +PNG + + IHDRw=tEXtSoftwareAdobe ImageReadyqe<{IDATHDžV[OAހJ˥U +)((E%B|/'fF|@%b@DITXnPn$ә9ߜs +tyn1_t=lky8 3>fYfU G31`pMG cpַwWFꀙ}TfeGF*Hled*"Eڌ0FS&}Yĕ}j + +?C&g2D)MY,ΎDNHdDBZv})'ppp]$jaKvkըUn/YЖZLsuTp@.Eŀu\%%&.T]0j1g :q 9x&C5#ү0"kwĹB=|f)ѐ^NbkHv!Tѳ ΠXr;i-/i~5UeL|xb=ƃx3d{voFEoY"j:s}<&E| PFo{ĝ"~x)Sxn +ȴROF4pF)#x)1MEOɴ % ^>ܻG EI$;O{ 0N +O +x8 +X"BdE}FQ`/NeeȒ$@ZQu^/\t}o\LYΘIENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/zoom-fit-page-32.png b/qtbase/src/printsupport/dialogs/images/zoom-fit-page-32.png --- a/qtbase/src/printsupport/dialogs/images/zoom-fit-page-32.png 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/src/printsupport/dialogs/images/zoom-fit-page-32.png 2022-01-25 17:23:44.192496118 +0000 @@ -0,0 +1,12 @@ +PNG + + IHDR szzIDATx^WYh\e{LI%MLkZUJ_%VA]E|WIDAEӊR Ғt$N'3̽l=l9744\<$sS{cǯȂ"xAEӭU^J-wA2XXSύ:}max>ؖWA{v+4㍓iaJ +WOcts,r;n;xgZ"XB0:G8ˋH$!+cxiWzU}DK1 5 O 12n."+1NMD^8JH 24kxjz)xnl2Me5Oq d=+v^|u 2)gQ+ YΙ'U +ܷUX؉C +%P&WkJg =V,/ +zc>vQM&Z8—\Lb\ h@T#JG'fA` aPh\Q(B!1%WW oRq bj8DsPO1x:`-Np0 Z7_S=<{yO#0sk8,-ƶ𚯸!\\༔yh @BSXTi"2c֞)3IENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/zoom-fit-width-24.png b/qtbase/src/printsupport/dialogs/images/zoom-fit-width-24.png --- a/qtbase/src/printsupport/dialogs/images/zoom-fit-width-24.png 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/src/printsupport/dialogs/images/zoom-fit-width-24.png 2022-01-25 17:23:44.192496118 +0000 @@ -0,0 +1,5 @@ +PNG + + IHDRw=tEXtSoftwareAdobe ImageReadyqe<dIDATHǍVϫNA~ΙE~$Š(+) +e_KY!Fn/) ~^X̯w̹LMs9}yiǽsI i}dkm/sGw?=B8dUjEp<|6ld  +^@g}G}3F%(7bY$,>|HY3Bum\ +D2cAִJC`>E((:ȍDO1,:͠-@~e\rWh7F03's|}PT/%BH|;|%V~Wn<n2X74@%Bl/ޯ^Z8#浻/01 {R%b Ο8=;y#+ޮmq>lvi̤kp,^8yV\'",MCVJH|f 2Ѝyd޸+R]2 + :cX^ k4:1c ܋n`DmЙc u+/Rd1-i#@gx$`Lm:t{w4_$a hJIENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/images/zoom-fit-width-32.png b/qtbase/src/printsupport/dialogs/images/zoom-fit-width-32.png --- a/qtbase/src/printsupport/dialogs/images/zoom-fit-width-32.png 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/src/printsupport/dialogs/images/zoom-fit-width-32.png 2022-01-25 17:23:44.192496118 +0000 @@ -0,0 +1,6 @@ +PNG + + IHDR szztEXtSoftwareAdobe ImageReadyqe<IDATXõWKoMQ*+(iZ4 `h @ H@ hH'IE<H%V<ڏs &<^Z'#  ܵwgxzE5wB$P @x[F#{(LbQݷ|0>D`}d<|ؼh;$:B-4Ha2zju9># +f|-mZ9:y1oR=e2ec$fj_,ϕ'!AżdP"`(p9%"{ҬQMGb&귺7\Sf'ݗ'_ں +QPVps|d722+_cN@Oq#**|Zĵ{oW/ ߸k?̲ mRLOgü .?ߌuMJ#C-9Pz7;;=`b$%vmF2^ggw]<ՌSkٶ^O-(rztt p:`x]l@T'i80f1s6 'TєR alݲ[OY6~68yh[tY[ VZlǹ]lX"kE3Ga$ѓ^E RCjIENDB` \ No newline at end of file diff -Naur a/qtbase/src/printsupport/dialogs/qprintdialog.qrc b/qtbase/src/printsupport/dialogs/qprintdialog.qrc --- a/qtbase/src/printsupport/dialogs/qprintdialog.qrc 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/printsupport/dialogs/qprintdialog.qrc 2022-01-25 17:23:44.192496118 +0000 @@ -1,9 +1,9 @@ -images/fit-page-24.png -images/fit-page-32.png -images/fit-width-24.png -images/fit-width-32.png +images/zoom-fit-page-24.png +images/zoom-fit-page-32.png +images/zoom-fit-width-24.png +images/zoom-fit-width-32.png images/go-first-24.png images/go-first-32.png images/go-last-24.png @@ -18,14 +18,14 @@ images/layout-portrait-32.png images/page-setup-24.png images/page-setup-32.png -images/print-24.png -images/print-32.png -images/view-page-multi-24.png -images/view-page-multi-32.png -images/view-page-one-24.png -images/view-page-one-32.png -images/view-page-sided-24.png -images/view-page-sided-32.png +images/printer-24.png +images/printer-32.png +images/view-pages-overview-24.png +images/view-pages-overview-32.png +images/view-pages-single-24.png +images/view-pages-single-32.png +images/view-pages-facing-24.png +images/view-pages-facing-32.png images/zoom-in-24.png images/zoom-in-32.png images/zoom-out-24.png diff -Naur a/qtbase/src/printsupport/dialogs/qprintdialog_unix.cpp b/qtbase/src/printsupport/dialogs/qprintdialog_unix.cpp --- a/qtbase/src/printsupport/dialogs/qprintdialog_unix.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/printsupport/dialogs/qprintdialog_unix.cpp 2022-01-25 17:23:44.152496262 +0000 @@ -1184,6 +1184,8 @@ widget.printers->insertSeparator(widget.printers->count()); widget.printers->addItem(QPrintDialog::tr("Print to File (PDF)")); filePrintersAdded = true; + if (widget.printers->count() == 1) + _q_printerChanged(0); } if (!printToFile && filePrintersAdded) { widget.printers->removeItem(widget.printers->count()-1); diff -Naur a/qtbase/src/printsupport/dialogs/qprintpreviewdialog.cpp b/qtbase/src/printsupport/dialogs/qprintpreviewdialog.cpp --- a/qtbase/src/printsupport/dialogs/qprintpreviewdialog.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/printsupport/dialogs/qprintpreviewdialog.cpp 2022-01-25 17:23:44.192496118 +0000 @@ -352,7 +352,7 @@ static inline void qt_setupActionIcon(QAction *action, QLatin1String name) { QLatin1String imagePrefix(":/qt-project.org/dialogs/qprintpreviewdialog/images/"); - QIcon icon; + QIcon icon = QIcon::fromTheme(name); icon.addFile(imagePrefix + name + QLatin1String("-24.png"), QSize(24, 24)); icon.addFile(imagePrefix + name + QLatin1String("-32.png"), QSize(32, 32)); action->setIcon(icon); @@ -383,8 +383,8 @@ fitPageAction->setObjectName(QLatin1String("fitPageAction")); fitWidthAction->setCheckable(true); fitPageAction->setCheckable(true); - qt_setupActionIcon(fitWidthAction, QLatin1String("fit-width")); - qt_setupActionIcon(fitPageAction, QLatin1String("fit-page")); + qt_setupActionIcon(fitWidthAction, QLatin1String("zoom-fit-width")); + qt_setupActionIcon(fitPageAction, QLatin1String("zoom-fit-page")); QObject::connect(fitGroup, SIGNAL(triggered(QAction*)), q, SLOT(_q_fit(QAction*))); // Zoom @@ -410,9 +410,9 @@ singleModeAction = modeGroup->addAction(QCoreApplication::translate("QPrintPreviewDialog", "Show single page")); facingModeAction = modeGroup->addAction(QCoreApplication::translate("QPrintPreviewDialog", "Show facing pages")); overviewModeAction = modeGroup->addAction(QCoreApplication::translate("QPrintPreviewDialog", "Show overview of all pages")); - qt_setupActionIcon(singleModeAction, QLatin1String("view-page-one")); - qt_setupActionIcon(facingModeAction, QLatin1String("view-page-sided")); - qt_setupActionIcon(overviewModeAction, QLatin1String("view-page-multi")); + qt_setupActionIcon(singleModeAction, QLatin1String("view-pages-single")); + qt_setupActionIcon(facingModeAction, QLatin1String("view-pages-facing")); + qt_setupActionIcon(overviewModeAction, QLatin1String("view-pages-overview")); singleModeAction->setObjectName(QLatin1String("singleModeAction")); facingModeAction->setObjectName(QLatin1String("facingModeAction")); overviewModeAction->setObjectName(QLatin1String("overviewModeAction")); @@ -426,7 +426,7 @@ printerGroup = new QActionGroup(q); printAction = printerGroup->addAction(QCoreApplication::translate("QPrintPreviewDialog", "Print")); pageSetupAction = printerGroup->addAction(QCoreApplication::translate("QPrintPreviewDialog", "Page setup")); - qt_setupActionIcon(printAction, QLatin1String("print")); + qt_setupActionIcon(printAction, QLatin1String("printer")); qt_setupActionIcon(pageSetupAction, QLatin1String("page-setup")); QObject::connect(printAction, SIGNAL(triggered(bool)), q, SLOT(_q_print())); QObject::connect(pageSetupAction, SIGNAL(triggered(bool)), q, SLOT(_q_pageSetup())); diff -Naur a/qtbase/src/src.pro b/qtbase/src/src.pro --- a/qtbase/src/src.pro 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/src.pro 2022-01-25 17:23:44.115496395 +0000 @@ -100,6 +100,9 @@ src_3rdparty_pcre2.subdir = $$PWD/3rdparty/pcre2 src_3rdparty_pcre2.target = sub-3rdparty-pcre2 +src_3rdparty_libjpeg.subdir = $$PWD/3rdparty/libjpeg +src_3rdparty_libjpeg.target = sub-3rdparty-libjpeg + src_3rdparty_harfbuzzng.subdir = $$PWD/3rdparty/harfbuzz-ng src_3rdparty_harfbuzzng.target = sub-3rdparty-harfbuzzng src_3rdparty_harfbuzzng.depends = src_corelib # for the Qt atomics @@ -204,6 +207,10 @@ SUBDIRS += src_angle src_gui.depends += src_angle } + qtConfig(jpeg):!qtConfig(system-jpeg) { + SUBDIRS += src_3rdparty_libjpeg + src_plugins.depends = src_3rdparty_libjpeg + } qtConfig(png):!qtConfig(system-png) { SUBDIRS += src_3rdparty_libpng src_3rdparty_freetype.depends += src_3rdparty_libpng diff -Naur a/qtbase/src/testlib/qabstractitemmodeltester.cpp b/qtbase/src/testlib/qabstractitemmodeltester.cpp --- a/qtbase/src/testlib/qabstractitemmodeltester.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/testlib/qabstractitemmodeltester.cpp 2022-01-25 17:23:44.148496276 +0000 @@ -438,7 +438,7 @@ // when asked for the parent of an invalid index. MODELTESTER_VERIFY(!model->parent(QModelIndex()).isValid()); - if (!model->hasChildren()) + if (model->rowCount() == 0 || model->columnCount() == 0) return; // Column 0 | Column 1 | @@ -449,11 +449,12 @@ // Common error test #1, make sure that a top level index has a parent // that is a invalid QModelIndex. QModelIndex topIndex = model->index(0, 0, QModelIndex()); + MODELTESTER_VERIFY(topIndex.isValid()); MODELTESTER_VERIFY(!model->parent(topIndex).isValid()); // Common error test #2, make sure that a second level index has a parent // that is the first level index. - if (model->hasChildren(topIndex)) { + if (model->rowCount(topIndex) > 0 && model->columnCount(topIndex) > 0) { QModelIndex childIndex = model->index(0, 0, topIndex); MODELTESTER_VERIFY(childIndex.isValid()); MODELTESTER_COMPARE(model->parent(childIndex), topIndex); @@ -465,7 +466,7 @@ if (model->hasIndex(0, 1)) { QModelIndex topIndex1 = model->index(0, 1, QModelIndex()); MODELTESTER_VERIFY(topIndex1.isValid()); - if (model->hasChildren(topIndex) && model->hasChildren(topIndex1)) { + if (model->rowCount(topIndex) > 0 && model->rowCount(topIndex1) > 0) { QModelIndex childIndex = model->index(0, 0, topIndex); MODELTESTER_VERIFY(childIndex.isValid()); QModelIndex childIndex1 = model->index(0, 0, topIndex1); @@ -583,7 +584,7 @@ */ void QAbstractItemModelTesterPrivate::data() { - if (!model->hasChildren()) + if (model->rowCount() == 0 || model->columnCount() == 0) return; MODELTESTER_VERIFY(model->index(0, 0).isValid()); @@ -719,12 +720,12 @@ Changing c; c.parent = parent; c.oldSize = model->rowCount(parent); - if (start > 0) { + if (start > 0 && model->columnCount(parent) > 0) { const QModelIndex startIndex = model->index(start - 1, 0, parent); MODELTESTER_VERIFY(startIndex.isValid()); c.last = model->data(startIndex); } - if (end < c.oldSize - 1) { + if (end < c.oldSize - 1 && model->columnCount(parent) > 0) { const QModelIndex endIndex = model->index(end + 1, 0, parent); MODELTESTER_VERIFY(endIndex.isValid()); c.next = model->data(endIndex); diff -Naur a/qtbase/src/testlib/qabstracttestlogger.cpp b/qtbase/src/testlib/qabstracttestlogger.cpp --- a/qtbase/src/testlib/qabstracttestlogger.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/testlib/qabstracttestlogger.cpp 2022-01-25 17:23:44.071496553 +0000 @@ -90,6 +90,11 @@ stream = nullptr; } +bool QAbstractTestLogger::isLoggingToStdout() const +{ + return stream == stdout; +} + void QAbstractTestLogger::filterUnprintable(char *str) const { unsigned char *idx = reinterpret_cast(str); diff -Naur a/qtbase/src/testlib/qabstracttestlogger_p.h b/qtbase/src/testlib/qabstracttestlogger_p.h --- a/qtbase/src/testlib/qabstracttestlogger_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/testlib/qabstracttestlogger_p.h 2022-01-25 17:23:44.076496535 +0000 @@ -51,7 +51,8 @@ // We mean it. // -#include +#include + #include #include @@ -60,7 +61,7 @@ class QBenchmarkResult; class QTestData; -class QAbstractTestLogger +class Q_TESTLIB_EXPORT QAbstractTestLogger { public: enum IncidentTypes { @@ -106,6 +107,8 @@ virtual void addMessage(MessageTypes type, const QString &message, const char *file = nullptr, int line = 0) = 0; + bool isLoggingToStdout() const; + void outputString(const char *msg); protected: @@ -182,7 +185,7 @@ namespace QTestPrivate { enum IdentifierPart { TestObject = 0x1, TestFunction = 0x2, TestDataTag = 0x4, AllParts = 0xFFFF }; - void generateTestIdentifier(QTestCharBuffer *identifier, int parts = AllParts); + void Q_TESTLIB_EXPORT generateTestIdentifier(QTestCharBuffer *identifier, int parts = AllParts); } QT_END_NAMESPACE diff -Naur a/qtbase/src/testlib/qtestcase.qdoc b/qtbase/src/testlib/qtestcase.qdoc --- a/qtbase/src/testlib/qtestcase.qdoc 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/testlib/qtestcase.qdoc 2022-01-25 17:23:44.100496449 +0000 @@ -1258,7 +1258,7 @@ should typically use createTouchDevice() to initialize a QTouchDevice member variable in your test case class, and use the same instance for all tests. - \sa QTest::QTouchEventSequence + \sa QTest::QTouchEventSequence, touchEvent() */ /*! @@ -1394,6 +1394,9 @@ QTouchEventSequence is called (ie when the object returned runs out of scope), unless \a autoCommit is set to false. When \a autoCommit is false, commit() has to be called manually. + + \l createTouchDevice() can be called to create a test touch device for use with this + function. */ /*! @@ -1410,6 +1413,9 @@ QTouchEventSequence is called (ie when the object returned runs out of scope), unless \a autoCommit is set to false. When \a autoCommit is false, commit() has to be called manually. + + \l createTouchDevice() can be called to create a test touch device for use with this + function. */ // Internals of qtestmouse.h: diff -Naur a/qtbase/src/testlib/qtestlog.cpp b/qtbase/src/testlib/qtestlog.cpp --- a/qtbase/src/testlib/qtestlog.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/testlib/qtestlog.cpp 2022-01-25 17:23:44.076496535 +0000 @@ -99,7 +99,7 @@ static QElapsedTimer elapsedFunctionTime; static QElapsedTimer elapsedTotalTime; -#define FOREACH_TEST_LOGGER for (QAbstractTestLogger *logger : QTest::loggers) +#define FOREACH_TEST_LOGGER for (QAbstractTestLogger *logger : *QTest::loggers()) namespace QTest { @@ -168,8 +168,7 @@ static IgnoreResultList *ignoreResultList = nullptr; - static QVector loggers; - static bool loggerUsingStdout = false; + Q_GLOBAL_STATIC(QVector, loggers) static int verbosity = 0; static int maxWarnings = 2002; @@ -430,8 +429,7 @@ logger->stopLogging(); delete logger; } - QTest::loggers.clear(); - QTest::loggerUsingStdout = false; + QTest::loggers()->clear(); saveCoverageTool(QTestResult::currentAppName(), failCount() != 0, QTestLog::installedTestCoverage()); } @@ -439,8 +437,6 @@ { if (filename && strcmp(filename, "-") == 0) filename = nullptr; - if (!filename) - QTest::loggerUsingStdout = true; QAbstractTestLogger *logger = nullptr; switch (mode) { @@ -478,17 +474,36 @@ } QTEST_ASSERT(logger); - QTest::loggers.append(logger); + addLogger(logger); +} + +/*! + \internal + + Adds a new logger to the set of loggers that will be used + to report incidents and messages during testing. + + The function takes ownership of the logger. +*/ +void QTestLog::addLogger(QAbstractTestLogger *logger) +{ + QTEST_ASSERT(logger); + QTest::loggers()->append(logger); } int QTestLog::loggerCount() { - return QTest::loggers.size(); + return QTest::loggers()->size(); } bool QTestLog::loggerUsingStdout() { - return QTest::loggerUsingStdout; + FOREACH_TEST_LOGGER { + if (logger->isLoggingToStdout()) + return true; + } + + return false; } void QTestLog::warn(const char *msg, const char *file, int line) diff -Naur a/qtbase/src/testlib/qtestlog_p.h b/qtbase/src/testlib/qtestlog_p.h --- a/qtbase/src/testlib/qtestlog_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/testlib/qtestlog_p.h 2022-01-25 17:23:44.076496535 +0000 @@ -64,6 +64,7 @@ class QBenchmarkResult; class QRegularExpression; class QTestData; +class QAbstractTestLogger; class Q_TESTLIB_EXPORT QTestLog { @@ -115,6 +116,7 @@ static void stopLogging(); static void addLogger(LogMode mode, const char *filename); + static void addLogger(QAbstractTestLogger *logger); static int loggerCount(); static bool loggerUsingStdout(); diff -Naur a/qtbase/src/tools/androiddeployqt/main.cpp b/qtbase/src/tools/androiddeployqt/main.cpp --- a/qtbase/src/tools/androiddeployqt/main.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/tools/androiddeployqt/main.cpp 2022-01-25 17:23:44.139496309 +0000 @@ -174,7 +174,7 @@ QString versionName; QString versionCode; QByteArray minSdkVersion{"21"}; - QByteArray targetSdkVersion{"28"}; + QByteArray targetSdkVersion{"29"}; // lib c++ path QString stdCppPath; @@ -1801,7 +1801,7 @@ // The qmlimportscanner sometimes outputs paths that do not exist. if (!info.exists()) { if (options->verbose) - fprintf(stdout, " -- Skipping because file does not exist.\n"); + fprintf(stdout, " -- Skipping because path does not exist.\n"); continue; } @@ -1811,7 +1811,7 @@ if (absolutePath.startsWith(rootPath)) { if (options->verbose) - fprintf(stdout, " -- Skipping because file is in QML root path.\n"); + fprintf(stdout, " -- Skipping because path is in QML root path.\n"); continue; } diff -Naur a/qtbase/src/tools/moc/generator.cpp b/qtbase/src/tools/moc/generator.cpp --- a/qtbase/src/tools/moc/generator.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/tools/moc/generator.cpp 2022-01-25 17:23:44.072496549 +0000 @@ -1207,7 +1207,7 @@ } else { fprintf(out, " auto *_t = reinterpret_cast<%s *>(_o);\n", cdef->classname.constData()); } - fprintf(out, " Q_UNUSED(_t)\n"); + fprintf(out, " (void)_t;\n"); fprintf(out, " switch (_id) {\n"); for (int methodindex = 0; methodindex < methodList.size(); ++methodindex) { const FunctionDef &f = methodList.at(methodindex); @@ -1313,7 +1313,7 @@ fprintf(out, " }\n }\n"); } if (!anythingUsed) - fprintf(out, " Q_UNUSED(result);\n"); + fprintf(out, " (void)result;\n"); fprintf(out, " }"); needElse = true; } @@ -1372,7 +1372,7 @@ } else { fprintf(out, " auto *_t = reinterpret_cast<%s *>(_o);\n", cdef->classname.constData()); } - fprintf(out, " Q_UNUSED(_t)\n"); + fprintf(out, " (void)_t;\n"); if (needTempVarForGet) fprintf(out, " void *_v = _a[0];\n"); fprintf(out, " switch (_id) {\n"); @@ -1418,7 +1418,7 @@ } else { fprintf(out, " auto *_t = reinterpret_cast<%s *>(_o);\n", cdef->classname.constData()); } - fprintf(out, " Q_UNUSED(_t)\n"); + fprintf(out, " (void)_t;\n"); fprintf(out, " void *_v = _a[0];\n"); fprintf(out, " switch (_id) {\n"); for (int propindex = 0; propindex < cdef->propertyList.size(); ++propindex) { @@ -1474,7 +1474,7 @@ } else { fprintf(out, " %s *_t = reinterpret_cast<%s *>(_o);\n", cdef->classname.constData(), cdef->classname.constData()); } - fprintf(out, " Q_UNUSED(_t)\n"); + fprintf(out, " (void)_t;\n"); fprintf(out, " switch (_id) {\n"); for (int propindex = 0; propindex < cdef->propertyList.size(); ++propindex) { const PropertyDef &p = cdef->propertyList.at(propindex); @@ -1499,14 +1499,14 @@ fprintf(out, "\n"); if (methodList.isEmpty()) { - fprintf(out, " Q_UNUSED(_o);\n"); + fprintf(out, " (void)_o;\n"); if (cdef->constructorList.isEmpty() && automaticPropertyMetaTypes.isEmpty() && methodsWithAutomaticTypesHelper(methodList).isEmpty()) { - fprintf(out, " Q_UNUSED(_id);\n"); - fprintf(out, " Q_UNUSED(_c);\n"); + fprintf(out, " (void)_id;\n"); + fprintf(out, " (void)_c;\n"); } } if (!isUsed_a) - fprintf(out, " Q_UNUSED(_a);\n"); + fprintf(out, " (void)_a;\n"); fprintf(out, "}\n\n"); } diff -Naur a/qtbase/src/tools/moc/moc.cpp b/qtbase/src/tools/moc/moc.cpp --- a/qtbase/src/tools/moc/moc.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/tools/moc/moc.cpp 2022-01-25 17:23:44.077496531 +0000 @@ -261,6 +261,12 @@ return type; } +enum class IncludeState { + IncludeBegin, + IncludeEnd, + NoInclude, +}; + bool Moc::parseEnum(EnumDef *def) { bool isTypdefEnum = false; // typedef enum { ... } Foo; @@ -281,18 +287,28 @@ } if (!test(LBRACE)) return false; - auto handleInclude = [this]() { - if (test(MOC_INCLUDE_BEGIN)) + auto handleInclude = [this]() -> IncludeState { + bool hadIncludeBegin = false; + if (test(MOC_INCLUDE_BEGIN)) { currentFilenames.push(symbol().unquotedLexem()); + // we do not return early to handle empty headers in one go + hadIncludeBegin = true; + } if (test(NOTOKEN)) { next(MOC_INCLUDE_END); currentFilenames.pop(); + return IncludeState::IncludeEnd; } + if (hadIncludeBegin) + return IncludeState::IncludeBegin; + else + return IncludeState::NoInclude; }; do { if (lookup() == RBRACE) // accept trailing comma break; - handleInclude(); + if ( handleInclude() == IncludeState::IncludeEnd) + continue; next(IDENTIFIER); def->values += lexem(); handleInclude(); diff -Naur a/qtbase/src/tools/moc/preprocessor.cpp b/qtbase/src/tools/moc/preprocessor.cpp --- a/qtbase/src/tools/moc/preprocessor.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/tools/moc/preprocessor.cpp 2022-01-25 17:23:44.122496370 +0000 @@ -886,7 +886,15 @@ int value = unary_expression(); switch (next()) { case PP_STAR: - return value * multiplicative_expression(); + { + // get well behaved overflow behavior by converting to long + // and then back to int + // NOTE: A conformant preprocessor would need to work intmax_t/ + // uintmax_t according to [cpp.cond], 19.1 §10 + // But we're not compliant anyway + qint64 result = qint64(value) * qint64(multiplicative_expression()); + return int(result); + } case PP_PERCENT: { int remainder = multiplicative_expression(); diff -Naur a/qtbase/src/widgets/accessible/complexwidgets.cpp b/qtbase/src/widgets/accessible/complexwidgets.cpp --- a/qtbase/src/widgets/accessible/complexwidgets.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/accessible/complexwidgets.cpp 2022-01-25 17:23:44.138496312 +0000 @@ -398,9 +398,24 @@ { if (actionName == showMenuAction() || actionName == pressAction()) { if (comboBox()->view()->isVisible()) { +#if defined(Q_OS_ANDROID) + const auto list = child(0)->tableInterface(); + if (list && list->selectedRowCount() > 0) { + comboBox()->setCurrentIndex(list->selectedRows().at(0)); + } + comboBox()->setFocus(); +#endif comboBox()->hidePopup(); } else { comboBox()->showPopup(); +#if defined(Q_OS_ANDROID) + const auto list = child(0)->tableInterface(); + if (list && list->selectedRowCount() > 0) { + auto selectedCells = list->selectedCells(); + QAccessibleEvent ev(selectedCells.at(0),QAccessible::Focus); + QAccessible::updateAccessibility(&ev); + } +#endif } } } diff -Naur a/qtbase/src/widgets/accessible/itemviews.cpp b/qtbase/src/widgets/accessible/itemviews.cpp --- a/qtbase/src/widgets/accessible/itemviews.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/accessible/itemviews.cpp 2022-01-25 17:23:44.138496312 +0000 @@ -934,10 +934,23 @@ void QAccessibleTableCell::doAction(const QString& actionName) { if (actionName == toggleAction()) { - if (isSelected()) +#if defined(Q_OS_ANDROID) + QAccessibleInterface *parentInterface = parent(); + while (parentInterface){ + if (parentInterface->role() == QAccessible::ComboBox) { + selectCell(); + parentInterface->actionInterface()->doAction(pressAction()); + return; + } else { + parentInterface = parentInterface->parent(); + } + } +#endif + if (isSelected()) { unselectCell(); - else + } else { selectCell(); + } } } diff -Naur a/qtbase/src/widgets/doc/snippets/layouts/layouts.cpp b/qtbase/src/widgets/doc/snippets/layouts/layouts.cpp --- a/qtbase/src/widgets/doc/snippets/layouts/layouts.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/doc/snippets/layouts/layouts.cpp 2022-01-25 17:23:44.067496567 +0000 @@ -67,7 +67,7 @@ //! [2] //! [3] - QHBoxLayout *layout = new QHBoxLayout; + QHBoxLayout *layout = new QHBoxLayout(window); //! [3] //! [4] layout->addWidget(button1); layout->addWidget(button2); @@ -75,7 +75,6 @@ layout->addWidget(button4); layout->addWidget(button5); - window->setLayout(layout); //! [4] window->setWindowTitle("QHBoxLayout"); //! [5] @@ -96,7 +95,7 @@ //! [8] //! [9] - QVBoxLayout *layout = new QVBoxLayout; + QVBoxLayout *layout = new QVBoxLayout(window); //! [9] //! [10] layout->addWidget(button1); layout->addWidget(button2); @@ -104,7 +103,6 @@ layout->addWidget(button4); layout->addWidget(button5); - window->setLayout(layout); //! [10] window->setWindowTitle("QVBoxLayout"); //! [11] @@ -125,7 +123,7 @@ //! [14] //! [15] - QGridLayout *layout = new QGridLayout; + QGridLayout *layout = new QGridLayout(window); //! [15] //! [16] layout->addWidget(button1, 0, 0); layout->addWidget(button2, 0, 1); @@ -133,7 +131,6 @@ layout->addWidget(button4, 2, 0); layout->addWidget(button5, 2, 1); - window->setLayout(layout); //! [16] window->setWindowTitle("QGridLayout"); //! [17] @@ -156,14 +153,13 @@ QLineEdit *lineEdit3 = new QLineEdit(); //! [20] //! [21] - QFormLayout *layout = new QFormLayout; + QFormLayout *layout = new QFormLayout(window); //! [21] //! [22] layout->addRow(button1, lineEdit1); layout->addRow(button2, lineEdit2); layout->addRow(button3, lineEdit3); - window->setLayout(layout); //! [22] window->setWindowTitle("QFormLayout"); //! [23] diff -Naur a/qtbase/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc b/qtbase/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc --- a/qtbase/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/doc/src/widgets-and-layouts/stylesheet.qdoc 2022-01-25 17:23:44.104496434 +0000 @@ -3018,7 +3018,7 @@ \li \c px: pixels \li \c pt: the size of one point (i.e., 1/72 of an inch) \li \c em: the em width of the font (i.e., the width of 'M') - \li \c ex: the ex width of the font (i.e., the height of 'x') + \li \c ex: the x-height of the font (i.e., the height of 'x') \endlist However, Qt is limited to font sizes in \c pt and \c px and any other diff -Naur a/qtbase/src/widgets/graphicsview/qgraphicsproxywidget.cpp b/qtbase/src/widgets/graphicsview/qgraphicsproxywidget.cpp --- a/qtbase/src/widgets/graphicsview/qgraphicsproxywidget.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/graphicsview/qgraphicsproxywidget.cpp 2022-01-25 17:23:44.077496531 +0000 @@ -1389,6 +1389,11 @@ break; } + // QTBUG-88016 + if (d->widget && d->widget->focusWidget() + && d->widget->focusWidget()->testAttribute(Qt::WA_InputMethodEnabled)) + QApplication::inputMethod()->reset(); + d->proxyIsGivingFocus = false; } @@ -1404,8 +1409,14 @@ if (d->widget) { // We need to explicitly remove subfocus from the embedded widget's // focus widget. - if (QWidget *focusWidget = d->widget->focusWidget()) + if (QWidget *focusWidget = d->widget->focusWidget()) { + // QTBUG-88016 proxyWidget set QTextEdit(QLineEdit etc.) when input preview text, + // inputMethod should be reset when proxyWidget lost focus + if (focusWidget && focusWidget->testAttribute(Qt::WA_InputMethodEnabled)) + QApplication::inputMethod()->reset(); + d->removeSubFocusHelper(focusWidget, event->reason()); + } } } diff -Naur a/qtbase/src/widgets/itemviews/qheaderview.cpp b/qtbase/src/widgets/itemviews/qheaderview.cpp --- a/qtbase/src/widgets/itemviews/qheaderview.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/itemviews/qheaderview.cpp 2022-01-25 17:23:44.120496377 +0000 @@ -2528,7 +2528,7 @@ int handle = d->sectionHandleAt(pos); d->originalSize = -1; // clear the stored original size if (handle == -1) { - d->pressed = logicalIndexAt(pos); + d->firstPressed = d->pressed = logicalIndexAt(pos); if (d->clickableSections) emit sectionPressed(d->pressed); @@ -2576,7 +2576,7 @@ // just before the mouseReleaseEvent and resets the state. This prevents // column dragging from working. So this code is disabled under Cocoa. d->state = QHeaderViewPrivate::NoState; - d->pressed = -1; + d->firstPressed = d->pressed = -1; } switch (d->state) { case QHeaderViewPrivate::ResizeSection: { @@ -2705,9 +2705,27 @@ case QHeaderViewPrivate::NoState: if (d->clickableSections) { int section = logicalIndexAt(pos); - if (section != -1 && section == d->pressed) { - d->flipSortIndicator(section); - emit sectionClicked(section); + if (section != -1 && section == d->firstPressed) { + QRect firstPressedSectionRect; + switch (d->orientation) { + case Qt::Horizontal: + firstPressedSectionRect.setRect(sectionViewportPosition(d->firstPressed), + 0, + sectionSize(d->firstPressed), + d->viewport->height()); + break; + case Qt::Vertical: + firstPressedSectionRect.setRect(0, + sectionViewportPosition(d->firstPressed), + d->viewport->width(), + sectionSize(d->firstPressed)); + break; + }; + + if (firstPressedSectionRect.contains(e->pos())) { + d->flipSortIndicator(section); + emit sectionClicked(section); + } } if (d->pressed != -1) updateSection(d->pressed); @@ -2721,7 +2739,7 @@ break; } d->state = QHeaderViewPrivate::NoState; - d->pressed = -1; + d->firstPressed = d->pressed = -1; } /*! diff -Naur a/qtbase/src/widgets/itemviews/qheaderview_p.h b/qtbase/src/widgets/itemviews/qheaderview_p.h --- a/qtbase/src/widgets/itemviews/qheaderview_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/itemviews/qheaderview_p.h 2022-01-25 17:23:44.120496377 +0000 @@ -82,6 +82,7 @@ originalSize(-1), section(-1), target(-1), + firstPressed(-1), pressed(-1), hover(-1), length(0), @@ -274,6 +275,7 @@ int originalSize; int section; // used for resizing and moving sections int target; + int firstPressed; int pressed; int hover; diff -Naur a/qtbase/src/widgets/itemviews/qtableview.cpp b/qtbase/src/widgets/itemviews/qtableview.cpp --- a/qtbase/src/widgets/itemviews/qtableview.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/itemviews/qtableview.cpp 2022-01-25 17:23:44.151496265 +0000 @@ -1013,6 +1013,7 @@ int QTableViewPrivate::widthHintForIndex(const QModelIndex &index, int hint, const QStyleOptionViewItem &option) const { Q_Q(const QTableView); + const int oldHint = hint; QWidget *editor = editorForIndex(index).widget.data(); if (editor && persistent.contains(editor)) { hint = qMax(hint, editor->sizeHint().width()); @@ -1021,6 +1022,17 @@ hint = qBound(min, hint, max); } hint = qMax(hint, q->itemDelegate(index)->sizeHint(option, index).width()); + + if (hasSpans()) { + auto span = spans.spanAt(index.column(), index.row()); + if (span && span->m_left == index.column() && span->m_top == index.row()) { + // spans are screwed up when sections are moved + const auto left = logicalColumn(span->m_left); + for (int i = 1; i <= span->width(); ++i) + hint -= q->columnWidth(visualColumn(left + i)); + } + hint = std::max(hint, oldHint); + } return hint; } @@ -1053,6 +1065,11 @@ option.rect.setHeight(height); option.rect.setX(q->columnViewportPosition(index.column())); option.rect.setWidth(q->columnWidth(index.column())); + if (hasSpans()) { + auto span = spans.spanAt(index.column(), index.row()); + if (span && span->m_left == index.column() && span->m_top == index.row()) + option.rect.setWidth(std::max(option.rect.width(), visualSpanRect(*span).width())); + } // 1px less space when grid is shown (see drawCell) if (showGrid) option.rect.setWidth(option.rect.width() - 1); @@ -2944,6 +2961,8 @@ updateGeometries(); killTimer(d->columnResizeTimerID); d->columnResizeTimerID = 0; + } else { + updateEditorGeometries(); } QRect rect; @@ -2972,6 +2991,8 @@ updateGeometries(); killTimer(d->rowResizeTimerID); d->rowResizeTimerID = 0; + } else { + updateEditorGeometries(); } int viewportHeight = d->viewport->height(); diff -Naur a/qtbase/src/widgets/itemviews/qtreewidget.cpp b/qtbase/src/widgets/itemviews/qtreewidget.cpp --- a/qtbase/src/widgets/itemviews/qtreewidget.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/itemviews/qtreewidget.cpp 2022-01-25 17:23:44.149496273 +0000 @@ -508,22 +508,18 @@ bool QTreeModel::removeRows(int row, int count, const QModelIndex &parent) { if (count < 1 || row < 0 || (row + count) > rowCount(parent)) return false; - - beginRemoveRows(parent, row, row + count - 1); - - QSignalBlocker blocker(this); - - QTreeWidgetItem *itm = item(parent); + QTreeWidgetItem *parentItem = item(parent); + // if parentItem is valid, begin/end RemoveRows is handled by takeChild below + if (!parentItem) + beginRemoveRows(parent, row, row + count - 1); for (int i = row + count - 1; i >= row; --i) { - QTreeWidgetItem *child = itm ? itm->takeChild(i) : rootItem->children.takeAt(i); + QTreeWidgetItem *child = parentItem ? parentItem->takeChild(i) : rootItem->children.takeAt(i); Q_ASSERT(child); child->view = nullptr; delete child; - child = nullptr; } - blocker.unblock(); - - endRemoveRows(); + if (!parentItem) + endRemoveRows(); return true; } diff -Naur a/qtbase/src/widgets/kernel/qboxlayout.cpp b/qtbase/src/widgets/kernel/qboxlayout.cpp --- a/qtbase/src/widgets/kernel/qboxlayout.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/kernel/qboxlayout.cpp 2022-01-25 17:23:44.067496567 +0000 @@ -548,7 +548,11 @@ Constructs a new QBoxLayout with direction \a dir and parent widget \a parent. - \sa direction() + The layout is set directly as the top-level layout for \a parent. + There can be only one top-level layout for a widget. It is returned + by QWidget::layout(). + + \sa direction(), QWidget::setLayout() */ QBoxLayout::QBoxLayout(Direction dir, QWidget *parent) : QLayout(*new QBoxLayoutPrivate, nullptr, parent) @@ -1232,11 +1236,16 @@ \snippet layouts/layouts.cpp 4 \snippet layouts/layouts.cpp 5 - First, we create the widgets we want in the layout. Then, we - create the QHBoxLayout object and add the widgets into the - layout. Finally, we call QWidget::setLayout() to install the - QHBoxLayout object onto the widget. At that point, the widgets in - the layout are reparented to have \c window as their parent. + First, we create the widgets we want to add to the layout. Then, + we create the QHBoxLayout object, setting \c window as parent by + passing it in the constructor; next we add the widgets to the + layout. \c window will be the parent of the widgets that are + added to the layout. + + If you don't pass parent \c window in the constrcutor, you can + at a later point use QWidget::setLayout() to install the QHBoxLayout + object onto \c window. At that point, the widgets in the layout are + reparented to have \c window as their parent. \image qhboxlayout-with-5-children.png Horizontal box layout with five child widgets @@ -1245,8 +1254,13 @@ /*! - Constructs a new top-level horizontal box with - parent \a parent. + Constructs a new top-level horizontal box with parent \a parent. + + The layout is set directly as the top-level layout for \a parent. + There can be only one top-level layout for a widget. It is returned + by QWidget::layout(). + + \sa QWidget::setLayout() */ QHBoxLayout::QHBoxLayout(QWidget *parent) : QBoxLayout(LeftToRight, parent) @@ -1295,11 +1309,16 @@ \snippet layouts/layouts.cpp 10 \snippet layouts/layouts.cpp 11 - First, we create the widgets we want in the layout. Then, we - create the QVBoxLayout object and add the widgets into the - layout. Finally, we call QWidget::setLayout() to install the - QVBoxLayout object onto the widget. At that point, the widgets in - the layout are reparented to have \c window as their parent. + First, we create the widgets we want to add to the layout. Then, + we create the QVBoxLayout object, setting \c window as parent by + passing it in the constructor; next we add the widgets to the + layout. \c window will be the parent of the widgets that are + added to the layout. + + If you don't pass parent \c window in the constrcutor, you can + at a later point use QWidget::setLayout() to install the QVBoxLayout + object onto \c window. At that point, the widgets in the layout are + reparented to have \c window as their parent. \image qvboxlayout-with-5-children.png Horizontal box layout with five child widgets @@ -1307,8 +1326,13 @@ */ /*! - Constructs a new top-level vertical box with - parent \a parent. + Constructs a new top-level vertical box with parent \a parent. + + The layout is set directly as the top-level layout for \a parent. + There can be only one top-level layout for a widget. It is returned + by QWidget::layout(). + + \sa QWidget::setLayout() */ QVBoxLayout::QVBoxLayout(QWidget *parent) : QBoxLayout(TopToBottom, parent) diff -Naur a/qtbase/src/widgets/kernel/qformlayout.cpp b/qtbase/src/widgets/kernel/qformlayout.cpp --- a/qtbase/src/widgets/kernel/qformlayout.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/kernel/qformlayout.cpp 2022-01-25 17:23:44.067496567 +0000 @@ -1189,6 +1189,10 @@ /*! Constructs a new form layout with the given \a parent widget. + The layout is set directly as the top-level layout for \a parent. + There can be only one top-level layout for a widget. It is returned + by QWidget::layout(). + \sa QWidget::setLayout() */ QFormLayout::QFormLayout(QWidget *parent) diff -Naur a/qtbase/src/widgets/kernel/qgridlayout.cpp b/qtbase/src/widgets/kernel/qgridlayout.cpp --- a/qtbase/src/widgets/kernel/qgridlayout.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/kernel/qgridlayout.cpp 2022-01-25 17:23:44.067496567 +0000 @@ -1073,6 +1073,12 @@ Constructs a new QGridLayout with parent widget, \a parent. The layout has one row and one column initially, and will expand when new items are inserted. + + The layout is set directly as the top-level layout for \a parent. + There can be only one top-level layout for a widget. It is returned + by QWidget::layout(). + + \sa QWidget::setLayout() */ QGridLayout::QGridLayout(QWidget *parent) : QLayout(*new QGridLayoutPrivate, nullptr, parent) diff -Naur a/qtbase/src/widgets/kernel/qstackedlayout.cpp b/qtbase/src/widgets/kernel/qstackedlayout.cpp --- a/qtbase/src/widgets/kernel/qstackedlayout.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/kernel/qstackedlayout.cpp 2022-01-25 17:23:44.105496431 +0000 @@ -44,6 +44,8 @@ #include "private/qwidget_p.h" #include "private/qlayoutengine_p.h" +#include + QT_BEGIN_NAMESPACE class QStackedLayoutPrivate : public QLayoutPrivate @@ -421,13 +423,13 @@ */ void QStackedLayout::addItem(QLayoutItem *item) { + std::unique_ptr guard(item); QWidget *widget = item->widget(); if (Q_UNLIKELY(!widget)) { qWarning("QStackedLayout::addItem: Only widgets can be added"); return; } addWidget(widget); - delete item; } /*! diff -Naur a/qtbase/src/widgets/kernel/qwidget.cpp b/qtbase/src/widgets/kernel/qwidget.cpp --- a/qtbase/src/widgets/kernel/qwidget.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/kernel/qwidget.cpp 2022-01-25 17:23:44.099496452 +0000 @@ -6476,6 +6476,9 @@ QCoreApplication::sendEvent(this, &focusAboutToChange); } + QTLWExtra *extra = window()->d_func()->maybeTopData(); + QObject *originalFocusObject = (extra && extra->window) ? extra->window->focusObject() : nullptr; + QWidget *w = this; while (w) { // Just like setFocus(), we update (clear) the focus_child of our parents @@ -6484,14 +6487,12 @@ w = w->parentWidget(); } - // Since we've unconditionally cleared the focus_child of our parents, we need + // We've potentially cleared the focus_child of our parents, so we need // to report this to the rest of Qt. Note that the focus_child is not the same // thing as the application's focusWidget, which is why this piece of code is - // not inside the hasFocus() block below. - if (QTLWExtra *extra = window()->d_func()->maybeTopData()) { - if (extra->window) - emit extra->window->focusObjectChanged(extra->window->focusObject()); - } + // not inside a hasFocus() block. + if (originalFocusObject && originalFocusObject != extra->window->focusObject()) + emit extra->window->focusObjectChanged(extra->window->focusObject()); #if QT_CONFIG(graphicsview) const auto &topData = d_func()->extra; @@ -11400,7 +11401,7 @@ \brief the widget's description as seen by assistive technologies The accessible description of a widget should convey what a widget does. - While the \l accessibleName should be a short and consise string (e.g. \gui{Save}), + While the \l accessibleName should be a short and concise string (e.g. \gui{Save}), the description should give more context, such as \gui{Saves the current document}. This property has to be \l{Internationalization with Qt}{localized}. diff -Naur a/qtbase/src/widgets/styles/qstyleanimation.cpp b/qtbase/src/widgets/styles/qstyleanimation.cpp --- a/qtbase/src/widgets/styles/qstyleanimation.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/styles/qstyleanimation.cpp 2022-01-25 17:23:44.127496352 +0000 @@ -122,9 +122,9 @@ return currentTime() > _delay; } -void QStyleAnimation::updateCurrentTime(int) +void QStyleAnimation::updateCurrentTime(int time) { - if (++_skip >= _fps) { + if (++_skip >= _fps || time >= duration()) { _skip = 0; if (target() && isUpdateNeeded()) updateTarget(); diff -Naur a/qtbase/src/widgets/styles/qstyle.cpp b/qtbase/src/widgets/styles/qstyle.cpp --- a/qtbase/src/widgets/styles/qstyle.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/styles/qstyle.cpp 2022-01-25 17:23:44.186496140 +0000 @@ -2450,17 +2450,19 @@ const QStyle * QStyle::proxy() const { Q_D(const QStyle); - return d->proxyStyle; + return d->proxyStyle == this ? this : d->proxyStyle->proxy(); } /* \internal This function sets the base style that style calls will be - redirected to. Note that ownership is not transferred. + redirected to. Note that ownership is not transferred. \a style + must be a valid pointer (not nullptr). */ void QStyle::setProxy(QStyle *style) { Q_D(QStyle); + Q_ASSERT(style); d->proxyStyle = style; } diff -Naur a/qtbase/src/widgets/styles/qstylesheetstyle.cpp b/qtbase/src/widgets/styles/qstylesheetstyle.cpp --- a/qtbase/src/widgets/styles/qstylesheetstyle.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/styles/qstylesheetstyle.cpp 2022-01-25 17:23:44.189496129 +0000 @@ -1324,11 +1324,11 @@ path.lineTo(rect.x() + blr.width(), curY); curX = rect.left() + borders[LeftEdge]/2.0; - path.arcTo(curX, rect.bottom() - 2*blr.height() + borders[BottomEdge]/2, + path.arcTo(curX, rect.bottom() - 2*blr.height() + borders[BottomEdge]/2.0, blr.width()*2 - borders[LeftEdge], blr.height()*2 - borders[BottomEdge], 270, -90); path.lineTo(curX, rect.top() + tlr.height()); - path.arcTo(curX, rect.top() + borders[TopEdge]/2, + path.arcTo(curX, rect.top() + borders[TopEdge]/2.0, tlr.width()*2 - borders[LeftEdge], tlr.height()*2 - borders[TopEdge], 180, -90); path.closeSubpath(); @@ -2848,6 +2848,7 @@ if ( cssClass & PseudoClass_Hover || negated & PseudoClass_Hover) { w->setAttribute(Qt::WA_Hover); embeddedWidget(w)->setAttribute(Qt::WA_Hover); + embeddedWidget(w)->setMouseTracking(true); } } diff -Naur a/qtbase/src/widgets/widgets/qcombobox.cpp b/qtbase/src/widgets/widgets/qcombobox.cpp --- a/qtbase/src/widgets/widgets/qcombobox.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/widgets/qcombobox.cpp 2022-01-25 17:23:44.150496269 +0000 @@ -1943,6 +1943,7 @@ view()->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); } QLineEdit *le = new QLineEdit(this); + le->setPalette(palette()); setLineEdit(le); } else { if (style()->styleHint(QStyle::SH_ComboBox_Popup, &opt, this)) { @@ -2761,8 +2762,10 @@ #endif // set current item and select it - view()->selectionModel()->setCurrentIndex(d->currentIndex, - QItemSelectionModel::ClearAndSelect); + QItemSelectionModel::SelectionFlags selectionMode = QItemSelectionModel::ClearAndSelect; + if (view()->selectionBehavior() == QAbstractItemView::SelectRows) + selectionMode.setFlag(QItemSelectionModel::Rows); + view()->selectionModel()->setCurrentIndex(d->currentIndex, selectionMode); QComboBoxPrivateContainer* container = d->viewContainer(); QRect listRect(style->subControlRect(QStyle::CC_ComboBox, &opt, QStyle::SC_ComboBoxListBoxPopup, this)); diff -Naur a/qtbase/src/widgets/widgets/qdatetimeedit_p.h b/qtbase/src/widgets/widgets/qdatetimeedit_p.h --- a/qtbase/src/widgets/widgets/qdatetimeedit_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/widgets/qdatetimeedit_p.h 2022-01-25 17:23:44.152496262 +0000 @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2018 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtWidgets module of the Qt Toolkit. @@ -107,7 +107,7 @@ if (keyboardTracking) return maximum.toDateTime(); if (spec != Qt::LocalTime) - return QDateTime(QDATETIMEEDIT_DATE_MIN.startOfDay(spec)); + return QDateTime(QDATETIMEEDIT_DATE_MAX.endOfDay(spec)); return QDateTimeParser::getMaximum(); } QLocale locale() const override { return q_func()->locale(); } diff -Naur a/qtbase/src/widgets/widgets/qmenu.cpp b/qtbase/src/widgets/widgets/qmenu.cpp --- a/qtbase/src/widgets/widgets/qmenu.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/widgets/qmenu.cpp 2022-01-25 17:23:44.098496456 +0000 @@ -2368,6 +2368,8 @@ doChildEffects = true; updateLayoutDirection(); + q->ensurePolished(); // Get the right font + // Ensure that we get correct sizeHints by placing this window on the correct screen. // However if the QMenu was constructed with a QDesktopScreenWidget as its parent, // then initialScreenIndex was set, so we should respect that for the lifetime of this menu. @@ -2405,7 +2407,6 @@ q->setAttribute(Qt::WA_X11NetWmWindowTypeDropDownMenu, qobject_cast(topCausedWidget()) != nullptr); #endif - q->ensurePolished(); // Get the right font emit q->aboutToShow(); const bool actionListChanged = itemsDirty; diff -Naur a/qtbase/src/widgets/widgets/qmenu_mac.mm b/qtbase/src/widgets/widgets/qmenu_mac.mm --- a/qtbase/src/widgets/widgets/qmenu_mac.mm 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/widgets/qmenu_mac.mm 2022-01-25 17:23:44.140496305 +0000 @@ -126,6 +126,7 @@ void QMenuPrivate::moveWidgetToPlatformItem(QWidget *widget, QPlatformMenuItem* item) { auto *container = new QT_IGNORE_DEPRECATIONS(QMacNativeWidget); + container->setAttribute(Qt::WA_QuitOnClose, false); QObject::connect(platformMenu, SIGNAL(destroyed()), container, SLOT(deleteLater())); container->resize(widget->sizeHint()); widget->setParent(container); diff -Naur a/qtbase/src/widgets/widgets/qplaintextedit.cpp b/qtbase/src/widgets/widgets/qplaintextedit.cpp --- a/qtbase/src/widgets/widgets/qplaintextedit.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/widgets/qplaintextedit.cpp 2022-01-25 17:23:44.184496147 +0000 @@ -972,7 +972,7 @@ } if (moveCursor) { - control->setTextCursor(cursor); + control->setTextCursor(cursor, moveMode == QTextCursor::KeepAnchor); pageUpDownLastCursorYIsValid = true; } } diff -Naur a/qtbase/src/widgets/widgets/qpushbutton.cpp b/qtbase/src/widgets/widgets/qpushbutton.cpp --- a/qtbase/src/widgets/widgets/qpushbutton.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/widgets/qpushbutton.cpp 2022-01-25 17:23:44.072496549 +0000 @@ -332,6 +332,8 @@ option->state |= QStyle::State_On; if (!d->flat && !d->down) option->state |= QStyle::State_Raised; + if (underMouse() && hasMouseTracking()) + option->state.setFlag(QStyle::State_MouseOver, d->hovering); option->text = d->text; option->icon = d->icon; option->iconSize = iconSize(); @@ -691,6 +693,18 @@ updateGeometry(); } else if (e->type() == QEvent::PolishRequest) { updateGeometry(); + } else if (e->type() == QEvent::MouseMove) { + const QMouseEvent *mouseEvent = static_cast(e); + if (testAttribute(Qt::WA_Hover)) { + bool hit = false; + if (underMouse()) + hit = hitButton(mouseEvent->pos()); + + if (hit != d->hovering) { + update(rect()); + d->hovering = hit; + } + } } return QAbstractButton::event(e); } diff -Naur a/qtbase/src/widgets/widgets/qpushbutton_p.h b/qtbase/src/widgets/widgets/qpushbutton_p.h --- a/qtbase/src/widgets/widgets/qpushbutton_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/widgets/qpushbutton_p.h 2022-01-25 17:23:44.072496549 +0000 @@ -69,7 +69,9 @@ QPushButtonPrivate() : QAbstractButtonPrivate(QSizePolicy::PushButton), autoDefault(Auto), - defaultButton(false), flat(false), menuOpen(false), lastAutoDefault(false) {} + defaultButton(false), flat(false), menuOpen(false), hovering(false), + lastAutoDefault(false) + {} inline void init() { resetLayoutItemMargins(); } static QPushButtonPrivate* get(QPushButton *b) { return b->d_func(); } @@ -89,6 +91,7 @@ uint defaultButton : 1; uint flat : 1; uint menuOpen : 1; + uint hovering : 1; mutable uint lastAutoDefault : 1; }; diff -Naur a/qtbase/src/widgets/widgets/qsplashscreen.cpp b/qtbase/src/widgets/widgets/qsplashscreen.cpp --- a/qtbase/src/widgets/widgets/qsplashscreen.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/widgets/qsplashscreen.cpp 2022-01-25 17:23:44.135496323 +0000 @@ -425,6 +425,7 @@ if (e->type() == QEvent::Paint) { Q_D(QSplashScreen); QPainter painter(this); + painter.setRenderHints(QPainter::SmoothPixmapTransform); painter.setLayoutDirection(layoutDirection()); if (!d->pixmap.isNull()) painter.drawPixmap(QPoint(), d->pixmap); diff -Naur a/qtbase/src/widgets/widgets/qtextedit.cpp b/qtbase/src/widgets/widgets/qtextedit.cpp --- a/qtbase/src/widgets/widgets/qtextedit.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/widgets/qtextedit.cpp 2022-01-25 17:23:44.185496143 +0000 @@ -270,7 +270,7 @@ vbar->triggerAction(QAbstractSlider::SliderPageStepAdd); } } - control->setTextCursor(cursor); + control->setTextCursor(cursor, moveMode == QTextCursor::KeepAnchor); } #if QT_CONFIG(scrollbar) diff -Naur a/qtbase/src/widgets/widgets/qwidgetlinecontrol.cpp b/qtbase/src/widgets/widgets/qwidgetlinecontrol.cpp --- a/qtbase/src/widgets/widgets/qwidgetlinecontrol.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/widgets/qwidgetlinecontrol.cpp 2022-01-25 17:23:44.185496143 +0000 @@ -1948,10 +1948,15 @@ return; } - if (unknown) + if (unknown) { event->ignore(); - else + } else { +#ifndef QT_NO_CLIPBOARD + if (QApplication::clipboard()->supportsSelection()) + copy(QClipboard::Selection); +#endif event->accept(); + } } bool QWidgetLineControl::isUndoAvailable() const diff -Naur a/qtbase/src/widgets/widgets/qwidgettextcontrol.cpp b/qtbase/src/widgets/widgets/qwidgettextcontrol.cpp --- a/qtbase/src/widgets/widgets/qwidgettextcontrol.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/widgets/qwidgettextcontrol.cpp 2022-01-25 17:23:44.185496143 +0000 @@ -922,7 +922,7 @@ return d->doc; } -void QWidgetTextControl::setTextCursor(const QTextCursor &cursor) +void QWidgetTextControl::setTextCursor(const QTextCursor &cursor, bool selectionClipboard) { Q_D(QWidgetTextControl); d->cursorIsFocusIndicator = false; @@ -936,6 +936,11 @@ d->repaintOldAndNewSelection(oldSelection); if (posChanged) emit cursorPositionChanged(); + +#ifndef QT_NO_CLIPBOARD + if (selectionClipboard) + d->setClipboardSelection(); +#endif } QTextCursor QWidgetTextControl::textCursor() const @@ -1225,6 +1230,9 @@ if (e == QKeySequence::SelectAll) { e->accept(); q->selectAll(); +#ifndef QT_NO_CLIPBOARD + setClipboardSelection(); +#endif return; } #ifndef QT_NO_CLIPBOARD @@ -1376,6 +1384,10 @@ accept: +#ifndef QT_NO_CLIPBOARD + setClipboardSelection(); +#endif + e->accept(); cursorOn = true; @@ -1942,10 +1954,14 @@ if (!menu) return; menu->setAttribute(Qt::WA_DeleteOnClose); - if (auto *window = static_cast(parent)->window()->windowHandle()) { - QMenuPrivate::get(menu)->topData()->initialScreenIndex = + + if (auto *widget = qobject_cast(parent)) { + if (auto *window = widget->window()->windowHandle()) { + QMenuPrivate::get(menu)->topData()->initialScreenIndex = QGuiApplication::screens().indexOf(window->screen()); + } } + menu->popup(screenPos); #endif } diff -Naur a/qtbase/src/widgets/widgets/qwidgettextcontrol_p.h b/qtbase/src/widgets/widgets/qwidgettextcontrol_p.h --- a/qtbase/src/widgets/widgets/qwidgettextcontrol_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/widgets/widgets/qwidgettextcontrol_p.h 2022-01-25 17:23:44.185496143 +0000 @@ -105,7 +105,7 @@ void setDocument(QTextDocument *document); QTextDocument *document() const; - void setTextCursor(const QTextCursor &cursor); + void setTextCursor(const QTextCursor &cursor, bool selectionClipboard = false); QTextCursor textCursor() const; void setTextInteractionFlags(Qt::TextInteractionFlags flags); diff -Naur a/qtbase/src/xml/sax/qxml.cpp b/qtbase/src/xml/sax/qxml.cpp --- a/qtbase/src/xml/sax/qxml.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/src/xml/sax/qxml.cpp 2022-01-25 17:23:44.097496459 +0000 @@ -523,8 +523,6 @@ pushContext() to start a new namespace context, and popContext() to return to the previous namespace context. Use splitName() or processName() to split a name into its prefix and local name. - - \sa {Namespace Support via Features} */ /*! @@ -807,8 +805,6 @@ Looks up the index of an attribute by the qualified name \a qName. Returns the index of the attribute or -1 if it wasn't found. - - \sa {Namespace Support via Features} */ int QXmlAttributes::index(const QString& qName) const { @@ -840,8 +836,6 @@ name. Returns the index of the attribute, or -1 if it wasn't found. - - \sa {Namespace Support via Features} */ int QXmlAttributes::index(const QString& uri, const QString& localPart) const { @@ -874,8 +868,6 @@ Looks up an attribute's local name for the attribute at position \a index. If no namespace processing is done, the local name is an empty string. - - \sa {Namespace Support via Features} */ QString QXmlAttributes::localName(int index) const { @@ -885,8 +877,6 @@ /*! Looks up an attribute's XML 1.0 qualified name for the attribute at position \a index. - - \sa {Namespace Support via Features} */ QString QXmlAttributes::qName(int index) const { @@ -897,8 +887,6 @@ Looks up an attribute's namespace URI for the attribute at position \a index. If no namespace processing is done or if the attribute has no namespace, the namespace URI is an empty string. - - \sa {Namespace Support via Features} */ QString QXmlAttributes::uri(int index) const { @@ -959,8 +947,6 @@ Returns an attribute's value for the qualified name \a qName, or an empty string if no attribute exists for the name given. - - \sa {Namespace Support via Features} */ QString QXmlAttributes::value(const QString& qName) const { @@ -975,8 +961,6 @@ Returns an attribute's value for the qualified name \a qName, or an empty string if no attribute exists for the name given. - - \sa {Namespace Support via Features} */ QString QXmlAttributes::value(QLatin1String qName) const { @@ -1497,7 +1481,7 @@ startPrefixMapping() is called. \sa QXmlDTDHandler, QXmlDeclHandler, QXmlEntityResolver, QXmlErrorHandler, - QXmlLexicalHandler, {Introduction to SAX2} + QXmlLexicalHandler */ /*! @@ -1571,7 +1555,7 @@ reports an error. The reader uses the function errorString() to get the error message. - \sa endPrefixMapping(), {Namespace Support via Features} + \sa endPrefixMapping() */ /*! @@ -1584,7 +1568,7 @@ reports an error. The reader uses the function errorString() to get the error message. - \sa startPrefixMapping(), {Namespace Support via Features} + \sa startPrefixMapping() */ /*! @@ -1616,7 +1600,7 @@ reports an error. The reader uses the function errorString() to get the error message. - \sa endElement(), {Namespace Support via Features} + \sa endElement() */ /*! @@ -1630,7 +1614,7 @@ reports an error. The reader uses the function errorString() to get the error message. - \sa startElement(), {Namespace Support via Features} + \sa startElement() */ /*! @@ -1720,7 +1704,7 @@ with the error text being reported with errorString(). \sa QXmlDTDHandler, QXmlDeclHandler, QXmlContentHandler, QXmlEntityResolver, - QXmlLexicalHandler, {Introduction to SAX2} + QXmlLexicalHandler */ /*! @@ -1797,7 +1781,7 @@ unparsedEntityDecl() respectively. \sa QXmlDeclHandler, QXmlContentHandler, QXmlEntityResolver, QXmlErrorHandler, - QXmlLexicalHandler, {Introduction to SAX2} + QXmlLexicalHandler */ /*! @@ -1861,7 +1845,7 @@ QXmlReader::setEntityResolver(). \sa QXmlDTDHandler, QXmlDeclHandler, QXmlContentHandler, QXmlErrorHandler, - QXmlLexicalHandler, {Introduction to SAX2} + QXmlLexicalHandler */ /*! @@ -1927,7 +1911,7 @@ endEntity(), startCDATA(), endCDATA() and comment() functions. \sa QXmlDTDHandler, QXmlDeclHandler, QXmlContentHandler, QXmlEntityResolver, - QXmlErrorHandler, {Introduction to SAX2} + QXmlErrorHandler */ /*! @@ -2073,7 +2057,7 @@ externalEntityDecl() functions. \sa QXmlDTDHandler, QXmlContentHandler, QXmlEntityResolver, QXmlErrorHandler, - QXmlLexicalHandler, {Introduction to SAX2} + QXmlLexicalHandler */ /*! @@ -2201,7 +2185,7 @@ document has been read completely. \sa QXmlDTDHandler, QXmlDeclHandler, QXmlContentHandler, QXmlEntityResolver, - QXmlErrorHandler, QXmlLexicalHandler, {Introduction to SAX2} + QXmlErrorHandler, QXmlLexicalHandler */ /*! @@ -3012,7 +2996,7 @@ data in one chunk. \endtable - \sa feature(), hasFeature(), {SAX2 Features} + \sa feature(), hasFeature() */ void QXmlSimpleReader::setFeature(const QString& name, bool enable) { diff -Naur a/qtbase/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp b/qtbase/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp --- a/qtbase/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp 2022-01-25 17:23:44.196496104 +0000 @@ -561,7 +561,8 @@ qint64 readData(char *data, qint64 maxSize) override { maxSize = qMin(maxSize, qint64(buf->size() - offset)); - memcpy(data, buf->constData() + offset, maxSize); + if (maxSize > 0) + memcpy(data, buf->constData() + offset, maxSize); offset += maxSize; return maxSize; } @@ -604,13 +605,15 @@ qint64 readData(char *data, qint64 maxSize) override { maxSize = qMin(maxSize, qint64(buf.size() - pos())); - memcpy(data, buf.constData() + pos(), maxSize); + if (maxSize > 0) + memcpy(data, buf.constData() + pos(), maxSize); return maxSize; } qint64 writeData(const char *data, qint64 maxSize) override { maxSize = qMin(maxSize, qint64(buf.size() - pos())); - memcpy(buf.data() + pos(), data, maxSize); + if (maxSize > 0) + memcpy(buf.data() + pos(), data, maxSize); return maxSize; } diff -Naur a/qtbase/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp b/qtbase/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp --- a/qtbase/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp 2022-01-25 17:23:44.116496391 +0000 @@ -532,7 +532,12 @@ d.mkdir("runtime"); QFile::setPermissions(p, QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner | QFile::ExeGroup | QFile::ExeOther); - return updateRuntimeDir(p); + updateRuntimeDir(p); + QTest::ignoreMessage(QtWarningMsg, + QString("QStandardPaths: wrong permissions on runtime directory %1, " + "0711 instead of 0700") + .arg(p).toLatin1()); + return fallbackXdgRuntimeDir(); }); addRow("environment:wrong-owner", [](QDir &) { @@ -597,6 +602,7 @@ clearRuntimeDir(); QString p = fallbackXdgRuntimeDir(); d.mkdir(p); // probably has wrong permissions + QFile::setPermissions(p, QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner); return p; }); diff -Naur a/qtbase/tests/auto/corelib/io/qurl/tst_qurl.cpp b/qtbase/tests/auto/corelib/io/qurl/tst_qurl.cpp --- a/qtbase/tests/auto/corelib/io/qurl/tst_qurl.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/corelib/io/qurl/tst_qurl.cpp 2022-01-25 17:23:44.140496305 +0000 @@ -1914,6 +1914,8 @@ QTest::addColumn("isValid"); QTest::addColumn("output"); + QTest::newRow("empty") << "//[]" << false << ""; + QTest::newRow("case 1") << QString::fromLatin1("//[56:56:56:56:56:56:56:56]") << true << "//[56:56:56:56:56:56:56:56]"; QTest::newRow("case 2") << QString::fromLatin1("//[::56:56:56:56:56:56:56]") << true diff -Naur a/qtbase/tests/auto/corelib/itemmodels/qconcatenatetablesproxymodel/tst_qconcatenatetablesproxymodel.cpp b/qtbase/tests/auto/corelib/itemmodels/qconcatenatetablesproxymodel/tst_qconcatenatetablesproxymodel.cpp --- a/qtbase/tests/auto/corelib/itemmodels/qconcatenatetablesproxymodel/tst_qconcatenatetablesproxymodel.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/corelib/itemmodels/qconcatenatetablesproxymodel/tst_qconcatenatetablesproxymodel.cpp 2022-01-25 17:23:44.149496273 +0000 @@ -116,6 +116,8 @@ void shouldPropagateDropBetweenItemsAtModelBoundary(); void shouldPropagateDropAfterLastRow_data(); void shouldPropagateDropAfterLastRow(); + void qtbug91788(); + void qtbug91878(); private: QStandardItemModel mod; @@ -453,6 +455,17 @@ const QModelIndex indexD = pm.mapFromSource(mod2.index(0, 0)); QVERIFY(indexD.isValid()); QCOMPARE(indexD, pm.index(1, 0)); + + // Test setData in an ignored column (QTBUG-91253) + QSignalSpy dataChangedSpy(&pm, SIGNAL(dataChanged(QModelIndex,QModelIndex))); + mod.setData(mod.index(0, 1), "b"); + QCOMPARE(dataChangedSpy.count(), 0); + + // Test dataChanged across all columns, some visible, some ignored + mod.dataChanged(mod.index(0, 0), mod.index(0, 2)); + QCOMPARE(dataChangedSpy.count(), 1); + QCOMPARE(dataChangedSpy.at(0).at(0).toModelIndex(), pm.index(0, 0)); + QCOMPARE(dataChangedSpy.at(0).at(1).toModelIndex(), pm.index(0, 0)); } void tst_QConcatenateTablesProxyModel::shouldIncreaseColumnCountWhenRemovingFirstModel() @@ -818,6 +831,35 @@ } +void tst_QConcatenateTablesProxyModel::qtbug91788() +{ + QConcatenateTablesProxyModel proxyConcat; + QStringList strList{QString("one"),QString("two")}; + QStringListModel strListModelA(strList); + QSortFilterProxyModel proxyFilter; + proxyFilter.setSourceModel(&proxyConcat); + + proxyConcat.addSourceModel(&strListModelA); + proxyConcat.removeSourceModel(&strListModelA); // This should not assert + QCOMPARE(proxyConcat.columnCount(), 0); +} + +void tst_QConcatenateTablesProxyModel::qtbug91878() +{ + QStandardItemModel m; + m.setRowCount(4); + m.setColumnCount(4); + + QConcatenateTablesProxyModel pm; + QSortFilterProxyModel proxyFilter; + proxyFilter.setSourceModel(&pm); + proxyFilter.setFilterFixedString("something"); + pm.addSourceModel(&m); // This should not assert + + QCOMPARE(pm.columnCount(), 4); + QCOMPARE(pm.rowCount(), 4); +} + QTEST_GUILESS_MAIN(tst_QConcatenateTablesProxyModel) #include "tst_qconcatenatetablesproxymodel.moc" diff -Naur a/qtbase/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp b/qtbase/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp --- a/qtbase/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp 2022-01-25 17:23:44.153496258 +0000 @@ -2191,6 +2191,235 @@ QCOMPARE(spy.at(1).at(2).value >(), expectedChangedRoles); } +void tst_QSortFilterProxyModel::changeSourceDataProxySendDataChanged_qtbug87781() +{ + QStandardItemModel baseModel; + QSortFilterProxyModel proxyModelBefore; + QSortFilterProxyModel proxyModelAfter; + + QSignalSpy baseDataChangedSpy(&baseModel, &QStandardItemModel::dataChanged); + QSignalSpy beforeDataChangedSpy(&proxyModelBefore, &QSortFilterProxyModel::dataChanged); + QSignalSpy afterDataChangedSpy(&proxyModelAfter, &QSortFilterProxyModel::dataChanged); + + QVERIFY(baseDataChangedSpy.isValid()); + QVERIFY(beforeDataChangedSpy.isValid()); + QVERIFY(afterDataChangedSpy.isValid()); + + proxyModelBefore.setSourceModel(&baseModel); + baseModel.insertRows(0, 1); + baseModel.insertColumns(0, 1); + proxyModelAfter.setSourceModel(&baseModel); + + QCOMPARE(baseDataChangedSpy.size(), 0); + QCOMPARE(beforeDataChangedSpy.size(), 0); + QCOMPARE(afterDataChangedSpy.size(), 0); + + baseModel.setData(baseModel.index(0, 0), QStringLiteral("new data"), Qt::DisplayRole); + QCOMPARE(baseDataChangedSpy.size(), 1); + QCOMPARE(beforeDataChangedSpy.size(), 1); + QCOMPARE(afterDataChangedSpy.size(), 1); +} + +void tst_QSortFilterProxyModel::changeSourceDataTreeModel() +{ + QStandardItemModel treeModel; + QSortFilterProxyModel treeProxyModelBefore; + QSortFilterProxyModel treeProxyModelAfter; + + QSignalSpy treeBaseDataChangedSpy(&treeModel, &QStandardItemModel::dataChanged); + QSignalSpy treeBeforeDataChangedSpy(&treeProxyModelBefore, &QSortFilterProxyModel::dataChanged); + QSignalSpy treeAfterDataChangedSpy(&treeProxyModelAfter, &QSortFilterProxyModel::dataChanged); + + QVERIFY(treeBaseDataChangedSpy.isValid()); + QVERIFY(treeBeforeDataChangedSpy.isValid()); + QVERIFY(treeAfterDataChangedSpy.isValid()); + + treeProxyModelBefore.setSourceModel(&treeModel); + QStandardItem treeNode1("data1"); + QStandardItem treeNode11("data11"); + QStandardItem treeNode111("data111"); + + treeNode1.appendRow(&treeNode11); + treeNode11.appendRow(&treeNode111); + treeModel.appendRow(&treeNode1); + treeProxyModelAfter.setSourceModel(&treeModel); + + QCOMPARE(treeBaseDataChangedSpy.size(), 0); + QCOMPARE(treeBeforeDataChangedSpy.size(), 0); + QCOMPARE(treeAfterDataChangedSpy.size(), 0); + + treeNode111.setData(QStringLiteral("new data"), Qt::DisplayRole); + QCOMPARE(treeBaseDataChangedSpy.size(), 1); + QCOMPARE(treeBeforeDataChangedSpy.size(), 1); + QCOMPARE(treeAfterDataChangedSpy.size(), 1); +} + +void tst_QSortFilterProxyModel::changeSourceDataProxyFilterSingleColumn() +{ + enum modelRow { Row0, Row1, RowCount }; + enum modelColumn { Column0, Column1, Column2, Column3, Column4, Column5, ColumnCount }; + + class FilterProxyModel : public QSortFilterProxyModel + { + public: + bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const override { + Q_UNUSED(source_parent); + switch (source_column) { + case Column2: + case Column4: + return true; + default: + return false; + } + } + }; + + QStandardItemModel model; + FilterProxyModel proxy; + proxy.setSourceModel(&model); + model.insertRows(0, RowCount); + model.insertColumns(0, ColumnCount); + + QSignalSpy modelDataChangedSpy(&model, &QSortFilterProxyModel::dataChanged); + QSignalSpy proxyDataChangedSpy(&proxy, &FilterProxyModel::dataChanged); + + QVERIFY(modelDataChangedSpy.isValid()); + QVERIFY(proxyDataChangedSpy.isValid()); + + modelDataChangedSpy.clear(); + proxyDataChangedSpy.clear(); + model.setData(model.index(Row0, Column1), QStringLiteral("new data"), Qt::DisplayRole); + QCOMPARE(modelDataChangedSpy.size(), 1); + QCOMPARE(proxyDataChangedSpy.size(), 0); + + modelDataChangedSpy.clear(); + proxyDataChangedSpy.clear(); + model.setData(model.index(Row0, Column2), QStringLiteral("new data"), Qt::DisplayRole); + QCOMPARE(modelDataChangedSpy.size(), 1); + QCOMPARE(proxyDataChangedSpy.size(), 1); + + modelDataChangedSpy.clear(); + proxyDataChangedSpy.clear(); + model.setData(model.index(Row0, Column3), QStringLiteral("new data"), Qt::DisplayRole); + QCOMPARE(modelDataChangedSpy.size(), 1); + QCOMPARE(proxyDataChangedSpy.size(), 0); + + modelDataChangedSpy.clear(); + proxyDataChangedSpy.clear(); + model.setData(model.index(Row0, Column4), QStringLiteral("new data"), Qt::DisplayRole); + QCOMPARE(modelDataChangedSpy.size(), 1); + QCOMPARE(proxyDataChangedSpy.size(), 1); + + modelDataChangedSpy.clear(); + proxyDataChangedSpy.clear(); + model.setData(model.index(Row0, Column5), QStringLiteral("new data"), Qt::DisplayRole); + QCOMPARE(modelDataChangedSpy.size(), 1); + QCOMPARE(proxyDataChangedSpy.size(), 0); +} + +void tst_QSortFilterProxyModel::changeSourceDataProxyFilterMultipleColumns() +{ + class FilterProxyModel : public QSortFilterProxyModel + { + public: + bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const override { + Q_UNUSED(source_parent); + switch (source_column) { + case 2: + case 4: + return true; + default: + return false; + } + } + }; + + class MyTableModel : public QAbstractTableModel + { + public: + explicit MyTableModel() = default; + int rowCount(const QModelIndex &parent = QModelIndex()) const override { + Q_UNUSED(parent) + return 10; + } + int columnCount(const QModelIndex &parent = QModelIndex()) const override { + Q_UNUSED(parent) + return 10; + } + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override { + Q_UNUSED(index) + Q_UNUSED(role) + return QString("testData"); + } + + void testDataChanged(const int topLeftRow, const int topLeftColumn, const int bottomRightRow, const int bottomRightColumn) { + QModelIndex topLeft = index(topLeftRow, topLeftColumn); + QModelIndex bottomRight = index(bottomRightRow, bottomRightColumn); + QVERIFY(topLeft.isValid()); + QVERIFY(bottomRight.isValid()); + emit dataChanged(topLeft, bottomRight); + } + }; + + MyTableModel baseModel; + FilterProxyModel proxyModel; + + proxyModel.setSourceModel(&baseModel); + + QSignalSpy baseModelDataChangedSpy(&baseModel, &MyTableModel::dataChanged); + QSignalSpy proxyModelDataChangedSpy(&proxyModel, &FilterProxyModel::dataChanged); + + connect(&proxyModel, &FilterProxyModel::dataChanged, [=](const QModelIndex &topLeft, const QModelIndex &bottomRight) { + QVERIFY(topLeft.isValid()); + QVERIFY(bottomRight.isValid()); + + //make sure every element is valid + int topLeftRow = topLeft.row(); + int topLeftColumn = topLeft.column(); + int bottomRightRow = bottomRight.row(); + int bottomRightColumn = bottomRight.column(); + for (int row = topLeftRow; row <= bottomRightRow; ++row) { + for (int column = topLeftColumn; column <= bottomRightColumn; ++column) { + QModelIndex index = topLeft.model()->index(row, column); + QVERIFY(index.isValid()); + } + } + }); + + QVERIFY(baseModelDataChangedSpy.isValid()); + QVERIFY(proxyModelDataChangedSpy.isValid()); + + baseModelDataChangedSpy.clear(); + proxyModelDataChangedSpy.clear(); + baseModel.testDataChanged(0, 0, 1, 1); + QCOMPARE(baseModelDataChangedSpy.size(), 1); + QCOMPARE(proxyModelDataChangedSpy.size(), 0); + + baseModelDataChangedSpy.clear(); + proxyModelDataChangedSpy.clear(); + baseModel.testDataChanged(0, 0, 1, 2); + QCOMPARE(baseModelDataChangedSpy.size(), 1); + QCOMPARE(proxyModelDataChangedSpy.size(), 1); + + baseModelDataChangedSpy.clear(); + proxyModelDataChangedSpy.clear(); + baseModel.testDataChanged(0, 3, 1, 3); + QCOMPARE(baseModelDataChangedSpy.size(), 1); + QCOMPARE(proxyModelDataChangedSpy.size(), 0); + + baseModelDataChangedSpy.clear(); + proxyModelDataChangedSpy.clear(); + baseModel.testDataChanged(0, 3, 1, 5); + QCOMPARE(baseModelDataChangedSpy.size(), 1); + QCOMPARE(proxyModelDataChangedSpy.size(), 1); + + baseModelDataChangedSpy.clear(); + proxyModelDataChangedSpy.clear(); + baseModel.testDataChanged(0, 0, 1, 5); + QCOMPARE(baseModelDataChangedSpy.size(), 1); + QCOMPARE(proxyModelDataChangedSpy.size(), 1); +} + void tst_QSortFilterProxyModel::sortFilterRole() { QStandardItemModel model; diff -Naur a/qtbase/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h b/qtbase/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h --- a/qtbase/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h 2022-01-25 17:23:44.153496258 +0000 @@ -90,6 +90,10 @@ void changeSourceData(); void changeSourceDataKeepsStableSorting_qtbug1548(); void changeSourceDataForwardsRoles_qtbug35440(); + void changeSourceDataProxySendDataChanged_qtbug87781(); + void changeSourceDataTreeModel(); + void changeSourceDataProxyFilterSingleColumn(); + void changeSourceDataProxyFilterMultipleColumns(); void resortingDoesNotBreakTreeModels(); void dynamicFilterWithoutSort(); void sortFilterRole(); diff -Naur a/qtbase/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp b/qtbase/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp --- a/qtbase/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp 2022-01-25 17:23:44.169496201 +0000 @@ -70,15 +70,15 @@ QString result; QTextStream str(&result); - str << "\nCannot find the shared-mime-info test suite\nstarting from: " + str << "\nCannot find the shared-mime-info test suite\nin the parent of: " << QDir::toNativeSeparators(QDir::currentPath()) << "\n" "cd " << QDir::toNativeSeparators(QStringLiteral("tests/auto/corelib/mimetypes/qmimedatabase")) << "\n" - "wget http://cgit.freedesktop.org/xdg/shared-mime-info/snapshot/Release-1-10.zip\n" - "unzip Release-1-10.zip\n"; + "wget https://gitlab.freedesktop.org/xdg/shared-mime-info/-/archive/2.1/shared-mime-info-2.1.zip\n" + "unzip shared-mime-info-2.1.zip\n"; #ifdef Q_OS_WIN - str << "mkdir testfiles\nxcopy /s Release-1-10 s-m-i\n"; + str << "mkdir testfiles\nxcopy /s shared-mime-info-2.1 s-m-i\n"; #else - str << "ln -s Release-1-10 s-m-i\n"; + str << "ln -s shared-mime-info-2.1 s-m-i\n"; #endif return result; } @@ -154,7 +154,7 @@ QVERIFY2(copyResourceFile(xmlFileName, xmlTargetFileName, &errorMessage), qPrintable(errorMessage)); #endif - m_testSuite = QFINDTESTDATA("s-m-i/tests"); + m_testSuite = QFINDTESTDATA("s-m-i/tests/mime-detection"); if (m_testSuite.isEmpty()) qWarning("%s", qPrintable(testSuiteWarning())); @@ -611,7 +611,7 @@ QVERIFY(!lst.isEmpty()); // Hardcoding this is the only way to check both providers find the same number of mimetypes. - QCOMPARE(lst.count(), 779); + QCOMPARE(lst.count(), 811); foreach (const QMimeType &mime, lst) { const QString name = mime.name(); @@ -631,10 +631,9 @@ QTest::newRow("mimetype with a single pattern") << "application/pdf" << "*.pdf" << "pdf"; QTest::newRow("mimetype with multiple patterns") << "application/x-kpresenter" << "*.kpr;*.kpt" << "kpr"; - QTest::newRow("jpeg") << "image/jpeg" << "*.jpe;*.jpg;*.jpeg" << "jpeg"; - //if (KMimeType::sharedMimeInfoVersion() > KDE_MAKE_VERSION(0, 60, 0)) { - QTest::newRow("mimetype with many patterns") << "application/vnd.wordperfect" << "*.wp;*.wp4;*.wp5;*.wp6;*.wpd;*.wpp" << "wp"; - //} + // The preferred suffix for image/jpeg is *.jpg, as per https://bugs.kde.org/show_bug.cgi?id=176737 + QTest::newRow("jpeg") << "image/jpeg" << "*.jpe;*.jpg;*.jpeg" << "jpg"; + QTest::newRow("mimetype with many patterns") << "application/vnd.wordperfect" << "*.wp;*.wp4;*.wp5;*.wp6;*.wpd;*.wpp" << "wp"; QTest::newRow("oasis text mimetype") << "application/vnd.oasis.opendocument.text" << "*.odt" << "odt"; QTest::newRow("oasis presentation mimetype") << "application/vnd.oasis.opendocument.presentation" << "*.odp" << "odp"; QTest::newRow("mimetype with multiple patterns") << "text/plain" << "*.asc;*.txt;*,v" << "txt"; diff -Naur a/qtbase/tests/auto/corelib/serialization/json/tst_qtjson.cpp b/qtbase/tests/auto/corelib/serialization/json/tst_qtjson.cpp --- a/qtbase/tests/auto/corelib/serialization/json/tst_qtjson.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/corelib/serialization/json/tst_qtjson.cpp 2022-01-25 17:23:44.102496441 +0000 @@ -33,6 +33,7 @@ #include "qjsonvalue.h" #include "qjsondocument.h" #include "qregularexpression.h" +#include "private/qnumeric_p.h" #include #define INVALID_UNICODE "\xCE\xBA\xE1" @@ -3584,6 +3585,17 @@ << QVariant::fromValue(nullptr); QTest::newRow("NaN") << QVariant(qQNaN()) << QJsonValue(QJsonValue::Null) << QVariant::fromValue(nullptr); + + const qulonglong ulongValue = (1ul << 63) + 1; + const double uLongToDouble = ulongValue; + qint64 n; + if (convertDoubleTo(uLongToDouble, &n)) { + QTest::newRow("ulonglong") << QVariant(ulongValue) << QJsonValue(uLongToDouble) + << QVariant(n); + } else { + QTest::newRow("ulonglong") << QVariant(ulongValue) << QJsonValue(uLongToDouble) + << QVariant(uLongToDouble); + } } void tst_QtJson::fromToVariantConversions() diff -Naur a/qtbase/tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp b/qtbase/tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp --- a/qtbase/tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/corelib/serialization/qcborvalue/tst_qcborvalue.cpp 2022-01-25 17:23:44.135496323 +0000 @@ -2159,7 +2159,9 @@ void tst_QCborValue::hugeDeviceValidation_data() { - addValidationHugeDevice(MaxByteArraySize + 1, MaxStringSize + 1); + // because QCborValue will attempt to retain the original string in UTF-8, + // the size which it can't store is actually the byte array size + addValidationHugeDevice(MaxByteArraySize + 1, MaxByteArraySize + 1); } void tst_QCborValue::hugeDeviceValidation() diff -Naur a/qtbase/tests/auto/corelib/text/qlocale/tst_qlocale.cpp b/qtbase/tests/auto/corelib/text/qlocale/tst_qlocale.cpp --- a/qtbase/tests/auto/corelib/text/qlocale/tst_qlocale.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/corelib/text/qlocale/tst_qlocale.cpp 2022-01-25 17:23:44.090496485 +0000 @@ -2496,7 +2496,7 @@ const QLocale cat("ca_ES"); QCOMPARE(cat.timeFormat(QLocale::ShortFormat), QLatin1String("H:mm")); - QCOMPARE(cat.timeFormat(QLocale::LongFormat), QLatin1String("H:mm:ss t")); + QCOMPARE(cat.timeFormat(QLocale::LongFormat), QLatin1String("H:mm:ss (t)")); const QLocale bra("pt_BR"); QCOMPARE(bra.timeFormat(QLocale::ShortFormat), QLatin1String("HH:mm")); diff -Naur a/qtbase/tests/auto/corelib/text/qstring/tst_qstring.cpp b/qtbase/tests/auto/corelib/text/qstring/tst_qstring.cpp --- a/qtbase/tests/auto/corelib/text/qstring/tst_qstring.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/corelib/text/qstring/tst_qstring.cpp 2022-01-25 17:23:44.180496161 +0000 @@ -1765,6 +1765,7 @@ QCOMPARE(a.count( "", Qt::CaseInsensitive), 16); QCOMPARE(a.count(QRegExp("[FG][HI]")),1); QCOMPARE(a.count(QRegExp("[G][HE]")),2); + QCOMPARE(a.count(QRegularExpression("")), 16); QCOMPARE(a.count(QRegularExpression("[FG][HI]")), 1); QCOMPARE(a.count(QRegularExpression("[G][HE]")), 2); QTest::ignoreMessage(QtWarningMsg, "QString::count: invalid QRegularExpression object"); @@ -2966,6 +2967,17 @@ // Also check the full values match, of course: QCOMPARE(str8.size(), ans8.size()); QCOMPARE(str8, ans8); + + { + QString s(QLatin1String("BBB")); + QString expected(QLatin1String("BBB")); + for (int i = 0; i < 1028; ++i) { + s.append("X"); + expected.append("GXU"); + } + s.replace(QChar('X'), "GXU"); + QCOMPARE(s, expected); + } } void tst_QString::replace_string() diff -Naur a/qtbase/tests/auto/corelib/thread/qthread/tst_qthread.cpp b/qtbase/tests/auto/corelib/thread/qthread/tst_qthread.cpp --- a/qtbase/tests/auto/corelib/thread/qthread/tst_qthread.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/corelib/thread/qthread/tst_qthread.cpp 2022-01-25 17:23:44.200496089 +0000 @@ -106,6 +106,7 @@ void quitLock(); void create(); + void threadIdReuse(); }; enum { one_minute = 60 * 1000, five_minutes = 5 * one_minute }; @@ -1631,5 +1632,57 @@ QVERIFY(!thread.isInterruptionRequested()); } +/* + This is a regression test for QTBUG-96846. + + Incorrect system thread ID cleanup can cause QThread::wait() to report that + a thread is trying to wait for itself. +*/ +void tst_QThread::threadIdReuse() +{ + // It's important that those thread ID's are not accessed concurrently + Qt::HANDLE threadId1; + + auto thread1Fn = [&threadId1]() -> void { threadId1 = QThread::currentThreadId(); }; + QScopedPointer thread1(QThread::create(thread1Fn)); + thread1->start(); + QVERIFY(thread1->wait()); + + // If the system thread allocated for thread1 is destroyed before thread2 is started, + // at least on some versions of Linux the system thread ID for thread2 would be the + // same as one that was used for thread1. + + // The system thread may be alive for some time after returning from QThread::wait() + // because the implementation is using detachable threads, so some additional time is + // required for the system thread to terminate. Not waiting long enough here would result + // in a new system thread ID being allocated for thread2 and this test passing even without + // a fix for QTBUG-96846. + bool threadIdReused = false; + + for (int i = 0; i < 42; i++) { + QThread::msleep(1); + + Qt::HANDLE threadId2; + auto waitForThread1 = [&thread1, &threadId2]() -> void { + threadId2 = QThread::currentThreadId(); + QVERIFY(thread1->wait()); + }; + + QScopedPointer thread2(QThread::create(waitForThread1)); + thread2->start(); + QVERIFY(thread2->wait()); + + if (threadId1 == threadId2) { + qDebug("Thread ID reused at iteration %d", i); + threadIdReused = true; + break; + } + } + + if (!threadIdReused) { + QSKIP("Thread ID was not reused"); + } +} + QTEST_MAIN(tst_QThread) #include "tst_qthread.moc" diff -Naur a/qtbase/tests/auto/corelib/time/qcalendar/tst_qcalendar.cpp b/qtbase/tests/auto/corelib/time/qcalendar/tst_qcalendar.cpp --- a/qtbase/tests/auto/corelib/time/qcalendar/tst_qcalendar.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/corelib/time/qcalendar/tst_qcalendar.cpp 2022-01-25 17:23:44.112496406 +0000 @@ -47,6 +47,9 @@ void specific(); void daily_data() { basic_data(); } void daily(); + void properties_data(); + void properties(); + void aliases(); }; // Support for basic(): @@ -57,7 +60,10 @@ QVERIFY(moons > 0); QVERIFY(!cal.isDateValid(year, moons + 1, 1)); QVERIFY(!cal.isDateValid(year, 0, 1)); + QVERIFY(!QDate(year, 0, 1, cal).isValid()); QVERIFY(moons <= cal.maximumMonthsInYear()); + QCOMPARE(cal.standaloneMonthName(QLocale::c(), moons + 1, year), QString()); + QCOMPARE(cal.monthName(QLocale::c(), 0, year), QString()); const int days = cal.daysInYear(year); QVERIFY(days > 0); @@ -118,6 +124,7 @@ QCOMPARE(cal.monthsInYear(0), 0); QCOMPARE(cal.daysInYear(0), 0); QVERIFY(!cal.isDateValid(0, 1, 1)); + QVERIFY(!QDate(0, 1, 1, cal).isValid()); } if (cal.isProleptic()) { @@ -177,6 +184,7 @@ { QTest::addColumn("system"); // Date in that system: + QTest::addColumn("monthName"); QTest::addColumn("sysyear"); QTest::addColumn("sysmonth"); QTest::addColumn("sysday"); @@ -185,26 +193,27 @@ QTest::addColumn("gregmonth"); QTest::addColumn("gregday"); -#define ADDROW(cal, year, month, day, gy, gm, gd) \ - QTest::newRow(#cal) << QCalendar::System::cal << year << month << day << gy << gm << gd +#define ADDROW(cal, monthName, year, month, day, gy, gm, gd) \ + QTest::newRow(#cal) << QCalendar::System::cal << QStringLiteral(monthName) \ + << year << month << day << gy << gm << gd - ADDROW(Gregorian, 1970, 1, 1, 1970, 1, 1); + ADDROW(Gregorian, "January", 1970, 1, 1, 1970, 1, 1); // One known specific date, for each calendar #ifndef QT_BOOTSTRAPPED // Julian 1582-10-4 was followed by Gregorian 1582-10-15 - ADDROW(Julian, 1582, 10, 4, 1582, 10, 14); + ADDROW(Julian, "October", 1582, 10, 4, 1582, 10, 14); // Milankovic matches Gregorian for a few centuries - ADDROW(Milankovic, 1923, 3, 20, 1923, 3, 20); + ADDROW(Milankovic, "March", 1923, 3, 20, 1923, 3, 20); #endif #if QT_CONFIG(jalalicalendar) // Jalali year 1355 started on Gregorian 1976-3-21: - ADDROW(Jalali, 1355, 1, 1, 1976, 3, 21); + ADDROW(Jalali, "Farvardin", 1355, 1, 1, 1976, 3, 21); #endif // jalali #if QT_CONFIG(islamiccivilcalendar) // TODO: confirm this is correct - ADDROW(IslamicCivil, 1, 1, 1, 622, 7, 19); + ADDROW(IslamicCivil, "Muharram", 1, 1, 1, 622, 7, 19); #endif #undef ADDROW @@ -213,6 +222,7 @@ void tst_QCalendar::specific() { QFETCH(QCalendar::System, system); + QFETCH(const QString, monthName); QFETCH(int, sysyear); QFETCH(int, sysmonth); QFETCH(int, sysday); @@ -221,6 +231,7 @@ QFETCH(int, gregday); const QCalendar cal(system); + QCOMPARE(cal.monthName(QLocale::c(), sysmonth), monthName); const QDate date(sysyear, sysmonth, sysday, cal), gregory(gregyear, gregmonth, gregday); QCOMPARE(date, gregory); QCOMPARE(gregory.year(cal), sysyear); @@ -255,5 +266,88 @@ } } +void tst_QCalendar::properties_data() +{ + QTest::addColumn("system"); + QTest::addColumn("gregory"); + QTest::addColumn("lunar"); + QTest::addColumn("luniSolar"); + QTest::addColumn("solar"); + QTest::addColumn("proleptic"); + QTest::addColumn("yearZero"); + QTest::addColumn("monthMax"); + QTest::addColumn("monthMin"); + QTest::addColumn("yearMax"); + QTest::addColumn("name"); + + QTest::addRow("Gregorian") + << QCalendar::System::Gregorian << true << false << false << true << true << false + << 31 << 28 << 12 << QStringLiteral("Gregorian"); +#ifndef QT_BOOTSTRAPPED + QTest::addRow("Julian") + << QCalendar::System::Julian << false << false << false << true << true << false + << 31 << 28 << 12 << QStringLiteral("Julian"); + QTest::addRow("Milankovic") + << QCalendar::System::Milankovic << false << false << false << true << true << false + << 31 << 28 << 12 << QStringLiteral("Milankovic"); +#endif + +#if QT_CONFIG(jalalicalendar) + QTest::addRow("Jalali") + << QCalendar::System::Jalali << false << false << false << true << true << false + << 31 << 29 << 12 << QStringLiteral("Jalali"); +#endif +#if QT_CONFIG(islamiccivilcalendar) + QTest::addRow("IslamicCivil") + << QCalendar::System::IslamicCivil << false << true << false << false << true << false + << 30 << 29 << 12 << QStringLiteral("Islamic Civil"); +#endif +} + +void tst_QCalendar::properties() +{ + QFETCH(const QCalendar::System, system); + QFETCH(const bool, gregory); + QFETCH(const bool, lunar); + QFETCH(const bool, luniSolar); + QFETCH(const bool, solar); + QFETCH(const bool, proleptic); + QFETCH(const bool, yearZero); + QFETCH(const int, monthMax); + QFETCH(const int, monthMin); + QFETCH(const int, yearMax); + QFETCH(const QString, name); + + const QCalendar cal(system); + QCOMPARE(cal.isGregorian(), gregory); + QCOMPARE(cal.isLunar(), lunar); + QCOMPARE(cal.isLuniSolar(), luniSolar); + QCOMPARE(cal.isSolar(), solar); + QCOMPARE(cal.isProleptic(), proleptic); + QCOMPARE(cal.hasYearZero(), yearZero); + QCOMPARE(cal.maximumDaysInMonth(), monthMax); + QCOMPARE(cal.minimumDaysInMonth(), monthMin); + QCOMPARE(cal.maximumMonthsInYear(), yearMax); + QCOMPARE(cal.name(), name); +} + +void tst_QCalendar::aliases() +{ + QCOMPARE(QCalendar(u"gregory").name(), u"Gregorian"); +#if QT_CONFIG(jalalicalendar) + QCOMPARE(QCalendar(u"Persian").name(), u"Jalali"); +#endif +#if QT_CONFIG(islamiccivilcalendar) + // Exercise all constructors from name, while we're at it: + QCOMPARE(QCalendar(u"islamic-civil").name(), u"Islamic Civil"); + QCOMPARE(QCalendar(QLatin1String("islamic")).name(), u"Islamic Civil"); + QCOMPARE(QCalendar(QStringLiteral("Islamic")).name(), u"Islamic Civil"); +#endif + + // Invalid is handled gracefully: + QCOMPARE(QCalendar(u"").name(), QString()); + QCOMPARE(QCalendar(QCalendar::System::User).name(), QString()); +} + QTEST_APPLESS_MAIN(tst_QCalendar) #include "tst_qcalendar.moc" diff -Naur a/qtbase/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp b/qtbase/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp --- a/qtbase/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp 2022-01-25 17:23:44.190496125 +0000 @@ -62,6 +62,7 @@ void windowsId(); void isValidId_data(); void isValidId(); + void serialize(); // Backend tests void utcTest(); void icuTest(); @@ -935,6 +936,33 @@ #endif } +void tst_QTimeZone::serialize() +{ + int parts = 0; +#ifndef QT_NO_DEBUG_STREAM + qDebug() << QTimeZone(); // to verify no crash + parts++; +#endif +#ifndef QT_NO_DATASTREAM + QByteArray blob; + { + QDataStream stream(&blob, QIODevice::WriteOnly); + stream << QTimeZone("Europe/Oslo") << QTimeZone(420) << QTimeZone() << qint64(-1); + } + QDataStream stream(&blob, QIODevice::ReadOnly); + QTimeZone invalid, offset, oslo; + qint64 minusone; + stream >> oslo >> offset >> invalid >> minusone; + QCOMPARE(oslo, QTimeZone("Europe/Oslo")); + QCOMPARE(offset, QTimeZone(420)); + QVERIFY(!invalid.isValid()); + QCOMPARE(minusone, qint64(-1)); + parts++; +#endif + if (!parts) + QSKIP("No serialization enabled"); +} + void tst_QTimeZone::utcTest() { #ifdef QT_BUILD_INTERNAL @@ -1153,11 +1181,14 @@ QCOMPARE(dat.standardTimeOffset, 3600); QCOMPARE(dat.daylightTimeOffset, 0); - // Known high datetimes - qint64 stdHi = QDateTime(QDate(2100, 1, 1), QTime(0, 0, 0), Qt::UTC).toMSecsSinceEpoch(); - qint64 dstHi = QDateTime(QDate(2100, 6, 1), QTime(0, 0, 0), Qt::UTC).toMSecsSinceEpoch(); + // Date-times late enough to exercise POSIX rules: + qint64 stdHi = QDate(2100, 1, 1).startOfDay(Qt::UTC).toMSecsSinceEpoch(); + qint64 dstHi = QDate(2100, 6, 1).startOfDay(Qt::UTC).toMSecsSinceEpoch(); + // Relevant last Sundays in October and March: + QCOMPARE(Qt::DayOfWeek(QDate(2099, 10, 25).dayOfWeek()), Qt::Sunday); + QCOMPARE(Qt::DayOfWeek(QDate(2100, 3, 28).dayOfWeek()), Qt::Sunday); + QCOMPARE(Qt::DayOfWeek(QDate(2100, 10, 31).dayOfWeek()), Qt::Sunday); - // Tets high dates use the POSIX rule dat = tzp.data(stdHi); QCOMPARE(dat.atMSecsSinceEpoch - stdHi, (qint64)0); QCOMPARE(dat.offsetFromUtc, 3600); @@ -1171,29 +1202,33 @@ QCOMPARE(dat.daylightTimeOffset, 3600); dat = tzp.previousTransition(stdHi); - QCOMPARE(QDateTime::fromMSecsSinceEpoch(dat.atMSecsSinceEpoch, Qt::OffsetFromUTC, 3600), - QDateTime(QDate(2099, 10, 26), QTime(2, 0), Qt::OffsetFromUTC, 3600)); + QCOMPARE(dat.abbreviation, QStringLiteral("CET")); + QCOMPARE(QDateTime::fromMSecsSinceEpoch(dat.atMSecsSinceEpoch, Qt::UTC), + QDateTime(QDate(2099, 10, 25), QTime(3, 0), Qt::OffsetFromUTC, 7200)); QCOMPARE(dat.offsetFromUtc, 3600); QCOMPARE(dat.standardTimeOffset, 3600); QCOMPARE(dat.daylightTimeOffset, 0); dat = tzp.previousTransition(dstHi); - QCOMPARE(QDateTime::fromMSecsSinceEpoch(dat.atMSecsSinceEpoch, Qt::OffsetFromUTC, 3600), - QDateTime(QDate(2100, 3, 29), QTime(2, 0), Qt::OffsetFromUTC, 3600)); + QCOMPARE(dat.abbreviation, QStringLiteral("CEST")); + QCOMPARE(QDateTime::fromMSecsSinceEpoch(dat.atMSecsSinceEpoch, Qt::UTC), + QDateTime(QDate(2100, 3, 28), QTime(2, 0), Qt::OffsetFromUTC, 3600)); QCOMPARE(dat.offsetFromUtc, 7200); QCOMPARE(dat.standardTimeOffset, 3600); QCOMPARE(dat.daylightTimeOffset, 3600); dat = tzp.nextTransition(stdHi); - QCOMPARE(QDateTime::fromMSecsSinceEpoch(dat.atMSecsSinceEpoch, Qt::OffsetFromUTC, 3600), - QDateTime(QDate(2100, 3, 29), QTime(2, 0), Qt::OffsetFromUTC, 3600)); + QCOMPARE(dat.abbreviation, QStringLiteral("CEST")); + QCOMPARE(QDateTime::fromMSecsSinceEpoch(dat.atMSecsSinceEpoch, Qt::UTC), + QDateTime(QDate(2100, 3, 28), QTime(2, 0), Qt::OffsetFromUTC, 3600)); QCOMPARE(dat.offsetFromUtc, 7200); QCOMPARE(dat.standardTimeOffset, 3600); QCOMPARE(dat.daylightTimeOffset, 3600); dat = tzp.nextTransition(dstHi); + QCOMPARE(dat.abbreviation, QStringLiteral("CET")); QCOMPARE(QDateTime::fromMSecsSinceEpoch(dat.atMSecsSinceEpoch, Qt::OffsetFromUTC, 3600), - QDateTime(QDate(2100, 10, 25), QTime(2, 0), Qt::OffsetFromUTC, 3600)); + QDateTime(QDate(2100, 10, 31), QTime(3, 0), Qt::OffsetFromUTC, 7200)); QCOMPARE(dat.offsetFromUtc, 3600); QCOMPARE(dat.standardTimeOffset, 3600); QCOMPARE(dat.daylightTimeOffset, 0); diff -Naur a/qtbase/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp b/qtbase/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp --- a/qtbase/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp 2022-01-25 17:23:44.201496086 +0000 @@ -26,9 +26,10 @@ ** ****************************************************************************/ -#include +#include #include #include +#include #include @@ -40,6 +41,7 @@ void removeLast(); void oldTests(); void appendCausingRealloc(); + void appendIsStronglyExceptionSafe(); void resize(); void realloc(); void reverseIterators(); @@ -245,6 +247,49 @@ d.append(i); } +void tst_QVarLengthArray::appendIsStronglyExceptionSafe() +{ +#ifdef QT_NO_EXCEPTIONS + QSKIP("This test requires exception support enabled in the compiler."); +#else + static bool throwOnCopyNow = false; + static bool throwOnMoveNow = false; + struct Thrower { + Thrower() = default; + Thrower(const Thrower &) + { + if (throwOnCopyNow) + throw 1; + } + Thrower &operator=(const Thrower &) = default; + Thrower(Thrower &&) + { + if (throwOnMoveNow) + throw 1; + } + Thrower &operator=(Thrower &&) = default; + ~Thrower() = default; + }; + + { + // ### TODO: QVLA isn't exception-safe when throwing during reallocation, + // ### so check with size() < capacity() for now + QVarLengthArray vla(1); + { + Thrower t; + const QScopedValueRollback rb(throwOnCopyNow, true); + QVERIFY_EXCEPTION_THROWN(vla.push_back(t), int); + QCOMPARE(vla.size(), 1); + } + { + const QScopedValueRollback rb(throwOnMoveNow, true); + QVERIFY_EXCEPTION_THROWN(vla.push_back({}), int); + QCOMPARE(vla.size(), 1); + } + } +#endif +} + void tst_QVarLengthArray::resize() { //MOVABLE diff -Naur a/qtbase/tests/auto/gui/image/qimage/tst_qimage.cpp b/qtbase/tests/auto/gui/image/qimage/tst_qimage.cpp --- a/qtbase/tests/auto/gui/image/qimage/tst_qimage.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/gui/image/qimage/tst_qimage.cpp 2022-01-25 17:23:44.124496362 +0000 @@ -3536,6 +3536,14 @@ // Try setting an invalid color. QTest::ignoreMessage(QtWarningMsg, "QImage::setPixelColor: color is invalid"); argb32.setPixelColor(0, 0, QColor()); + + // Test correct premultiplied handling of RGBA64 as well + QImage rgba64(1, 1, QImage::Format_RGBA64); + QImage rgba64pm(1, 1, QImage::Format_RGBA64_Premultiplied); + rgba64.setPixelColor(QPoint(0, 0), c); + rgba64pm.setPixelColor(QPoint(0, 0), c); + QCOMPARE(rgba64.pixelColor(QPoint(0, 0)), c); + QCOMPARE(rgba64pm.pixelColor(QPoint(0, 0)), c); } void tst_QImage::pixel() diff -Naur a/qtbase/tests/auto/gui/kernel/qwindow/BLACKLIST b/qtbase/tests/auto/gui/kernel/qwindow/BLACKLIST --- a/qtbase/tests/auto/gui/kernel/qwindow/BLACKLIST 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/gui/kernel/qwindow/BLACKLIST 2022-01-25 17:23:44.095496467 +0000 @@ -10,9 +10,6 @@ # QTBUG-66851 # QTBUG-69160 opensuse-leap -[setVisible] -# QTBUG-69154 -android [modalWindowEnterEventOnHide_QTBUG35109] osx [spuriousMouseMove] @@ -20,12 +17,6 @@ windows-10 [testInputEvents] rhel-7.4 -[initialSize] -# QTBUG-69159 -android [modalWindowPosition] # QTBUG-69161 android -[childWindowPositioning:show] -# QTBUG-69156 -android diff -Naur a/qtbase/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/qtbase/tests/auto/gui/painting/qpainter/tst_qpainter.cpp --- a/qtbase/tests/auto/gui/painting/qpainter/tst_qpainter.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/gui/painting/qpainter/tst_qpainter.cpp 2022-01-25 17:23:44.177496172 +0000 @@ -308,6 +308,7 @@ void fillPolygon(); void drawImageAtPointF(); + void scaledDashes(); private: void fillData(); @@ -5468,6 +5469,36 @@ paint.end(); } +void tst_QPainter::scaledDashes() +{ + // Test that we do not hit the limit-huge-number-of-dashes path + QRgb fore = qRgb(0, 0, 0xff); + QRgb back = qRgb(0xff, 0xff, 0); + QImage image(5, 32, QImage::Format_RGB32); + image.fill(back); + QPainter p(&image); + QPen pen(QColor(fore), 3, Qt::DotLine); + p.setPen(pen); + p.scale(1, 2); + p.drawLine(2, 0, 2, 16); + p.end(); + + bool foreFound = false; + bool backFound = false; + int i = 0; + while (i < 32 && (!foreFound || !backFound)) { + QRgb pix = image.pixel(3, i); + if (pix == fore) + foreFound = true; + else if (pix == back) + backFound = true; + i++; + } + + QVERIFY(foreFound); + QVERIFY(backFound); +} + QTEST_MAIN(tst_QPainter) #include "tst_qpainter.moc" diff -Naur a/qtbase/tests/auto/gui/painting/qtransform/tst_qtransform.cpp b/qtbase/tests/auto/gui/painting/qtransform/tst_qtransform.cpp --- a/qtbase/tests/auto/gui/painting/qtransform/tst_qtransform.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/gui/painting/qtransform/tst_qtransform.cpp 2022-01-25 17:23:44.094496470 +0000 @@ -447,8 +447,9 @@ QCOMPARE(m1.inverted().type(), QTransform::TxScale); m1.rotate(45.0f); - QCOMPARE(m1.type(), QTransform::TxRotate); - QCOMPARE(m1.inverted().type(), QTransform::TxRotate); + // Rotation after non-uniform scaling -> shearing. Uniform scale + rotate tested below. + QCOMPARE(m1.type(), QTransform::TxShear); + QCOMPARE(m1.inverted().type(), QTransform::TxShear); m1.shear(0.5f, 0.25f); QCOMPARE(m1.type(), QTransform::TxShear); diff -Naur a/qtbase/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp b/qtbase/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp --- a/qtbase/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp 2022-01-25 17:23:44.183496151 +0000 @@ -79,6 +79,8 @@ void registerOpenTypePreferredNamesSystem(); void registerOpenTypePreferredNamesApplication(); + void stretchRespected(); + private: QString m_ledFont; QString m_testFont; @@ -309,7 +311,17 @@ QFontDatabase db; const QStringList families = db.families(); QVERIFY(!families.isEmpty()); - const QString firstFont = families.front(); + QString firstFont; + for (int i = 0; i < families.size(); ++i) { + if (!families.at(i).contains('[')) { + firstFont = families.at(i); + break; + } + } + + if (firstFont.isEmpty()) + QSKIP("Skipped because there are no unambiguous font families on the system."); + QVERIFY(db.hasFamily(firstFont)); const QString alias = QStringLiteral("AliasToFirstFont") + firstFont; QVERIFY(!db.hasFamily(alias)); @@ -343,6 +355,28 @@ return QStringLiteral("foo bar"); } +void tst_QFontDatabase::stretchRespected() +{ + int italicId = QFontDatabase::addApplicationFont(m_testFontItalic); + QVERIFY(italicId != -1); + + QVERIFY(!QFontDatabase::applicationFontFamilies(italicId).isEmpty()); + + QString italicFontName = QFontDatabase::applicationFontFamilies(italicId).first(); + + QFont italicFont = QFontDatabase().font(italicFontName, + QString::fromLatin1("Italic"), 14); + QVERIFY(italicFont.italic()); + + QFont italicStretchedFont = italicFont; + italicStretchedFont.setStretch( 400 ); + + QVERIFY(QFontMetricsF(italicFont).horizontalAdvance(QStringLiteral("foobar")) < + QFontMetricsF(italicStretchedFont).horizontalAdvance(QStringLiteral("foobar"))); + + QFontDatabase::removeApplicationFont(italicId); +} + void tst_QFontDatabase::condensedFontWidthNoFontMerging() { int regularFontId = QFontDatabase::addApplicationFont(m_testFont); diff -Naur a/qtbase/tests/auto/gui/text/qtextimagehandler/qtextimagehandler.pro b/qtbase/tests/auto/gui/text/qtextimagehandler/qtextimagehandler.pro --- a/qtbase/tests/auto/gui/text/qtextimagehandler/qtextimagehandler.pro 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/tests/auto/gui/text/qtextimagehandler/qtextimagehandler.pro 2022-01-25 17:23:44.079496524 +0000 @@ -0,0 +1,4 @@ +CONFIG += testcase +TARGET = tst_qtextimagehandler +QT += core-private gui gui-private testlib +SOURCES += tst_qtextimagehandler.cpp diff -Naur a/qtbase/tests/auto/gui/text/qtextimagehandler/tst_qtextimagehandler.cpp b/qtbase/tests/auto/gui/text/qtextimagehandler/tst_qtextimagehandler.cpp --- a/qtbase/tests/auto/gui/text/qtextimagehandler/tst_qtextimagehandler.cpp 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/tests/auto/gui/text/qtextimagehandler/tst_qtextimagehandler.cpp 2022-01-25 17:23:44.079496524 +0000 @@ -0,0 +1,87 @@ +/**************************************************************************** + ** + ** Copyright (C) 2020 The Qt Company Ltd. + ** Contact: https://www.qt.io/licensing/ + ** + ** This file is part of the test suite of the Qt Toolkit. + ** + ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ + ** Commercial License Usage + ** Licensees holding valid commercial Qt licenses may use this file in + ** accordance with the commercial license agreement provided with the + ** Software or, alternatively, in accordance with the terms contained in + ** a written agreement between you and The Qt Company. For licensing terms + ** and conditions see https://www.qt.io/terms-conditions. For further + ** information use the contact form at https://www.qt.io/contact-us. + ** + ** GNU General Public License Usage + ** Alternatively, this file may be used under the terms of the GNU + ** General Public License version 3 as published by the Free Software + ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT + ** included in the packaging of this file. Please review the following + ** information to ensure the GNU General Public License requirements will + ** be met: https://www.gnu.org/licenses/gpl-3.0.html. + ** + ** $QT_END_LICENSE$ + ** + ****************************************************************************/ + +#include + +#include +#include + +class tst_QTextImageHandler : public QObject +{ + Q_OBJECT + +public: + tst_QTextImageHandler(); + +private slots: + void init(); + void cleanup(); + void cleanupTestCase(); + void loadAtNImages(); +}; + +tst_QTextImageHandler::tst_QTextImageHandler() +{ +} + +void tst_QTextImageHandler::init() +{ +} + +void tst_QTextImageHandler::cleanup() +{ +} + +void tst_QTextImageHandler::cleanupTestCase() +{ +} + +void tst_QTextImageHandler::loadAtNImages() +{ + QTextDocument doc; + QTextCursor c(&doc); + c.insertHtml(""); + QTextImageHandler handler; + QTextImageFormat fmt; + fmt.setName("data/image.png"); + + for (int i = 1; i < 3; ++i) { + QImage img(20, 20, QImage::Format_ARGB32_Premultiplied); + img.fill(Qt::white); + img.setDevicePixelRatio(i); + QPainter p(&img); + handler.drawObject(&p, QRect(0, 0, 20, 20), &doc, 0, fmt); + p.end(); + QVERIFY(!img.isNull()); + const auto expectedColor = i == 1 ? Qt::red : Qt::green; + QCOMPARE(img.pixelColor(0, 0), expectedColor); + } +} + +QTEST_MAIN(tst_QTextImageHandler) +#include "tst_qtextimagehandler.moc" diff -Naur a/qtbase/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp b/qtbase/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp --- a/qtbase/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp 2022-01-25 17:23:44.193496115 +0000 @@ -29,7 +29,7 @@ #include - +#include #include #include #include @@ -44,6 +44,7 @@ #include #include #endif +#include #include typedef QList IntList; @@ -100,6 +101,13 @@ void checkBorderAttributes_data(); void checkBorderAttributes(); +#ifndef QT_NO_WIDGETS + void columnWidthWithSpans(); + + void columnWidthWithImage_data(); + void columnWidthWithImage(); +#endif + private: QTextTable *create2x2Table(); QTextTable *create4x4Table(); @@ -1278,5 +1286,84 @@ } } +#ifndef QT_NO_WIDGETS +void tst_QTextTable::columnWidthWithSpans() +{ + cleanup(); + init(); + QTextTable *table = cursor.insertTable(4, 4); + QTextEdit textEdit; + textEdit.setDocument(doc); + textEdit.show(); + QVERIFY(QTest::qWaitForWindowExposed(&textEdit)); + + for (int i = 0; i < table->columns(); ++i) + table->cellAt(0, i).firstCursorPosition().insertText(QString("Header %1").arg(i)); + + QTextBlock block = table->cellAt(0, 0).firstCursorPosition().block(); + const QRectF beforeRect = table->document()->documentLayout()->blockBoundingRect(block); + table->mergeCells(1, 0, 1, table->columns()); + block = table->cellAt(0, 0).firstCursorPosition().block(); + const QRectF afterRect = table->document()->documentLayout()->blockBoundingRect(block); + QCOMPARE(afterRect, beforeRect); +} + +void tst_QTextTable::columnWidthWithImage_data() +{ + const auto imageHtml = [](int width, int height) { + QImage image(width, height, QImage::Format_RGB32); + image.fill(Qt::red); + QByteArray imageBytes; + QBuffer buffer(&imageBytes); + buffer.open(QIODevice::WriteOnly); + image.save(&buffer, "png"); + return QString("").arg(QString(imageBytes.toBase64())); + }; + + QTest::addColumn("leftHtml"); + QTest::addColumn("rightHtml"); + QTest::addColumn("imageSize"); + QTest::addRow("image") + << imageHtml(500, 32) << "" << QSize(500, 32); + QTest::addRow("image, text") + << imageHtml(32, 32) << "abc" << QSize(32, 32); + QTest::addRow("image, 100%% text") + << imageHtml(32, 32) << "abc" + << QSize(32, 32); + QTest::addRow("image, image") + << imageHtml(256, 32) << imageHtml(256, 32) << QSize(256, 32); +} + +void tst_QTextTable::columnWidthWithImage() +{ + const QString tableTemplate = "%1 %2
"; + + QFETCH(QString, leftHtml); + QFETCH(QString, rightHtml); + QFETCH(QSize, imageSize); + + QTextDocument doc; + doc.setHtml(tableTemplate.arg(leftHtml).arg(rightHtml)); + QTextEdit textEdit; + textEdit.setDocument(&doc); + textEdit.show(); + QVERIFY(QTest::qWaitForWindowExposed(&textEdit)); + + QTextCursor cursor(doc.firstBlock()); + cursor.movePosition(QTextCursor::Right); + + QTextTable *currentTable = cursor.currentTable(); + QVERIFY(currentTable); + + QTextBlock block = currentTable->cellAt(0, 0).firstCursorPosition().block(); + const QRectF leftRect = currentTable->document()->documentLayout()->blockBoundingRect(block); + block = currentTable->cellAt(0, 1).firstCursorPosition().block(); + const QRectF rightRect = currentTable->document()->documentLayout()->blockBoundingRect(block); + QCOMPARE(leftRect.size().toSize(), imageSize); + QVERIFY(rightRect.left() > leftRect.right()); +} +#endif + + QTEST_MAIN(tst_QTextTable) #include "tst_qtexttable.moc" diff -Naur a/qtbase/tests/auto/network/access/qnetworkreply/BLACKLIST b/qtbase/tests/auto/network/access/qnetworkreply/BLACKLIST --- a/qtbase/tests/auto/network/access/qnetworkreply/BLACKLIST 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/access/qnetworkreply/BLACKLIST 2022-01-25 17:23:44.121496373 +0000 @@ -1,7 +1,4 @@ # See qtbase/src/testlib/qtestblacklist.cpp for format -[authenticationCacheAfterCancel] -windows-7sp1 -windows-10 msvc-2015 [backgroundRequestInterruption] opensuse-leap windows-10 msvc-2015 diff -Naur a/qtbase/tests/auto/network/ssl/qdtls/tst_qdtls.cpp b/qtbase/tests/auto/network/ssl/qdtls/tst_qdtls.cpp --- a/qtbase/tests/auto/network/ssl/qdtls/tst_qdtls.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/qdtls/tst_qdtls.cpp 2022-01-25 17:23:44.114496398 +0000 @@ -40,10 +40,13 @@ #include #include +#include #include #include +#include #include #include +#include #include @@ -312,6 +315,19 @@ QCOMPARE(dtls.dtlsError(), QDtlsError::InvalidOperation); QCOMPARE(dtls.dtlsConfiguration(), config); } + + static bool doneAlready = false; + if (!doneAlready) { + doneAlready = true; + QSslConfiguration nullConfig; + const auto defaultDtlsConfig = QSslConfiguration::defaultDtlsConfiguration(); + const auto restoreDefault = qScopeGuard([&defaultDtlsConfig] { + QSslConfiguration::setDefaultDtlsConfiguration(defaultDtlsConfig); + }); + QSslConfiguration::setDefaultDtlsConfiguration(nullConfig); + QCOMPARE(QSslConfiguration::defaultDtlsConfiguration(), nullConfig); + QVERIFY(QSslConfiguration::defaultDtlsConfiguration() != defaultDtlsConfig); + } } void tst_QDtls::invalidConfiguration() diff -Naur a/qtbase/tests/auto/network/ssl/qdtlscookie/tst_qdtlscookie.cpp b/qtbase/tests/auto/network/ssl/qdtlscookie/tst_qdtlscookie.cpp --- a/qtbase/tests/auto/network/ssl/qdtlscookie/tst_qdtlscookie.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/qdtlscookie/tst_qdtlscookie.cpp 2022-01-25 17:23:44.116496391 +0000 @@ -288,6 +288,20 @@ clientPort), true); QCOMPARE(anotherListener.verifiedHello(), dgram); QCOMPARE(anotherListener.dtlsError(), QDtlsError::NoError); + + // Now, let's test if a DTLS server is able to create a new TLS session + // re-using the client's 'Hello' with a cookie inside: + QDtls session(QSslSocket::SslServerMode); + auto dtlsConf = QSslConfiguration::defaultDtlsConfiguration(); + dtlsConf.setDtlsCookieVerificationEnabled(true); + session.setDtlsConfiguration(dtlsConf); + session.setPeer(clientAddress, clientPort); + // Borrow a secret and hash algorithm: + session.setCookieGeneratorParameters(listener.cookieGeneratorParameters()); + // Trigger TLS state machine change to think it accepted a cookie and started + // a handshake: + QVERIFY(session.doHandshake(&serverSocket, dgram)); + // Now let's use a wrong port: QCOMPARE(listener.verifyClient(&serverSocket, dgram, clientAddress, serverPort), false); // Invalid cookie, no verified hello message: diff -Naur a/qtbase/tests/auto/network/ssl/qocsp/tst_qocsp.cpp b/qtbase/tests/auto/network/ssl/qocsp/tst_qocsp.cpp --- a/qtbase/tests/auto/network/ssl/qocsp/tst_qocsp.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/qocsp/tst_qocsp.cpp 2022-01-25 17:23:44.100496449 +0000 @@ -491,9 +491,9 @@ { // Now the server will send a valid 'status: good' response. OcspServer server(subjectChain, privateKey); - const QByteArray response(goodResponse(subjectChain, responderChain, privateKey)); - QVERIFY(response.size()); - server.configureResponse(response); + const QByteArray responseData(goodResponse(subjectChain, responderChain, privateKey)); + QVERIFY(responseData.size()); + server.configureResponse(responseData); QVERIFY(server.listen()); QSslSocket clientSocket; @@ -502,6 +502,19 @@ loop.enterLoopMSecs(handshakeTimeoutMS); QVERIFY_HANDSHAKE_WITHOUT_ERRORS(clientSocket); + + const auto responses = clientSocket.ocspResponses(); + QCOMPARE(responses.size(), 1); + const auto &response = responses.at(0); + QVERIFY(response != QOcspResponse()); + const auto copy = response; + QCOMPARE(copy, response); + QVERIFY(qHash(response, 0) != 0); + + QCOMPARE(response.revocationReason(), QOcspRevocationReason::None); + QCOMPARE(response.certificateStatus(), QOcspCertificateStatus::Good); + QCOMPARE(response.subject(), clientSocket.peerCertificate()); + QCOMPARE(response.responder(), clientSocket.peerCertificate()); } } diff -Naur a/qtbase/tests/auto/network/ssl/qpassworddigestor/tst_qpassworddigestor.cpp b/qtbase/tests/auto/network/ssl/qpassworddigestor/tst_qpassworddigestor.cpp --- a/qtbase/tests/auto/network/ssl/qpassworddigestor/tst_qpassworddigestor.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/qpassworddigestor/tst_qpassworddigestor.cpp 2022-01-25 17:23:44.105496431 +0000 @@ -28,18 +28,77 @@ #include #include +#include #include +#include + class tst_QPasswordDigestor : public QObject { Q_OBJECT private Q_SLOTS: + void inputSanityChecks(); void pbkdf1Vectors_data(); void pbkdf1Vectors(); void pbkdf2Vectors_data(); void pbkdf2Vectors(); }; +void tst_QPasswordDigestor::inputSanityChecks() +{ + const QByteArray pass("password"); + const QByteArray salt("saltsalt"); +#ifndef QT_CRYPTOGRAPHICHASH_ONLY_SHA1 + //1. PBKDF1 supports only SHA1 and (if not disabled in Qt) MD5 algorithms. + QTest::ignoreMessage(QtWarningMsg, "The only supported algorithms for pbkdf1 are SHA-1 and MD5!"); + auto derivedKey = QPasswordDigestor::deriveKeyPbkdf1(QCryptographicHash::Sha224, pass, salt, 2, 48); + QCOMPARE(derivedKey, QByteArray()); +#endif // QT_CRYPTOGRAPHICHASH_ONLY_SHA1 + + // 2. Salt size must be == 8: + QTest::ignoreMessage(QtWarningMsg, "The salt must be 8 bytes long!"); + derivedKey = QPasswordDigestor::deriveKeyPbkdf1(QCryptographicHash::Sha1, pass, "salt", 2, 48); + QCOMPARE(derivedKey, QByteArray()); + + // 3. An illegal number of iterations (0): + derivedKey = QPasswordDigestor::deriveKeyPbkdf1(QCryptographicHash::Sha1, pass, salt, 0, 48); + QCOMPARE(derivedKey, QByteArray()); + + // 4. An illegal number of iterations (-10): + derivedKey = QPasswordDigestor::deriveKeyPbkdf1(QCryptographicHash::Sha1, pass, salt, -10, 48); + QCOMPARE(derivedKey, QByteArray()); + + // 5. An invalid key size (0): + derivedKey = QPasswordDigestor::deriveKeyPbkdf1(QCryptographicHash::Sha1, + "password", "saltsalt", 1, 0); + QCOMPARE(derivedKey, QByteArray()); + + // 6. Requested key is too large: + QTest::ignoreMessage(QtWarningMsg, "Derived key too long:\n" + " QCryptographicHash::Sha1 was chosen which" + " produces output of length 20 but 120 was requested."); + derivedKey = QPasswordDigestor::deriveKeyPbkdf1(QCryptographicHash::Sha1, pass, salt, 1, + quint64(QCryptographicHash::hashLength(QCryptographicHash::Sha1) + 100)); + QCOMPARE(derivedKey, QByteArray()); + + // 7. Key size is too large, max is quint64(std::numeric_limits::max() - 1) * hashLen + const auto invalidDkLen = quint64(QCryptographicHash::hashLength(QCryptographicHash::Sha1)) + * (std::numeric_limits::max() - 1) + 1; + QTest::ignoreMessage(QtWarningMsg, "Derived key too long:\n" + "QCryptographicHash::Sha1 was chosen which produces output" + " of length 85899345880 but 85899345881 was requested."); + derivedKey = QPasswordDigestor::deriveKeyPbkdf2(QCryptographicHash::Sha1, pass, salt, 1, invalidDkLen); + QCOMPARE(derivedKey, QByteArray()); + + // 8. Invalid number of iterations. + derivedKey = QPasswordDigestor::deriveKeyPbkdf2(QCryptographicHash::Sha1, pass, salt, 0, 100); + QCOMPARE(derivedKey, QByteArray()); + + // 9. Invalid (negative) number of iterations. + derivedKey = QPasswordDigestor::deriveKeyPbkdf2(QCryptographicHash::Sha1, pass, salt, -100, 100); + QCOMPARE(derivedKey, QByteArray()); +} + void tst_QPasswordDigestor::pbkdf1Vectors_data() { QTest::addColumn("algorithm"); diff -Naur a/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/aspiriniks.ca.crt b/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/aspiriniks.ca.crt --- a/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/aspiriniks.ca.crt 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/aspiriniks.ca.crt 2022-01-25 17:23:44.116496391 +0000 @@ -0,0 +1,22 @@ +-----BEGIN CERTIFICATE----- +MIIDnDCCAoQCCQDV3otC4hs2KTANBgkqhkiG9w0BAQUFADCBjzELMAkGA1UEBhMC +Tk8xDTALBgNVBAgTBE9zbG8xDTALBgNVBAcTBE9zbG8xDzANBgNVBAoTBlRUIEFT +QTEOMAwGA1UECxMFUVQgU1cxHDAaBgNVBAMTE2FzcGlyaW5pa3MudHJvbGwubm8x +IzAhBgkqhkiG9w0BCQEWFGFiYWJpY0B0cm9sbHRlY2guY29tMB4XDTA4MTEwMTA4 +NTcyOFoXDTA5MTEwMTA4NTcyOFowgY8xCzAJBgNVBAYTAk5PMQ0wCwYDVQQIEwRP +c2xvMQ0wCwYDVQQHEwRPc2xvMQ8wDQYDVQQKEwZUVCBBU0ExDjAMBgNVBAsTBVFU +IFNXMRwwGgYDVQQDExNhc3BpcmluaWtzLnRyb2xsLm5vMSMwIQYJKoZIhvcNAQkB +FhRhYmFiaWNAdHJvbGx0ZWNoLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAMV2bMD1DN3DMgbxU3DXw2i7EWGDXcWjTDtdHvqgIb+9nHqo3MJSrzJy +qgEPoOsXqswMla9wDPZAsWv5gVAmVSqpy2lfEgfY7LaSHiGD75seF7zIy+CxREHW +DofHXpJGGJpBCZEKQt2HfHu3+yAYNPucN78tWNZAcPbUg5tfxMZeepRimAZNIxBI +93SDrl/f9Ka7hvPSzUQsnp8hfdpHlFPFznKfD6yPrjxgz2mT9efavJ4DhtyIa4m+ +paiX515CidDz4A8CFxKZbYvuqq1ilibF/si2so9VhALC77ZcAJP1IMuT8T+WUCxq +skJqiSCncl0Hgr+ba8MDGF9UQYowgjMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +KcJuNUHvjB8ok3cnTmQEeF0LPPkgj28Tqb5TFB8xpVfRI+wvTYsHsmGdOKCgYJ3a +7VflIsr63ojG8/rXK8H/cx2o2f2Hr3liJdi1UnoLDDRjBqGGz7JNuMreYokPvIbm +eP01mVyK4PO2iYRwHUIAw5eeB1vMWKX2z95MupD+HRLtmGyaLALg8aQxj5N84Ewl +eU2PQfhv8A1wj7aL17kfEUxDerQ1kUzlThJMV1J8Dl0l4C9N8evQkelROJU00i46 +oJikA8BW6EpgbnGyNyyj5Loy4wLPKew9nTS8MCJ5xPMQc0urbY/VzuOeUK7WQof7 +xOFSsRAVyQv+yqgmcZMCtg== +-----END CERTIFICATE----- diff -Naur a/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-cn.pem b/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-cn.pem --- a/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-cn.pem 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-cn.pem 2022-01-25 17:23:44.116496391 +0000 @@ -0,0 +1,32 @@ +-----BEGIN CERTIFICATE----- +MIIFfTCCA2WgAwIBAgIUEciqqaXfpL5/Ytf0D64oDHQQ2fIwDQYJKoZIhvcNAQEL +BQAwTTELMAkGA1UEBhMCTk8xDTALBgNVBAgMBE9zbG8xDTALBgNVBAcMBE9zbG8x +DDAKBgNVBAsMA1ImRDESMBAGA1UEAwwJWU9VUiBuYW1lMCAXDTIwMTExOTEzMzEw +NVoYDzIxMjAxMDI2MTMzMTA1WjBNMQswCQYDVQQGEwJOTzENMAsGA1UECAwET3Ns +bzENMAsGA1UEBwwET3NsbzEMMAoGA1UECwwDUiZEMRIwEAYDVQQDDAlZT1VSIG5h +bWUwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDCZmoIs4mApLPRw+gI +DxOkTyT/Zyma2LILF26vxOrqE5ygwcJYVWg8HTSlCuJ8Gc22UofuNYvtKLcv8xpz +/mzhOAvsmL9Q7vPlMshUxz0ITPCD/0R4Z95U9vw4/ytzUvf2sz1tgqc08QAS+TyJ +wzljHyN8a+M7yZK71OF+Qto9bFgdA0nWC2AcoHcRhL1UJUSVAl8Ifi7n/lnPIMqr +bvmFfn4wkE+EDO3QnkBNMI5fsvPrfC8TV1D/zGQUZGp/AjqzVZtAonjzE1qVu5IX +ye3Kl9VTsbM0Ms7HnNk7c0ysXnneoIyLl+Gd4EaogFPKjysOidzA2aZIx/aEtPAU +RzL5yxZaVuXEqsqkAcyt2EAhh225ybQPNhi9hy9cFKDpjmngv1UppfAk0FMgmNbr +/GCO4I1J8Bt4/54WhSQuvK8WIo1OcALifOuTalzhmX/ndyoT79SwTZShNasQYEl7 +i9EjKCx0tOWG3yO1I6cyeycQcTCJCmFa3/SdnYuooZ6enlvwHP1cTeNdu2d40hxu +mtlhd7n21FWFHnoMUyBw6ZsWnicY/Nne2a7wCivF7uEjmzFkjNDDoK7xaFz9G2bn +IkdI3R7kNPA4Z+iJKguu6xD63ZOjlB7hRQHhtYxvKhsNNQv90a+eh5EPE8aacGwr +1P04f40Ap/41lAuL/7dS41jGkwIDAQABo1MwUTAdBgNVHQ4EFgQUU0ZlIZM8B5kb +butAVOJkN0VSTB0wHwYDVR0jBBgwFoAUU0ZlIZM8B5kbbutAVOJkN0VSTB0wDwYD +VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAE7SoFANxr/JsSE2NhxBE +yXyLo2Tqv1izBMWXk1HSQJr6Vhoi1g0r3yexIbLbWNelgh7V+oicjHmlqmwi0t+c +7wyhNTc7HUHWQRGO8y//4GSSgGbjNTt5FY7wo+X3QwbH5mGUwRPqfGm/H+f1vRCZ +Gc2e6YSrDtVwuCT4IwoJQEC/6bFDPlkXBDvlKp7pC67arr/LwXdTv8MGkZjYIKgy +PlbAGiWmpSgmUrU9Q/DnQRlvi2DYOE5fTENrDhXGG0La8h3lTqqm7X0fwY73ZoaG +VO0WXoYZmY8t+UuD39gYHR6kOzZN48D4G41HEBP01c6MQU6ocgkxFwI5IyBR3nwf +UEMpTuWTPUokDI2UzrCjigedXb8WhAOnm6IyOgBOtQrfF5xwZd0Jt5tZCszw7stE +3bz8FVAECPZ3LB2lWidwuHpcyFRvYMMoWIzzwl+BsM95rI0IyBpM3nNLwMk4Gy4Y +uuZTSkNDO1tuUjppf6J7iIq272xlBt6xxTGvlWZEPYQyYeNWd9yZ0NXQZBwBSyo8 +Twf4TyeHDvBNnOQIlzPAnONJWDUWWFT0pJfn0cVFypA0FZ6ZPgIlLfgjNgKDyHH9 +NCtBF9luhfMY5ncX9bB+foRdyceAnM3LJCLjNEmzKC7gZ9H9yyaOVgtHyZmwecE5 +H/WJbjX6rYLrU2reHuVGf30= +-----END CERTIFICATE----- diff -Naur a/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-noname.pem b/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-noname.pem --- a/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-noname.pem 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-noname.pem 2022-01-25 17:23:44.116496391 +0000 @@ -0,0 +1,32 @@ +-----BEGIN CERTIFICATE----- +MIIFfTCCA2WgAwIBAgIUDI7wlRkJ11GOMiPwMqLUHtQvzaQwDQYJKoZIhvcNAQEL +BQAwTTELMAkGA1UEBhMCTk8xDTALBgNVBAgMBE9zbG8xDTALBgNVBAcMBE9zbG8x +IDAeBgkqhkiG9w0BCQEWEW1pbmltaUBkcmV2aWwuY29tMCAXDTIwMTExOTEzMzQ0 +MloYDzIxMjAxMDI2MTMzNDQyWjBNMQswCQYDVQQGEwJOTzENMAsGA1UECAwET3Ns +bzENMAsGA1UEBwwET3NsbzEgMB4GCSqGSIb3DQEJARYRbWluaW1pQGRyZXZpbC5j +b20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDR4hy/ySyPy6y/TTWI +zHBbN8Lw6IiCtemmKdwzf32RKubV7iErJwCQ0QxPvqJSzVBfHYzzjlRzQ5bTWeVg +7pcUY1W51J9bgpC95gDviOnjkDEBIocapcGGLqMVZuoghZrKDXdzA9r2TQ/bfWIR +6mB2ZgYMUN+5xa7ytvCrz/oYEIGGGojfyK8DPsz5qnV7csnZT+5tDOjkx8dQsDrf +Ob69WKpb6+vPAdh2zWMg+25DamXzLqmEcmAgfAJu6MhtWf787zdsXXsxOHcBOjSJ +plRG4Di0+aV84fnJWvv1+LNmstSGpO3jnrl6bpQVyCBn6/RHcO8bt0oDZ4nJhc6n +5x1VmmWpo11YOJgR6smrUn+OdwZVASCdeaD46X7dmgjg1BTRdIDLDFlF2V/cZRu0 +afeRyHGN0PmusMrARYaCxiXBLLSLrDhxkbT8U4yb36uxWP672aHgpStzbhIPs4HU +/2MzZ9kHHbQVoYJEgAUhi3LyeSHFjkhSk2ZIRpQtjYLFXyngfJ//UqqCYtjY75cZ +X3P+CG35QP1uF6ORWAxTedESX5qSQyc7YUq5H14NvcwY/hqLmjm1EvCKuPrKRD9C +/V0GzBcB7seW0gB0h5+1xMzPhEeubqo965w3NRezUjCmSMkRZGcKGdV9zBq2XD9F +964yS6wxNkAxi5CpcAzD+EIu7QIDAQABo1MwUTAdBgNVHQ4EFgQUB4K2uwCB1DGy +eC5hLGQvh8rvdwEwHwYDVR0jBBgwFoAUB4K2uwCB1DGyeC5hLGQvh8rvdwEwDwYD +VR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAgEAluDSEjAtVYepxcBt1Azi +7V6Ux0t7AFRfHxBViBzEhCJ8po+TejgDQpWsc6i5/upaqZb5ADoytiPnwAS9X620 +/Q3Q87wXHyHtUuW89p9DCynZpGYQAhSXbLd3YHn2fn2/WeyqX9YjiZvO2AJhdEz2 +o0jM1RQZDT5I9e/bxHKxOd1gv/zBSrDh1CMCmoPcCHMWyr5lN8He8IpKnIXj6DIq +mJxgNfM1WFraFp1Qc5V27iH69iNJuvR2bHY+772BzFkBis3jA8A55uUaP9EhU8EH +/dnBf6RwUrtTaa7ym5rFrJNiCT/AOmCFkTHMC2KNYAJ2WsQlFo2LUfuWUKN9aN9a +jrnXMgSlY2sWJxPpzR/Z1yNPLqxexr2axMX9LS2WoJMPPChSGERAPlaiBlj8ZE42 +JmYjxf5CxN7EgbZP8HjwueXFP2j+2eZEN08lDZJqWu8Q3OzvRSzYyE674tfL0TJX +q9SYDK/Js04wjsYxR+py7Rz9elu5jHin+2qiVw7Z+6GlAxdrviirEPYoc87y26Va +hpfMwrYB+7M8CrLLtwIRkZSHiHhcgw6wAGaYYCxsYjtDcjc4OLCUbYqRbI86vZ9M +qXfM189o5TMkgamKO+TdUQSZT+7iUvhffI7Daq3+F/UKCLDSIPXvmasAP7cMKhQy +tZkqJ5oHw1YBsGSZoL10TZs= +-----END CERTIFICATE----- diff -Naur a/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-on.pem b/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-on.pem --- a/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-on.pem 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-on.pem 2022-01-25 17:23:44.116496391 +0000 @@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFVTCCAz2gAwIBAgIUcX6P/xc82lIq8PrtHoW3JO02VL0wDQYJKoZIhvcNAQEL +BQAwOTELMAkGA1UEBhMCTk8xDTALBgNVBAgMBE9zbG8xDTALBgNVBAcMBE9zbG8x +DDAKBgNVBAoMA1ImRDAgFw0yMDExMTkxMjI4NDRaGA8yMTIwMTAyNjEyMjg0NFow +OTELMAkGA1UEBhMCTk8xDTALBgNVBAgMBE9zbG8xDTALBgNVBAcMBE9zbG8xDDAK +BgNVBAoMA1ImRDCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOHvuJbt +o70wSSarD6Dslu3XqONT2x6zDXODltVmX0XEgb1S4tKG9p/Ax+h2EFnoNRs0mTSM +hZfdbwwI7XzIAhIQMWvef/3P/BQNy8DRSGSGya4DY0E2qFJHJR6ijGuQfHrhsBSV +eIXOx7mf05pX1ra0lhqRuLQPxPioDqeNxuSdfYfP4DM6ZicFfkfk7cU+xrXTieWI +qGx7ZBN8VMUVZq/uw4MfBiZcP+Xqp3YOVlfqhEcxTFvl8dwBb2Yblgl1ujb4YR4F +pC/M2kPVEBTT1LLwhVWy9rRMS0Jk656q/31p7qQCp4xrv5RLfc0YR3cdwhePKQlo +XXmtrUupbvq9z8hmFo7rqtGZ4xN1cDuaHi9ufe/l9NmGtI4qTqbFtWBMfh3+psB3 +wNMwtLXi/a2x9Ucg8atljC5kk0O5MxtLJwL0MIQpIzpbAy9ZMb4qSOeB5ZrsvILl ++6oQcSBLqzwZ8x6f/3igWTh3H/xJRTbE5W5a47L2LCLk8HYP8hfpG24Rn3cuS2oO +eFFePjylebTAYU4CQ2bpWxkEEs/QMv50sB526GZm47RrFLllj1sTBGWOUYf6+Kqw +LhpO4aO9PmClKYrcrD+5N2IMUbBLQTRw2lyzQ//yKTHrAD6FMrPVrPOT2Hg6Kl+X +/Z+a+o9nIOqi2vj2f542QqGsYlxOQNhyx0+NAgMBAAGjUzBRMB0GA1UdDgQWBBSP +gJvZEkM5CdPIyXU/HxWD8+VRrTAfBgNVHSMEGDAWgBSPgJvZEkM5CdPIyXU/HxWD +8+VRrTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQDh24bPfdni +Ao3r/KRHSeOVAdIjLpJ4pCdkWb/fQTjX/R/UCzAXGb9fZC9P83R/ySMNa+c/t1xQ +FYFuo72DxQokWA8gc25gmibt+zCVP8ociOA//XTh2HEaq3rXmBjG6uTzxe1l1JTg +5HFGSc345fgZrTHRs8MoPxZh842WZ4Z14vwfjoRDN75/N11Pe9muTTQbeFcESYay +L46gRq6RDK1ZxwMY+HzBn9cVjcPgOCdedhEL5kHkSY65qnQJZkqguY+sAWcVKBH2 ++dXori9kNdv/fzr1w4swiqAtIcNauRoiQ1Gh7m3881AxQXT2pYKpl3zu268sx33i +XIBcXoRdwBvy80Ave0Z+nihZU6R+CXJtb9xl4kfJof8cgagAkuNLRpY9OW6n8rBo +yX9mwg7z8tKV+2AaUJl+kiRfhujLmoohouP34/LdTHXTdIh1O0Jwx36QY4ara9ER +QsQjUmnmWJREvwzzUVsqcOOduHPEJyz5wIDFpw2KLR+8N2i6/jBs9/dWps476Ohj +b9+y/tXKcWt+ja9MGvw0Bn8pqU8r4Kj3aYM8KzezRSEL7KKPSNFKkOZYzRYwGkXn +O+ZIyasjjO/C4aSlpZCgWQ1B400ZlrXKmEiFJpkGBnQP/offQJKeSxlfnWwOQ4Og +0TsWxr+VMy7uRq8ltTKbE0UvHPQqf9AmkQ== +-----END CERTIFICATE----- diff -Naur a/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-oun.pem b/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-oun.pem --- a/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-oun.pem 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/tests/auto/network/ssl/qsslcertificate/more-certificates/cert-oun.pem 2022-01-25 17:23:44.116496391 +0000 @@ -0,0 +1,31 @@ +-----BEGIN CERTIFICATE----- +MIIFZTCCA02gAwIBAgIUDufSooDGcwmx5dTWzw76lAH4m+EwDQYJKoZIhvcNAQEL +BQAwQTELMAkGA1UEBhMCTk8xDTALBgNVBAgMBE9zbG8xDTALBgNVBAcMBE9zbG8x +FDASBgNVBAsMC0ZvdW5kYXRpb25zMCAXDTIwMTExOTEzMjczM1oYDzIxMjAxMDI2 +MTMyNzMzWjBBMQswCQYDVQQGEwJOTzENMAsGA1UECAwET3NsbzENMAsGA1UEBwwE +T3NsbzEUMBIGA1UECwwLRm91bmRhdGlvbnMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDEtFnz4VNkh/4eX8jh/QWaJXR8lMliZ/CBqheresvlQPIVpO/i +iDsPeY6eZazko/B0NOoM+oJ0PBGepC8AJOdHf6peo4iNXiA7odczUBUoC1ALal03 +V1KbRfATPYiDaPAUWg1nyEnb5DymLeX0lEwRitPxobYzIw00h/YpHnABj8MwyyNM +vgk+wYrPCwVUyZwrhS+FClm12Eoff9sWJ+sqqlJZT0CQfKGbYd6h/itHcGVuCBPK +pHgGrd2xuqK+CYrYLlyIFOWpk2ICRNGDHmNwj55+Sbj83Ryo40IkECBza9ge1axA +qwYaVORWVSkXet6bN+d2alasJOCPkRvA88wTU+/CSQEtDiiHJMw0LOpyEZMq/0y8 +RcGHqMpTEIbkhzXh9BxyVFsOL0TNdMSfjZwlT405pYJlODxSSgtYD1Fsu1T0ZMO2 +37EcvImUni0ZrrC8S+QRac4nKM5mWjT5kB5XfKOLWzW2uZTTqpya0HJijfwcX6wA +j3mb4w33NXb6zzbZQVVBsPdl1K2J8Q/lXjDvDA3SvusT9mt/0eCu/HYdyBmkMsA3 +ILIJbU1+xKN5GHZdFDtjzGb3UjV5dLqzgBzn6z4vStBbM4rilhW17gPEmpseB1h4 +iM5IUUyKwMavJSChxipkS2c8K6c42AkGBf6mMpGlGNXWyYUvH8mOLeU4LwIDAQAB +o1MwUTAdBgNVHQ4EFgQUz/t+47C+Cdk/uidYWQt9hdNHZU4wHwYDVR0jBBgwFoAU +z/t+47C+Cdk/uidYWQt9hdNHZU4wDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0B +AQsFAAOCAgEATF8PkW3GNFXiYy3K8mF0yoZdp0nX771h2Et7FbgNLh25Uv+76amT +ujHzobjQRtx8Ewzl+oJnWPmOqMm3bn6BWBR0tWH136ACFBAV4W9Zr3eAwCbQQgU0 +0okRGDVG/tIVjSym9/5/TF37jkQRGCwHaQdjIRFbKiDhy7P7D4qobNs5G0mUqmxj +DY7lmq93/RhMOQE2JYdx2VrU8IxGZ8v3s3Dzl/ln0iw2wb2inj+YviQRs+vss7mU +lXGS+MTo17OQBLPDBuZWV9x28I79hIaYgEYAcIid0IqV0Mp0ISYOhjOp1X9A/UJi +lSMTMCm2kmrrrHmtJ/G9ztkm4Yc/TUl9qAIlXaY9KN5k+GuSLrxIdA9VII3GvuRg +u2ghKl0xgC+uHfLwlfAxJwWbLyJS/ji3Y5yADc700D++pjZI1rWaC7jbOjH0wocA +DW2tQY6Eh4MA1xQyj2IF24j+wfBNdWg/Ndc9BvCuG00v1qAje7lAZOuA8P2977SS +0zqdgSbkAM83c4O6+kWaiRFb8pPBciSxR0YwIchxjjJWSlcqop6cJxtOKhvG+RQX +oLIkpHJznI8aXK5rEniDb6YJm7o+a0i5cQkJQht1lDPI9WW5d7sliozrm1s+pmcr +AM2KHvDxb9Pur6jIOqm9mvYpI3llJu2ICcp/HKiRI0iVV2a/bd1YQzY= +-----END CERTIFICATE----- diff -Naur a/qtbase/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp b/qtbase/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp --- a/qtbase/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp 2022-01-25 17:23:44.187496136 +0000 @@ -79,6 +79,9 @@ void subjectAlternativeNames_data(); void utf8SubjectNames(); void subjectAlternativeNames(); + void subjectInfoToString(); + void subjectIssuerDisplayName_data(); + void subjectIssuerDisplayName(); void publicKey_data(); void publicKey(); void toPemOrDer_data(); @@ -433,6 +436,63 @@ } } +void tst_QSslCertificate::subjectInfoToString() +{ + QFile certFile(testDataDir + "more-certificates/aspiriniks.ca.crt"); + const bool ok = certFile.open(QIODevice::ReadOnly); + QVERIFY(ok); + const auto chain = QSslCertificate::fromDevice(&certFile, QSsl::Pem); + QCOMPARE(chain.size(), 1); + const auto cert = chain.at(0); + QVERIFY(!cert.isNull()); + + const auto testInfo = [&cert](QSslCertificate::SubjectInfo info, const QString &expected) { + const auto infoAsList = cert.subjectInfo(info); + if (infoAsList.size()) + return expected == infoAsList.at(0); + return expected == QString(); + }; + + QVERIFY(testInfo(QSslCertificate::Organization, QStringLiteral("TT ASA"))); + QVERIFY(testInfo(QSslCertificate::CommonName, QStringLiteral("aspiriniks.troll.no"))); + QVERIFY(testInfo(QSslCertificate::LocalityName, QStringLiteral("Oslo"))); + QVERIFY(testInfo(QSslCertificate::OrganizationalUnitName, QStringLiteral("QT SW"))); + QVERIFY(testInfo(QSslCertificate::CountryName, QStringLiteral("NO"))); + QVERIFY(testInfo(QSslCertificate::StateOrProvinceName, QStringLiteral("Oslo"))); + QVERIFY(testInfo(QSslCertificate::DistinguishedNameQualifier, QString())); + QVERIFY(testInfo(QSslCertificate::SerialNumber, QString())); +#ifndef QT_NO_OPENSSL + // TODO: check why generic code does not handle this! + QVERIFY(testInfo(QSslCertificate::EmailAddress, QStringLiteral("ababic@trolltech.com"))); +#endif +} + +void tst_QSslCertificate::subjectIssuerDisplayName_data() +{ + QTest::addColumn("certName"); + QTest::addColumn("expectedName"); + + QTest::addRow("CommonName") << QStringLiteral("more-certificates/cert-cn.pem") << QStringLiteral("YOUR name"); + QTest::addRow("OrganizationName") << QStringLiteral("more-certificates/cert-on.pem") << QStringLiteral("R&D"); + QTest::addRow("OrganizationUnitName") << QStringLiteral("more-certificates/cert-oun.pem") << QStringLiteral("Foundations"); +#ifndef QT_NO_OPENSSL + QTest::addRow("NoSubjectName") << QStringLiteral("more-certificates/cert-noname.pem") << QString(); +#endif +} + +void tst_QSslCertificate::subjectIssuerDisplayName() +{ + QFETCH(const QString, certName); + QFETCH(const QString, expectedName); + + const auto chain = QSslCertificate::fromPath(testDataDir + certName); + QCOMPARE(chain.size(), 1); + const auto cert = chain.at(0); + QVERIFY(!cert.isNull()); + QCOMPARE(cert.subjectDisplayName(), expectedName); + QCOMPARE(cert.issuerDisplayName(), expectedName); +} + void tst_QSslCertificate::utf8SubjectNames() { QSslCertificate cert = QSslCertificate::fromPath(testDataDir + "certificates/cert-ss-san-utf8.pem", QSsl::Pem, @@ -541,8 +601,15 @@ void tst_QSslCertificate::fromDevice() { QTest::ignoreMessage(QtWarningMsg, "QSslCertificate::fromDevice: cannot read from a null device"); - QList certs = QSslCertificate::fromDevice(0); // don't crash + QList certs = QSslCertificate::fromDevice(nullptr); // don't crash QVERIFY(certs.isEmpty()); + + QFile certFile(testDataDir + "certificates/cert.der"); + const bool ok = certFile.open(QIODevice::ReadOnly); + QVERIFY(ok); + const auto chain = QSslCertificate::fromDevice(&certFile, QSsl::Der); + QCOMPARE(chain.size(), 1); + QVERIFY(!chain.at(0).isNull()); } void tst_QSslCertificate::fromPath_data() @@ -1061,6 +1128,7 @@ #if QT_CONFIG(securetransport) QSKIP("Not implemented in SecureTransport"); #endif + QList errors; QList toVerify; diff -Naur a/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/cacert.pem b/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/cacert.pem --- a/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/cacert.pem 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/cacert.pem 2022-01-25 17:23:44.187496136 +0000 @@ -1,23 +1,25 @@ -----BEGIN CERTIFICATE----- -MIID6zCCAtOgAwIBAgIJAP4bjANFSx0BMA0GCSqGSIb3DQEBBQUAMIGrMSYwJAYD -VQQDEx1XZXN0cG9pbnQgQ2VydGlmaWNhdGUgVGVzdCBDQTETMBEGA1UECBMKTGFu -Y2FzaGlyZTELMAkGA1UEBhMCVUsxHTAbBgkqhkiG9w0BCQEWDmNhQGV4YW1wbGUu -Y29tMUAwPgYDVQQKEzdXZXN0cG9pbnQgQ2VydGlmaWNhdGUgVGVzdCBSb290IENl -cnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTExMDczMTIxMDExNloXDTIxMDcyODIx -MDExNlowgasxJjAkBgNVBAMTHVdlc3Rwb2ludCBDZXJ0aWZpY2F0ZSBUZXN0IENB -MRMwEQYDVQQIEwpMYW5jYXNoaXJlMQswCQYDVQQGEwJVSzEdMBsGCSqGSIb3DQEJ -ARYOY2FAZXhhbXBsZS5jb20xQDA+BgNVBAoTN1dlc3Rwb2ludCBDZXJ0aWZpY2F0 -ZSBUZXN0IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3 -DQEBAQUAA4IBDwAwggEKAoIBAQC5xMKXviXuxFO67WzFIImO5RY3Y+dqt7maTB+p -JiHkn98rJoBB4J1cDnEUIs5ErO+kqOjW7JwF50fePNJ5K+I6SbRVn9gxAI59ZA6O -9UvOPZOw4/6GM24UY4B4mUcp8oXg9fhwgtjVhfXiMD2GvKQq3RazIiCoSW4aJWEq -L58Q+sIo+jL72qwk648xIwIhuC3XzcOOE/+rCOtZmu812/NN08UfsL2qup0aaaGv -aL36n6OIx5AYFcCD5uOxXAmUy14mhwQyDHAl6K42ghSm5b43VMMSQ+N9AQpentWl -RH6Vt1eY52YTxjNxpRlj88GBnYxdr8WgjKOV7v8OPGXP6zWlAgMBAAGjEDAOMAwG -A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADptDEfvsh8aq/tTc7ciGkHG -jh7WFELVTcdWBTyveZ24298Hl9UOfsAfLqjMGMs3delAaZocchba9Og2xSZyRstH -GUtlJXd4PnSJSx/TksPf2DCANo5sxBWBITs1Iprm3Nlm3/xPZM2QLIamRYi2J6Ed -JTfWvMpoaW1umJX49jKqk1gfdcS6eUSaXetgYP2FQV7DstqPLYfQ731nEXZ1LXFM -PO7IoPccqk4YJ0KOV7hFb7NCq4a6cz/Gf0S0qJ44vqHz6iRZpmWIo5UFivwtLw9r -iMbdJ1mCCMR0oN5om3muKc7Sz+l2ItxdYMcLkZ1/3ouvQqOX+qIOrYEUN1RZCzI= +MIIENzCCAx+gAwIBAgIUdn+WSglXIMBvW46H1+kauM81p1UwDQYJKoZIhvcNAQEL +BQAwgaIxCzAJBgNVBAYTAk5PMQ8wDQYDVQQIDAZOb3J3YXkxDTALBgNVBAcMBE9z +bG8xDTALBgNVBAoMBFRRdEMxLzAtBgNVBAsMJlRRdEMgVGVzdCBSb290IEF1dGhv +cml6YXRpb24gQXV0aG9yaXR5MRowGAYDVQQDDBFUUXRDIHRlc3Qgcm9vdCBDQTEX +MBUGCSqGSIb3DQEJARYIY2FAcXQuaW8wHhcNMjEwNzI5MTIzNDM5WhcNMzEwNzI3 +MTIzNDM5WjCBojELMAkGA1UEBhMCTk8xDzANBgNVBAgMBk5vcndheTENMAsGA1UE +BwwET3NsbzENMAsGA1UECgwEVFF0QzEvMC0GA1UECwwmVFF0QyBUZXN0IFJvb3Qg +QXV0aG9yaXphdGlvbiBBdXRob3JpdHkxGjAYBgNVBAMMEVRRdEMgdGVzdCByb290 +IENBMRcwFQYJKoZIhvcNAQkBFghjYUBxdC5pbzCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAOXrt0DU0NCmvB/vsw3d5Ztn3Ab77AmnVSNSkWKOyei7bQ55 +Qx2FR+ihcPL3+HRQ+UAZsV/ryurkrCdFOOpkBC8a1Kq1ErXM9RbBdX9kyX7IG1KD +iwnFuci/2cDgounfxNDLPCWImukKfWGUfWlpnbbF4nYdaeP/S+LvsCklgphGdtLE +uO+bNLUNFT61X3d0eg/NQ0tMFFgjTQkKYueYpoAtS8zsHfJxLKzNVjdkUaqEsN1x +AmE6LLVhMwf7EHwlgCMb3H59R9N+kz8bjCNQrErctF0crvdZjlX9AudZGz6e6xso +Mmw6epkGSGF6eMjK62mQX4Y/15ruNIvuLla1dzcCAwEAAaNjMGEwHQYDVR0OBBYE +FFpvgro1qjV/QzO+gq/hScIGw7CpMB8GA1UdIwQYMBaAFFpvgro1qjV/QzO+gq/h +ScIGw7CpMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3 +DQEBCwUAA4IBAQC+Xbv1f2r2YBXTM7/Uc48DFjdCb4dOKOF8anIGmsG5IfcG77DW +PkyVvPVBVQYw11GtyEwdl5nYyM5VMUT2Jv0kL3sRjQASaQLQCJa3KpYKUV6/7+0W +h8oUSb6FyP8Ks/GTVgHGlSSWU6TixG2k85kKSDNinUDHqrjyS+EYXR4FZHY68lu1 +JSSDBrdEEMmBcChj7Yze9LcdcEUbsALori4363rJCsDmfE6M5nZCFGSn1oUAB8LS +XJ62DI16XbKjwSSFsvJA87n3Ujivytjgdq0e1EgpeNjFvcq5lJ83pQHK/G6+hIna +toLOSqYHUzZv5+NalkbfTUOLSuecUMDTz+KG -----END CERTIFICATE----- diff -Naur a/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/README b/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/README --- a/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/README 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/README 2022-01-25 17:23:44.187496136 +0000 @@ -1,2 +1,9 @@ openssl verify -CAfile cacert.pem -untrusted test-intermediate-ca-cert.pem test-intermediate-is-ca-cert.pem openssl verify -CAfile cacert.pem -untrusted test-ocsp-good-cert.pem test-intermediate-not-ca-cert.pem + +1. cacert.pem is, obviously, a root CA certificate. +2. test-intermediate-ca-cert.pem is a certificate, signed by the root CA, an intermediate CA. +3. test-intermediate-is-ca-cert.pem is a certificate, signed by test-intermediate-ca-cert.pem. +4. test-ocsp-good-cert.pem is signed by root CA, it has CA:FALSE but keyUsage allowing to sign + CSRs - this is how OpenSSL would report us 'invalid CA certificate' instead of 'No issuer found'. +5. test-intermediate-not-ca-cert.pem is signed by test-ocsp-good-cert.pem. diff -Naur a/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-ca-cert.pem b/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-ca-cert.pem --- a/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-ca-cert.pem 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-ca-cert.pem 2022-01-25 17:23:44.187496136 +0000 @@ -1,66 +1,26 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 28 (0x1c) - Signature Algorithm: sha1WithRSAEncryption - Issuer: CN=Westpoint Certificate Test CA, ST=Lancashire, C=UK/emailAddress=ca@example.com, O=Westpoint Certificate Test Root Certification Authority - Validity - Not Before: Jul 31 21:01:18 2011 GMT - Not After : Jul 28 21:01:18 2021 GMT - Subject: ST=Lancashire, C=UK/emailAddress=test@example.com, O=Test intermediate CA - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - Public-Key: (1024 bit) - Modulus: - 00:bc:bd:83:c1:bc:36:d8:9c:74:68:5a:46:48:25: - 83:59:f8:35:1e:8f:dc:2c:52:3b:7c:2e:ea:40:c4: - 93:b6:39:31:df:f5:a6:f8:01:17:67:93:21:59:9b: - 89:7f:ed:2a:19:7b:25:a5:e1:71:12:99:e5:14:28: - df:75:b5:17:1c:3b:1d:3d:74:48:4f:b7:42:f4:3a: - ab:56:05:2b:fc:d3:27:97:01:08:5b:ad:26:9b:f2: - 87:51:9c:7e:e1:f1:ef:1c:bf:ad:7e:38:d9:76:89: - 30:a6:8c:2f:6f:87:9f:9e:57:13:14:b4:45:30:f3: - be:58:df:8a:d2:ee:7b:1d:89 - Exponent: 65537 (0x10001) - X509v3 extensions: - Authority Information Access: - OCSP - URI:http://ocsp.example.com:8888/ - - X509v3 Basic Constraints: - CA:TRUE - Signature Algorithm: sha1WithRSAEncryption - 33:84:9d:0e:b2:59:04:dc:ef:e3:04:8b:00:6c:64:ea:58:9e: - 36:59:76:27:59:a0:b8:ee:0d:86:83:ff:db:65:eb:6c:1f:16: - 47:e7:f5:e6:c3:88:81:73:7e:ed:12:8d:7e:fd:5e:b1:5c:68: - 47:f8:f9:ca:e3:e0:c0:f3:12:b2:24:3b:77:2c:98:de:05:6d: - a8:ec:27:b8:af:ab:84:25:26:73:b4:58:4c:7c:c1:74:97:98: - ab:0e:e6:99:70:bc:38:b0:9a:e3:d9:5c:75:fa:46:d2:87:55: - 09:86:8f:ef:4a:e4:ef:3e:32:c6:ac:9d:27:86:29:b8:78:38: - 7b:87:6c:57:72:bd:57:99:73:36:db:fa:52:bd:7b:a7:05:cd: - 28:b8:85:fc:11:47:5e:c6:77:72:6a:fb:73:3e:8b:a4:6d:f8: - 17:f4:12:d5:36:e0:ef:5c:f8:b2:a1:69:3e:4c:cf:86:5f:63: - f6:02:60:95:7f:61:e8:cb:7f:14:66:da:36:2e:78:13:3e:68: - ae:3f:13:c1:79:88:18:18:3f:23:f3:9a:e1:e7:7e:ae:50:e4: - b7:80:76:31:92:74:79:2c:de:d0:74:fe:81:7c:f6:01:14:6a: - 1f:5f:88:85:6a:11:1d:50:af:f1:97:4d:67:40:c3:e9:ae:6f: - 60:e2:bc:e2 -----BEGIN CERTIFICATE----- -MIIDUDCCAjigAwIBAgIBHDANBgkqhkiG9w0BAQUFADCBqzEmMCQGA1UEAxMdV2Vz -dHBvaW50IENlcnRpZmljYXRlIFRlc3QgQ0ExEzARBgNVBAgTCkxhbmNhc2hpcmUx -CzAJBgNVBAYTAlVLMR0wGwYJKoZIhvcNAQkBFg5jYUBleGFtcGxlLmNvbTFAMD4G -A1UEChM3V2VzdHBvaW50IENlcnRpZmljYXRlIFRlc3QgUm9vdCBDZXJ0aWZpY2F0 -aW9uIEF1dGhvcml0eTAeFw0xMTA3MzEyMTAxMThaFw0yMTA3MjgyMTAxMThaMGIx -EzARBgNVBAgTCkxhbmNhc2hpcmUxCzAJBgNVBAYTAlVLMR8wHQYJKoZIhvcNAQkB -FhB0ZXN0QGV4YW1wbGUuY29tMR0wGwYDVQQKExRUZXN0IGludGVybWVkaWF0ZSBD -QTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvL2Dwbw22Jx0aFpGSCWDWfg1 -Ho/cLFI7fC7qQMSTtjkx3/Wm+AEXZ5MhWZuJf+0qGXslpeFxEpnlFCjfdbUXHDsd -PXRIT7dC9DqrVgUr/NMnlwEIW60mm/KHUZx+4fHvHL+tfjjZdokwpowvb4efnlcT -FLRFMPO+WN+K0u57HYkCAwEAAaNLMEkwOQYIKwYBBQUHAQEELTArMCkGCCsGAQUF -BzABhh1odHRwOi8vb2NzcC5leGFtcGxlLmNvbTo4ODg4LzAMBgNVHRMEBTADAQH/ -MA0GCSqGSIb3DQEBBQUAA4IBAQAzhJ0OslkE3O/jBIsAbGTqWJ42WXYnWaC47g2G -g//bZetsHxZH5/Xmw4iBc37tEo1+/V6xXGhH+PnK4+DA8xKyJDt3LJjeBW2o7Ce4 -r6uEJSZztFhMfMF0l5irDuaZcLw4sJrj2Vx1+kbSh1UJho/vSuTvPjLGrJ0nhim4 -eDh7h2xXcr1XmXM22/pSvXunBc0ouIX8EUdexndyavtzPoukbfgX9BLVNuDvXPiy -oWk+TM+GX2P2AmCVf2Hoy38UZto2LngTPmiuPxPBeYgYGD8j85rh536uUOS3gHYx -knR5LN7QdP6BfPYBFGofX4iFahEdUK/xl01nQMPprm9g4rzi +MIIEbTCCA1WgAwIBAgICEAcwDQYJKoZIhvcNAQELBQAwgaIxCzAJBgNVBAYTAk5P +MQ8wDQYDVQQIDAZOb3J3YXkxDTALBgNVBAcMBE9zbG8xDTALBgNVBAoMBFRRdEMx +LzAtBgNVBAsMJlRRdEMgVGVzdCBSb290IEF1dGhvcml6YXRpb24gQXV0aG9yaXR5 +MRowGAYDVQQDDBFUUXRDIHRlc3Qgcm9vdCBDQTEXMBUGCSqGSIb3DQEJARYIY2FA +cXQuaW8wHhcNMjEwNzI5MTcxNjA3WhcNMzEwNjA3MTcxNjA3WjCBqzELMAkGA1UE +BhMCTk8xDzANBgNVBAgMBk5vcndheTENMAsGA1UECgwEVFF0QzEwMC4GA1UECwwn +VFF0QyBJbnRlcm1lZGlhdGUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MTAwLgYDVQQD +DCdUUXRDIEludGVybWVkaWF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxGDAWBgkq +hkiG9w0BCQEWCWljYUBxdC5pbzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAK1zsW+VafypIPdVrDavxgPJ8LIdYyIJtijHNvWmGDl9fgK8EZWm6uIsvHOL +D2ZtHmBRXCGXOuXFonZh2vpuPUzBdD8E4CQVE31QHHb2eoalpNgiIRODJEfOwMJZ +V5FP/iE5g5TJmbiqMwui2v4g4AWoQpsiSYnlgLd/XbZePpSSAqyZYsxGmzbcf2Vq +v5Tv8SbjLjuRZdwHsrXi/7S4qyybiPHLLoLD7+woDRo8wy+z0wQ8v2XsRzjqvBUn +QvuOvk5MXKHQzXheClMizcDDOcjaK0AKzVopQa6s0+Pmg+DW162DOrK4SGqpeBlp +OujEtiQk9+1hycAadbntYQ+/kHcCAwEAAaOBoTCBnjAdBgNVHQ4EFgQUemD1HaWM +WxNLlSONkvAiFhlmtVowHwYDVR0jBBgwFoAUWm+CujWqNX9DM76Cr+FJwgbDsKkw +EgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwOAYIKwYBBQUHAQEE +LDAqMCgGCCsGAQUFBzABhhxodHRwOi8vb2NzcC5leGFtcGxlLmNvbTo4ODg4MA0G +CSqGSIb3DQEBCwUAA4IBAQBxfeQrh/xnjL8vLLQB0PrPawCUB4X0RHheNAB8BZh/ +5t96StDZspB1p14iW1b9ziiN+w8hghdLO+UbEmbnfK9m0sxXPxGdO/dK5PeKkEZA +1Clbu1qPEwmbCeuPDHpcXMzYUEm/vHTJFNxfvLgiLYwZpxhYZiHeMMEUYxQRrmI1 +DJbcpZT4nYyaVKinvMmw5KG85cLsyjIgzhUwLGSAfB+p4pIX+R8GQZtdn26+FN9c +U+ZDfAUJ0hrPmd89KuSXm96tarx/EYnGzwletTL2IJWS1zxpGFlpyFgWq3m054iD +UAWX8IPCQRMwhoKmSqNbhtYIKLXyDe3Xg6yD0ySDKjlB -----END CERTIFICATE----- diff -Naur a/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-is-ca-cert.pem b/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-is-ca-cert.pem --- a/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-is-ca-cert.pem 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-is-ca-cert.pem 2022-01-25 17:23:44.187496136 +0000 @@ -1,53 +1,25 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 29 (0x1d) - Signature Algorithm: sha1WithRSAEncryption - Issuer: ST=Lancashire, C=UK/emailAddress=test@example.com, O=Test intermediate CA - Validity - Not Before: Jul 31 21:01:18 2011 GMT - Not After : Jul 28 21:01:18 2021 GMT - Subject: CN=example.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - Public-Key: (1024 bit) - Modulus: - 00:c9:bb:98:5b:27:cd:b1:8a:a9:38:fc:aa:bb:ad: - a1:ed:cb:94:94:3e:79:90:ae:35:f3:87:b1:2a:4e: - d5:ff:55:93:e0:1a:68:2a:36:94:05:38:a7:72:64: - a3:31:0f:61:5c:ec:76:41:f1:35:4a:5e:bc:ef:51: - 90:9e:33:b4:08:7a:3f:f0:04:a8:46:99:96:25:b3: - 03:c8:cd:8c:33:42:76:82:b9:db:61:c6:91:ed:76: - 86:ae:04:38:d7:e5:5c:a9:a9:f9:b6:13:f4:90:40: - 6d:ec:2f:ba:ed:bc:ff:88:05:f0:7b:c8:ac:bd:d0: - 72:3a:91:64:86:06:89:66:0d - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - Authority Information Access: - OCSP - URI:http://ocsp.example.com:8888/ - - Signature Algorithm: sha1WithRSAEncryption - 22:30:97:01:ea:d0:a8:d8:b5:32:97:c8:c9:8b:7d:01:02:53: - 74:f8:0a:10:dc:fc:73:b2:50:bb:59:47:f3:e4:9f:44:94:d5: - ca:c0:64:da:83:00:95:43:15:a5:e3:30:ce:66:ca:55:8c:16: - 03:1e:55:02:8b:c7:ad:ed:2e:ae:ee:31:59:53:37:ff:26:86: - 93:9d:e2:69:2e:c0:2a:66:38:a5:b5:54:a1:02:0a:83:67:e0: - 91:cf:fc:09:c3:70:71:b6:cf:fc:d3:e9:9f:f5:1c:4d:55:ec: - 66:f7:07:71:fc:d6:17:de:e1:ab:e6:f2:7b:83:46:1e:b9:96: - 95:8f -----BEGIN CERTIFICATE----- -MIICNjCCAZ+gAwIBAgIBHTANBgkqhkiG9w0BAQUFADBiMRMwEQYDVQQIEwpMYW5j -YXNoaXJlMQswCQYDVQQGEwJVSzEfMB0GCSqGSIb3DQEJARYQdGVzdEBleGFtcGxl -LmNvbTEdMBsGA1UEChMUVGVzdCBpbnRlcm1lZGlhdGUgQ0EwHhcNMTEwNzMxMjEw -MTE4WhcNMjEwNzI4MjEwMTE4WjAWMRQwEgYDVQQDEwtleGFtcGxlLmNvbTCBnzAN -BgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAybuYWyfNsYqpOPyqu62h7cuUlD55kK41 -84exKk7V/1WT4BpoKjaUBTincmSjMQ9hXOx2QfE1Sl6871GQnjO0CHo/8ASoRpmW -JbMDyM2MM0J2grnbYcaR7XaGrgQ41+Vcqan5thP0kEBt7C+67bz/iAXwe8isvdBy -OpFkhgaJZg0CAwEAAaNIMEYwCQYDVR0TBAIwADA5BggrBgEFBQcBAQQtMCswKQYI -KwYBBQUHMAGGHWh0dHA6Ly9vY3NwLmV4YW1wbGUuY29tOjg4ODgvMA0GCSqGSIb3 -DQEBBQUAA4GBACIwlwHq0KjYtTKXyMmLfQECU3T4ChDc/HOyULtZR/Pkn0SU1crA -ZNqDAJVDFaXjMM5mylWMFgMeVQKLx63tLq7uMVlTN/8mhpOd4mkuwCpmOKW1VKEC -CoNn4JHP/AnDcHG2z/zT6Z/1HE1V7Gb3B3H81hfe4avm8nuDRh65lpWP +MIIEMjCCAxqgAwIBAgIUaR2Q0yCxxvaNVph0ASc+zhzQj2wwDQYJKoZIhvcNAQEL +BQAwgasxCzAJBgNVBAYTAk5PMQ8wDQYDVQQIDAZOb3J3YXkxDTALBgNVBAoMBFRR +dEMxMDAuBgNVBAsMJ1RRdEMgSW50ZXJtZWRpYXRlIENlcnRpZmljYXRlIEF1dGhv +cml0eTEwMC4GA1UEAwwnVFF0QyBJbnRlcm1lZGlhdGUgQ2VydGlmaWNhdGUgQXV0 +aG9yaXR5MRgwFgYJKoZIhvcNAQkBFglpY2FAcXQuaW8wHhcNMjEwNzI5MTcyODQy +WhcNMzEwNjA3MTcyODQyWjCBjDELMAkGA1UEBhMCTk8xDzANBgNVBAgMBk5vcndh +eTENMAsGA1UEBwwET3NsbzENMAsGA1UECgwEVFF0QzEXMBUGA1UECwwOUXQgRm91 +bmRhdGlvbnMxFDASBgNVBAMMC2V4YW1wbGUuY29tMR8wHQYJKoZIhvcNAQkBFhB0 +ZXN0QGV4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA +4oQJn7Q5RC3suFgq+mDXbheEG8CQWlCgRoiX4s6ZYVvkwAyh+AfKz6bF6uAkGhSU +BqRGfrTnU46V+IHZT3mxa9KUThhQKzGwEACAoZK1IivDRxA6y/BK3LfJc/hcFqA1 +kVWAs949fOgmJpai8LHXlGMdVnoWJE9jL4OnfHDloVzFLXqUzcvJWOFiEHnGvD8J +S+VmYbMc5Yyw73hrqVgpe302TdGr5x4vgeQwk99r37v1dmHKWiI9PcQyy/Qp576Y +V6pdL164D4cD6OgohSzqd0d3BwAvC8lO9MCJiL5l2TiaJpcEMxS8ycQCwaUp6HC1 +y+HHtfSYu9DRu4PXKccWlQIDAQABo2swaTAOBgNVHQ8BAf8EBAMCBeAwHQYDVR0l +BBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMEMDgGCCsGAQUFBwEBBCwwKjAoBggrBgEF +BQcwAYYcaHR0cDovL29jc3AuZXhhbXBsZS5jb206ODg4ODANBgkqhkiG9w0BAQsF +AAOCAQEAcMAO6aZesrll+VnceYD2A77Uckqu7UaJ+Cno/aXxaZuBVmfyhdUyK9DF +bqLNGooR2DGbCjnoOpAaNGngfEkLH/aiDOaGgF9hPOfeUo2Axw7ElfVvwoyEy4zy +h7GLaA491mjg3XF5ZB56wxbWiBO7nvnHP2ln6x8L5A9RZIofxmChwNuDulB5aog5 +xfoZn8nqM+HQZNUNx5gX/QgPaVu3ytcVy0t8KYQesATc4hu3kaUPP372Unm4qOyA +WjX8g4zgCs4aVhjNqWEuX4FPyZQeY0IE5BK+H50z0m+rfH02Amlvq7TYpN50A9wL +qLirP+moVzEWJKJP0HWT/jo7Ze53FA== -----END CERTIFICATE----- diff -Naur a/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-not-ca-cert.pem b/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-not-ca-cert.pem --- a/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-not-ca-cert.pem 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/test-intermediate-not-ca-cert.pem 2022-01-25 17:23:44.187496136 +0000 @@ -1,54 +1,24 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 27 (0x1b) - Signature Algorithm: sha1WithRSAEncryption - Issuer: CN=example.com, ST=Lancashire, C=UK/emailAddress=test@example.com, O=Some organisation - Validity - Not Before: Jul 31 21:01:18 2011 GMT - Not After : Jul 28 21:01:18 2021 GMT - Subject: CN=example.com - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - Public-Key: (1024 bit) - Modulus: - 00:ea:d6:97:b5:3c:f4:37:8a:58:b4:7a:49:31:55: - dd:c8:84:ee:36:f6:72:3a:31:99:d1:df:af:bb:f9: - 17:e9:d8:47:d2:20:4b:94:ce:ea:c1:6b:23:9a:da: - 02:41:29:51:34:05:13:c0:98:4d:87:f8:91:a8:85: - 81:e4:ab:26:3d:26:59:29:16:7d:04:db:57:7b:f0: - b6:2b:5d:cf:e7:82:ba:83:a7:bc:63:43:03:2a:2b: - 18:40:89:4c:1e:90:bc:bf:10:24:81:50:0d:2e:e8: - 8e:a9:0a:fc:f8:cd:97:98:3c:cc:55:b7:f2:b2:0d: - 0e:36:53:3a:b2:d0:45:90:8b - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - Authority Information Access: - OCSP - URI:http://ocsp.example.com:8888/ - - Signature Algorithm: sha1WithRSAEncryption - 82:d8:53:9c:d8:0b:0a:b3:9d:b4:0a:9f:93:ec:96:a6:31:6b: - 79:c9:d2:1c:76:0b:b7:f3:9f:b9:7a:dd:d7:b7:7b:26:ba:0a: - 54:2a:a3:ad:89:8e:3c:b8:8e:ea:09:53:58:73:9a:b3:a0:40: - 90:02:f2:60:04:b8:f0:2a:61:bd:91:9b:5e:81:5f:bf:cc:f2: - 33:33:8a:70:07:f5:ea:c0:05:38:34:f7:dc:ea:0c:74:01:5d: - dd:92:ab:f2:87:64:1b:7c:be:ae:37:c1:6c:ae:99:73:a5:aa: - 45:20:32:57:19:cb:30:45:61:2c:3b:23:52:ee:f0:cc:12:80: - 97:34 -----BEGIN CERTIFICATE----- -MIICSTCCAbKgAwIBAgIBGzANBgkqhkiG9w0BAQUFADB1MRQwEgYDVQQDEwtleGFt -cGxlLmNvbTETMBEGA1UECBMKTGFuY2FzaGlyZTELMAkGA1UEBhMCVUsxHzAdBgkq -hkiG9w0BCQEWEHRlc3RAZXhhbXBsZS5jb20xGjAYBgNVBAoTEVNvbWUgb3JnYW5p -c2F0aW9uMB4XDTExMDczMTIxMDExOFoXDTIxMDcyODIxMDExOFowFjEUMBIGA1UE -AxMLZXhhbXBsZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAOrWl7U8 -9DeKWLR6STFV3ciE7jb2cjoxmdHfr7v5F+nYR9IgS5TO6sFrI5raAkEpUTQFE8CY -TYf4kaiFgeSrJj0mWSkWfQTbV3vwtitdz+eCuoOnvGNDAyorGECJTB6QvL8QJIFQ -DS7ojqkK/PjNl5g8zFW38rINDjZTOrLQRZCLAgMBAAGjSDBGMAkGA1UdEwQCMAAw -OQYIKwYBBQUHAQEELTArMCkGCCsGAQUFBzABhh1odHRwOi8vb2NzcC5leGFtcGxl -LmNvbTo4ODg4LzANBgkqhkiG9w0BAQUFAAOBgQCC2FOc2AsKs520Cp+T7JamMWt5 -ydIcdgu385+5et3Xt3smugpUKqOtiY48uI7qCVNYc5qzoECQAvJgBLjwKmG9kZte -gV+/zPIzM4pwB/XqwAU4NPfc6gx0AV3dkqvyh2QbfL6uN8FsrplzpapFIDJXGcsw -RWEsOyNS7vDMEoCXNA== +MIID+jCCAuKgAwIBAgIUM3pG/f45Mn2QOCxAjTxuzXfIYj4wDQYJKoZIhvcNAQEL +BQAwgYcxCzAJBgNVBAYTAk5PMQ8wDQYDVQQIDAZOb3J3YXkxDTALBgNVBAcMBE9z +bG8xDTALBgNVBAoMBFRRdEMxEjAQBgNVBAsMCVNvbWUgVW5pdDEUMBIGA1UEAwwL +ZXhhbXBsZS5jb20xHzAdBgkqhkiG9w0BCQEWEHRlc3RAZXhhbXBsZS5jb20wHhcN +MjEwODA2MDQ0MjE1WhcNMzEwNjE1MDQ0MjE1WjCBjDELMAkGA1UEBhMCTk8xDzAN +BgNVBAgMBk5vcndheTENMAsGA1UEBwwET3NsbzENMAsGA1UECgwEVFF0QzEUMBIG +A1UECwwLRm91bmRhdGlvbnMxFDASBgNVBAMMC2V4YW1wbGUuY29tMSIwIAYJKoZI +hvcNAQkBFhNzaWduZWRieW5vbmNhQHF0LmlvMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEApXDPgUmyVw89XB1o+9yPepTyXOUnY4/4JHu333l3IQcEsK17 +tmOftWOa2TGzScrN0sbi73IhCx48/hYI3skHNiocXhHlrNI8tHkwHKWf5k957tMN +xeSIgddRXMegMc4Xxo9IMxFmvAi1q7gnIkEpBg+6NWRGhB3N2Iw8nUtyOc+wx6Us +EzRi/HpITzNsmeuwHPzlKe8HQsL5VeM9oo7HdH7Bb2M7t4+oizZe8jbvhbUWbylb +HDkD1ZoxDRyYAPYkYyvsIodDBSFOQmon7kZtshrmZO+VGPEDisaDJFYppyZNOmmA +g65IUf+0oJW73uuG5dZWwmjEhHlKhkmvqXBoUQIDAQABo1cwVTAOBgNVHQ8BAf8E +BAMCBeAwOAYIKwYBBQUHAQEELDAqMCgGCCsGAQUFBzABhhxodHRwOi8vb2NzcC5l +eGFtcGxlLmNvbTo4ODg4MAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBACBb +ERwLEJ9zGMk4lpnSK4hr2v8JZdVRbozKHUo0Vky3yyVoaFfKZqha9JpP0Ig71lSv +h8tmM41uFmIWCBc+JEu3PIGvZcs45/Py7NHHY5bua3/szRhkz0FbsEYbrCCE/Fom +rYxOd21q9+Aj0/ZGFccpc5v47SW8UFFjn5rhDKXqX7IZjFY/O6ILD/MnDePK963C +pGltAzKw1RRTQoXQWWWOQZx6jT+JFRQ1cc+QlY106461/qg1m1AhBG6/S6tjkcdI +h1jq4yMhfPP9BhxquZB4/mrBUY2rvUO40973m50trszjXSsdRgyScmEJKWco4MAZ +ZccSsplcBjL5ksfejH4= -----END CERTIFICATE----- diff -Naur a/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/test-ocsp-good-cert.pem b/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/test-ocsp-good-cert.pem --- a/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/test-ocsp-good-cert.pem 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/qsslcertificate/verify-certs/test-ocsp-good-cert.pem 2022-01-25 17:23:44.187496136 +0000 @@ -1,67 +1,24 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 1 (0x1) - Signature Algorithm: sha1WithRSAEncryption - Issuer: CN=Westpoint Certificate Test CA, ST=Lancashire, C=UK/emailAddress=ca@example.com, O=Westpoint Certificate Test Root Certification Authority - Validity - Not Before: Jul 31 21:01:16 2011 GMT - Not After : Jul 28 21:01:16 2021 GMT - Subject: CN=example.com, ST=Lancashire, C=UK/emailAddress=test@example.com, O=Some organisation - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - Public-Key: (1024 bit) - Modulus: - 00:97:c9:92:27:81:a7:4c:64:82:a2:30:d6:07:b7: - 57:e0:9c:ea:cd:eb:53:be:ea:b6:b5:47:66:d0:68: - 54:25:a7:ed:21:5c:dc:fd:da:41:f6:c7:c0:35:ae: - 97:72:fd:8b:af:29:3d:38:5a:67:8b:39:8a:ce:86: - 25:0f:38:a7:b5:38:b3:8e:81:f0:ea:79:99:cb:f5: - 23:64:55:f3:4b:a4:b6:23:64:29:ea:ba:f3:29:52: - a7:7f:32:dc:0d:b6:d9:d4:e6:13:de:01:41:86:9a: - 2d:8f:bb:0c:18:88:09:ac:d4:6a:e9:cb:8a:17:8a: - 85:09:a6:ae:a6:1c:05:e9:55 - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - Authority Information Access: - OCSP - URI:http://ocsp.example.com:8888/ - - Signature Algorithm: sha1WithRSAEncryption - 8b:9b:96:fb:8e:1b:77:f5:70:39:fe:76:51:ac:a9:6b:80:a5: - b7:95:8b:c3:1a:9c:1f:bb:d1:d1:68:43:40:96:62:d6:a6:da: - d9:fd:9d:9a:9e:8a:84:fa:f5:54:ce:a8:d7:37:c7:0c:95:fc: - 11:8b:e9:32:53:e5:59:61:0a:53:70:f3:d6:ed:3f:b1:f4:49: - bf:86:c1:77:0d:b1:ac:65:7e:62:d2:f2:5a:31:50:a7:ed:28: - bb:63:d5:f3:4f:43:3a:3f:bf:3b:d0:94:aa:a1:74:95:be:a4: - 0f:8b:e0:6f:d8:33:84:76:71:b2:da:f4:0e:1e:d2:eb:f0:c3: - 1e:33:79:21:35:93:18:05:38:db:63:85:1a:e4:84:41:0a:c3: - fb:fd:5c:69:3d:18:0a:38:b8:16:18:d3:23:b9:51:47:2e:54: - 08:d1:fc:2e:b6:63:62:78:9c:26:59:c2:5e:5a:38:76:47:e7: - f0:f8:7b:b7:00:46:34:b0:44:28:a9:33:d7:e5:1d:52:c8:fb: - 32:a5:25:86:21:0c:80:f0:4b:37:60:a0:45:69:9f:6b:b0:34: - 91:5e:4c:62:45:99:83:1d:80:48:78:bb:ee:d4:83:39:76:c3: - e6:fb:31:e9:20:f0:64:90:24:4e:c6:07:75:40:1f:7e:97:77: - 1f:bf:a2:ef -----BEGIN CERTIFICATE----- -MIIDYDCCAkigAwIBAgIBATANBgkqhkiG9w0BAQUFADCBqzEmMCQGA1UEAxMdV2Vz -dHBvaW50IENlcnRpZmljYXRlIFRlc3QgQ0ExEzARBgNVBAgTCkxhbmNhc2hpcmUx -CzAJBgNVBAYTAlVLMR0wGwYJKoZIhvcNAQkBFg5jYUBleGFtcGxlLmNvbTFAMD4G -A1UEChM3V2VzdHBvaW50IENlcnRpZmljYXRlIFRlc3QgUm9vdCBDZXJ0aWZpY2F0 -aW9uIEF1dGhvcml0eTAeFw0xMTA3MzEyMTAxMTZaFw0yMTA3MjgyMTAxMTZaMHUx -FDASBgNVBAMTC2V4YW1wbGUuY29tMRMwEQYDVQQIEwpMYW5jYXNoaXJlMQswCQYD -VQQGEwJVSzEfMB0GCSqGSIb3DQEJARYQdGVzdEBleGFtcGxlLmNvbTEaMBgGA1UE -ChMRU29tZSBvcmdhbmlzYXRpb24wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB -AJfJkieBp0xkgqIw1ge3V+Cc6s3rU77qtrVHZtBoVCWn7SFc3P3aQfbHwDWul3L9 -i68pPThaZ4s5is6GJQ84p7U4s46B8Op5mcv1I2RV80uktiNkKeq68ylSp38y3A22 -2dTmE94BQYaaLY+7DBiICazUaunLiheKhQmmrqYcBelVAgMBAAGjSDBGMAkGA1Ud -EwQCMAAwOQYIKwYBBQUHAQEELTArMCkGCCsGAQUFBzABhh1odHRwOi8vb2NzcC5l -eGFtcGxlLmNvbTo4ODg4LzANBgkqhkiG9w0BAQUFAAOCAQEAi5uW+44bd/VwOf52 -Uaypa4Clt5WLwxqcH7vR0WhDQJZi1qba2f2dmp6KhPr1VM6o1zfHDJX8EYvpMlPl -WWEKU3Dz1u0/sfRJv4bBdw2xrGV+YtLyWjFQp+0ou2PV809DOj+/O9CUqqF0lb6k -D4vgb9gzhHZxstr0Dh7S6/DDHjN5ITWTGAU422OFGuSEQQrD+/1caT0YCji4FhjT -I7lRRy5UCNH8LrZjYnicJlnCXlo4dkfn8Ph7twBGNLBEKKkz1+UdUsj7MqUlhiEM -gPBLN2CgRWmfa7A0kV5MYkWZgx2ASHi77tSDOXbD5vsx6SDwZJAkTsYHdUAffpd3 -H7+i7w== +MIIEEDCCAvigAwIBAgIUQrpDlYwLae3IBtw7fjH/oCSCWMYwDQYJKoZIhvcNAQEL +BQAwgaIxCzAJBgNVBAYTAk5PMQ8wDQYDVQQIDAZOb3J3YXkxDTALBgNVBAcMBE9z +bG8xDTALBgNVBAoMBFRRdEMxLzAtBgNVBAsMJlRRdEMgVGVzdCBSb290IEF1dGhv +cml6YXRpb24gQXV0aG9yaXR5MRowGAYDVQQDDBFUUXRDIHRlc3Qgcm9vdCBDQTEX +MBUGCSqGSIb3DQEJARYIY2FAcXQuaW8wHhcNMjEwODA2MDQzNzIyWhcNMzEwNjE1 +MDQzNzIyWjCBhzELMAkGA1UEBhMCTk8xDzANBgNVBAgMBk5vcndheTENMAsGA1UE +BwwET3NsbzENMAsGA1UECgwEVFF0QzESMBAGA1UECwwJU29tZSBVbml0MRQwEgYD +VQQDDAtleGFtcGxlLmNvbTEfMB0GCSqGSIb3DQEJARYQdGVzdEBleGFtcGxlLmNv +bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMEmu/GCuiQwbQf8qluK +5UovaQ4L3MHScVFbHlHu1Nyc12wmhhpzC3jC+OikxdCPpvxdNmdsOHonhNkO55sL +YygX4c4sCNM4B6VbJTfdOKHRBV6ySxFVS4jjBwB88Ouz9KieGiOAA6Lf6nqIBitU +eYQtBPye1lSqX4dAFHx7Il6Ad8Z3U9hUkqEpcW3AGSxFS6GebfTNleN85lXyLhHm +v66vEcHOGM7YSjWjUDto4C5LpYQHMvKe4/oZylQkRwevy8pZ+dK6ZiJuxzKVu2M2 ++LuYFeCRnFry5NBUBhpeLSOgJO2BYJZroRWygjBNUD6yToZFOX77ctL0+lXIgqZ8 +vT0CAwEAAaNXMFUwDgYDVR0PAQH/BAQDAgLkMDgGCCsGAQUFBwEBBCwwKjAoBggr +BgEFBQcwAYYcaHR0cDovL29jc3AuZXhhbXBsZS5jb206ODg4ODAJBgNVHRMEAjAA +MA0GCSqGSIb3DQEBCwUAA4IBAQAReaLhTl0k8+pmVNvnqkPg7UvwmZ1EStWyz0hn +Ar+NZSIdHUWqGqvoQVzcH5ODW3yfkNadhwfm8BJcFuy0ioTqhGuho3cI8Qr9MRQl +s0NNIjeENYbBElBXmJup4OdgCSy0GL3DeCoe3xR+IwHYeER/oH6VDBZrpVovHAk9 +6FlL6eBXgWu1YzXhKU4/enVIJ0A4LRF9WnyhQSucLwo3+bOvPxLBtmP+lWtXyKap +wMMNPu6EULAQ2IYcTgafCW9BWR1UWDXHBRO5ytBV4KFrhXiPoPmA4x0ACxnclH41 +b3Pj0pBur9cQuvap/FSz1uEfJdsYISw6srTfD4zNUuXXhSbz -----END CERTIFICATE----- diff -Naur a/qtbase/tests/auto/network/ssl/qsslcipher/tst_qsslcipher.cpp b/qtbase/tests/auto/network/ssl/qsslcipher/tst_qsslcipher.cpp --- a/qtbase/tests/auto/network/ssl/qsslcipher/tst_qsslcipher.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/qsslcipher/tst_qsslcipher.cpp 2022-01-25 17:23:44.119496380 +0000 @@ -30,9 +30,6 @@ #include #include -#include -#include - class tst_QSslCipher : public QObject { Q_OBJECT @@ -50,6 +47,15 @@ void tst_QSslCipher::constructing() { QSslCipher cipher; + + QVERIFY(cipher.isNull()); + QCOMPARE(cipher.name(), QString()); + QCOMPARE(cipher.supportedBits(), 0); + QCOMPARE(cipher.usedBits(), 0); + QCOMPARE(cipher.keyExchangeMethod(), QString()); + QCOMPARE(cipher.authenticationMethod(), QString()); + QCOMPARE(cipher.protocolString(), QString()); + QCOMPARE(cipher.protocol(), QSsl::UnknownProtocol); } #endif // QT_NO_SSL diff -Naur a/qtbase/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp b/qtbase/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp --- a/qtbase/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp 2022-01-25 17:23:44.140496305 +0000 @@ -28,51 +28,113 @@ #include + +#include + +#include #include -#include -#include +#include +#include +#include +#include + +QT_USE_NAMESPACE + +const QByteArray certificateBytes = + "-----BEGIN CERTIFICATE-----\n" + "MIIEjjCCBDOgAwIBAgIQCQsKtxCf9ik3vIVQ+PMa5TAKBggqhkjOPQQDAjBKMQsw\n" + "CQYDVQQGEwJVUzEZMBcGA1UEChMQQ2xvdWRmbGFyZSwgSW5jLjEgMB4GA1UEAxMX\n" + "Q2xvdWRmbGFyZSBJbmMgRUNDIENBLTMwHhcNMjAwODE2MDAwMDAwWhcNMjEwODE2\n" + "MTIwMDAwWjBhMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDVNh\n" + "biBGcmFuY2lzY28xGTAXBgNVBAoTEENsb3VkZmxhcmUsIEluYy4xEjAQBgNVBAMT\n" + "CXd3dy5xdC5pbzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABP/r0xH22wdU8fLk\n" + "RsXhxRj5fmUNUo7rxnUl3lyqYYp53cLvn3agQifXkegpE8Xv4pGmuyWZj85FtoeZ\n" + "UZh8iyCjggLiMIIC3jAfBgNVHSMEGDAWgBSlzjfq67B1DpRniLRF+tkkEIeWHzAd\n" + "BgNVHQ4EFgQU7qPYGi9VtC4/6MS+54LNEAXApBgwFAYDVR0RBA0wC4IJd3d3LnF0\n" + "LmlvMA4GA1UdDwEB/wQEAwIHgDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUH\n" + "AwIwewYDVR0fBHQwcjA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Ns\n" + "b3VkZmxhcmVJbmNFQ0NDQS0zLmNybDA3oDWgM4YxaHR0cDovL2NybDQuZGlnaWNl\n" + "cnQuY29tL0Nsb3VkZmxhcmVJbmNFQ0NDQS0zLmNybDBMBgNVHSAERTBDMDcGCWCG\n" + "SAGG/WwBATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20v\n" + "Q1BTMAgGBmeBDAECAjB2BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUHMAGGGGh0dHA6\n" + "Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBABggrBgEFBQcwAoY0aHR0cDovL2NhY2VydHMu\n" + "ZGlnaWNlcnQuY29tL0Nsb3VkZmxhcmVJbmNFQ0NDQS0zLmNydDAMBgNVHRMBAf8E\n" + "AjAAMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHYA9lyUL9F3MCIUVBgIMJRWjuNN\n" + "Exkzv98MLyALzE7xZOMAAAFz90PlSQAABAMARzBFAiAhrrtxdmuxpCy8HAJJ5Qkg\n" + "WNvlo8nZqfe6pqGUcz0dmwIhAOMqDtd5ZhcfRk96GAJxPm8bH4hDnmqDP/zJG2Mq\n" + "nFpMAHYAXNxDkv7mq0VEsV6a1FbmEDf71fpH3KFzlLJe5vbHDsoAAAFz90PlewAA\n" + "BAMARzBFAiB/EkdY10LDdaRcf6eSc/QxucxU+2PI+3pWjh/21A8ZUAIhAK2Qz9Kw\n" + "onlRNyHpV3E6qyVydkXihj3c3q5UclpURYcmMAoGCCqGSM49BAMCA0kAMEYCIQDz\n" + "K/lzLb2Rbeg1HErRLLm2HkJUmfOGU2+tbROSTGK8ugIhAKA+MKqaZ8VjPxQ+Ho4v\n" + "fuwccvZfkU/fg8tAHTOzX23v\n" + "-----END CERTIFICATE-----"; class tst_QSslError : public QObject { Q_OBJECT - -public: - static void enterLoop(int secs) - { - ++loopLevel; - QTestEventLoop::instance().enterLoop(secs); - --loopLevel; - } - static void exitLoop() - { - // Safe exit - if we aren't in an event loop, don't - // exit one. - if (loopLevel > 0) - QTestEventLoop::instance().exitLoop(); - } - static bool timeout() - { - return QTestEventLoop::instance().timeout(); - } - -#ifndef QT_NO_SSL private slots: void constructing(); + void nonDefaultConstructors(); void hash(); -#endif - -private: - static int loopLevel; }; -int tst_QSslError::loopLevel = 0; - -#ifndef QT_NO_SSL - void tst_QSslError::constructing() { - QSslError error; + const QSslError error; + QCOMPARE(error.error(), QSslError::NoError); + QCOMPARE(error.errorString(), QStringLiteral("No error")); + QVERIFY(error.certificate().isNull()); +} + +void tst_QSslError::nonDefaultConstructors() +{ + if (!QSslSocket::supportsSsl()) + QSKIP("This test requires a working TLS library"); + + const auto chain = QSslCertificate::fromData(certificateBytes); + QCOMPARE(chain.size(), 1); + const auto certificate = chain.at(0); + QVERIFY(!certificate.isNull()); + + const auto visitor = QSslError::staticMetaObject; + const int nEnums = visitor.enumeratorCount(); + QMetaEnum errorCodesEnum; + for (int i = 0; i < nEnums; ++i) { + const auto metaEnum = visitor.enumerator(i); + if (metaEnum.enumName() == QStringLiteral("SslError")) { + errorCodesEnum = metaEnum; + break; + } + } + + QCOMPARE(errorCodesEnum.enumName(), QStringLiteral("SslError")); + for (int i = 0, e = errorCodesEnum.keyCount(); i < e; ++i) { + const int value = errorCodesEnum.value(i); + if (value == -1) { + QVERIFY(i); + break; + } + const auto errorCode = QSslError::SslError(value); + QSslError error(errorCode); + + const auto basicChecks = [](const QSslError &err, QSslError::SslError code) { + QCOMPARE(err.error(), code); + const auto errorString = err.errorString(); + if (code == QSslError::NoError) + QCOMPARE(errorString, QStringLiteral("No error")); + else + QVERIFY(errorString != QStringLiteral("No error")); + }; + + basicChecks(error, errorCode); + + // ;) + error = QSslError(errorCode, certificate); + + basicChecks(error, errorCode); + QVERIFY(!error.certificate().isNull()); + } } void tst_QSslError::hash() @@ -83,7 +145,5 @@ QCOMPARE(errors.size(), 1); } -#endif // QT_NO_SSL - QTEST_MAIN(tst_QSslError) #include "tst_qsslerror.moc" diff -Naur a/qtbase/tests/auto/network/ssl/qsslkey/tst_qsslkey.cpp b/qtbase/tests/auto/network/ssl/qsslkey/tst_qsslkey.cpp --- a/qtbase/tests/auto/network/ssl/qsslkey/tst_qsslkey.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/qsslkey/tst_qsslkey.cpp 2022-01-25 17:23:44.119496380 +0000 @@ -117,6 +117,7 @@ tst_QSslKey::tst_QSslKey() { +#ifndef QT_NO_SSL const QString expectedCurves[] = { // See how we generate them in keys/genkey.sh. QStringLiteral("secp224r1"), @@ -139,6 +140,9 @@ unsupportedCurves.push_back(requestedEc); } } +#else + unsupportedCurves = {}; // not unsued anymore. +#endif } bool tst_QSslKey::fileContainsUnsupportedEllipticCurve(const QString &fileName) const diff -Naur a/qtbase/tests/auto/network/ssl/qsslsocket/certs/fluke.cert b/qtbase/tests/auto/network/ssl/qsslsocket/certs/fluke.cert --- a/qtbase/tests/auto/network/ssl/qsslsocket/certs/fluke.cert 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/qsslsocket/certs/fluke.cert 2022-01-25 17:23:44.188496133 +0000 @@ -1,75 +1,34 @@ -Certificate: - Data: - Version: 3 (0x2) - Serial Number: 0 (0x0) - Signature Algorithm: sha1WithRSAEncryption - Issuer: C=NO, ST=Oslo, L=Nydalen, O=Nokia Corporation and/or its subsidiary(-ies), OU=Development, CN=fluke.troll.no/emailAddress=ahanssen@trolltech.com - Validity - Not Before: Dec 4 01:10:32 2007 GMT - Not After : Apr 21 01:10:32 2035 GMT - Subject: C=NO, ST=Oslo, O=Nokia Corporation and/or its subsidiary(-ies), OU=Development, CN=fluke.troll.no - Subject Public Key Info: - Public Key Algorithm: rsaEncryption - RSA Public Key: (1024 bit) - Modulus (1024 bit): - 00:a7:c8:a0:4a:c4:19:05:1b:66:ba:32:e2:d2:f1: - 1c:6f:17:82:e4:39:2e:01:51:90:db:04:34:32:11: - 21:c2:0d:6f:59:d8:53:90:54:3f:83:8f:a9:d3:b3: - d5:ee:1a:9b:80:ae:c3:25:c9:5e:a5:af:4b:60:05: - aa:a0:d1:91:01:1f:ca:04:83:e3:58:1c:99:32:45: - 84:70:72:58:03:98:4a:63:8b:41:f5:08:49:d2:91: - 02:60:6b:e4:64:fe:dd:a0:aa:74:08:e9:34:4c:91: - 5f:12:3d:37:4d:54:2c:ad:7f:5b:98:60:36:02:8c: - 3b:f6:45:f3:27:6a:9b:94:9d - Exponent: 65537 (0x10001) - X509v3 extensions: - X509v3 Basic Constraints: - CA:FALSE - Netscape Comment: - OpenSSL Generated Certificate - X509v3 Subject Key Identifier: - 21:85:04:3D:23:01:66:E5:F7:9F:1A:84:24:8A:AF:0A:79:F4:E5:AC - X509v3 Authority Key Identifier: - DirName:/C=NO/ST=Oslo/L=Nydalen/O=Nokia Corporation and/or its subsidiary(-ies)/OU=Development/CN=fluke.troll.no/emailAddress=ahanssen@trolltech.com - serial:8E:A8:B4:E8:91:B7:54:2E - - Signature Algorithm: sha1WithRSAEncryption - 6d:57:5f:d1:05:43:f0:62:05:ec:2a:71:a5:dc:19:08:f2:c4: - a6:bd:bb:25:d9:ca:89:01:0e:e4:cf:1f:c1:8c:c8:24:18:35: - 53:59:7b:c0:43:b4:32:e6:98:b2:a6:ef:15:05:0b:48:5f:e1: - a0:0c:97:a9:a1:77:d8:35:18:30:bc:a9:8f:d3:b7:54:c7:f1: - a9:9e:5d:e6:19:bf:f6:3c:5b:2b:d8:e4:3e:62:18:88:8b:d3: - 24:e1:40:9b:0c:e6:29:16:62:ab:ea:05:24:70:36:aa:55:93: - ef:02:81:1b:23:10:a2:04:eb:56:95:75:fc:f8:94:b1:5d:42: - c5:3f:36:44:85:5d:3a:2e:90:46:8a:a2:b9:6f:87:ae:0c:15: - 40:19:31:90:fc:3b:25:bb:ae:f1:66:13:0d:85:90:d9:49:34: - 8f:f2:5d:f9:7a:db:4d:5d:27:f6:76:9d:35:8c:06:a6:4c:a3: - b1:b2:b6:6f:1d:d7:a3:00:fd:72:eb:9e:ea:44:a1:af:21:34: - 7d:c7:42:e2:49:91:19:8b:c0:ad:ba:82:80:a8:71:70:f4:35: - 31:91:63:84:20:95:e9:60:af:64:8b:cc:ff:3d:8a:76:74:3d: - c8:55:6d:e4:8e:c3:2b:1c:e8:42:18:ae:9f:e6:6b:9c:34:06: - ec:6a:f2:c3 -----BEGIN CERTIFICATE----- -MIIEEzCCAvugAwIBAgIBADANBgkqhkiG9w0BAQUFADCBnDELMAkGA1UEBhMCTk8x -DTALBgNVBAgTBE9zbG8xEDAOBgNVBAcTB055ZGFsZW4xFjAUBgNVBAoTDVRyb2xs -dGVjaCBBU0ExFDASBgNVBAsTC0RldmVsb3BtZW50MRcwFQYDVQQDEw5mbHVrZS50 -cm9sbC5ubzElMCMGCSqGSIb3DQEJARYWYWhhbnNzZW5AdHJvbGx0ZWNoLmNvbTAe -Fw0wNzEyMDQwMTEwMzJaFw0zNTA0MjEwMTEwMzJaMGMxCzAJBgNVBAYTAk5PMQ0w -CwYDVQQIEwRPc2xvMRYwFAYDVQQKEw1Ucm9sbHRlY2ggQVNBMRQwEgYDVQQLEwtE -ZXZlbG9wbWVudDEXMBUGA1UEAxMOZmx1a2UudHJvbGwubm8wgZ8wDQYJKoZIhvcN -AQEBBQADgY0AMIGJAoGBAKfIoErEGQUbZroy4tLxHG8XguQ5LgFRkNsENDIRIcIN -b1nYU5BUP4OPqdOz1e4am4CuwyXJXqWvS2AFqqDRkQEfygSD41gcmTJFhHByWAOY -SmOLQfUISdKRAmBr5GT+3aCqdAjpNEyRXxI9N01ULK1/W5hgNgKMO/ZF8ydqm5Sd -AgMBAAGjggEaMIIBFjAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NM -IEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUIYUEPSMBZuX3nxqEJIqv -Cnn05awwgbsGA1UdIwSBszCBsKGBoqSBnzCBnDELMAkGA1UEBhMCTk8xDTALBgNV -BAgTBE9zbG8xEDAOBgNVBAcTB055ZGFsZW4xFjAUBgNVBAoTDVRyb2xsdGVjaCBB -U0ExFDASBgNVBAsTC0RldmVsb3BtZW50MRcwFQYDVQQDEw5mbHVrZS50cm9sbC5u -bzElMCMGCSqGSIb3DQEJARYWYWhhbnNzZW5AdHJvbGx0ZWNoLmNvbYIJAI6otOiR -t1QuMA0GCSqGSIb3DQEBBQUAA4IBAQBtV1/RBUPwYgXsKnGl3BkI8sSmvbsl2cqJ -AQ7kzx/BjMgkGDVTWXvAQ7Qy5piypu8VBQtIX+GgDJepoXfYNRgwvKmP07dUx/Gp -nl3mGb/2PFsr2OQ+YhiIi9Mk4UCbDOYpFmKr6gUkcDaqVZPvAoEbIxCiBOtWlXX8 -+JSxXULFPzZEhV06LpBGiqK5b4euDBVAGTGQ/Dslu67xZhMNhZDZSTSP8l35ettN -XSf2dp01jAamTKOxsrZvHdejAP1y657qRKGvITR9x0LiSZEZi8CtuoKAqHFw9DUx -kWOEIJXpYK9ki8z/PYp2dD3IVW3kjsMrHOhCGK6f5mucNAbsavLD +MIIF6zCCA9OgAwIBAgIUfo9amJtJGWqWE6f+SkAO85zkGr4wDQYJKoZIhvcNAQEL +BQAwgYMxCzAJBgNVBAYTAk5PMQ0wCwYDVQQIDARPc2xvMQ0wCwYDVQQHDARPc2xv +MRcwFQYDVQQKDA5UaGUgUXQgQ29tcGFueTEMMAoGA1UECwwDUiZEMRIwEAYDVQQD +DAlIMiBUZXN0ZXIxGzAZBgkqhkiG9w0BCQEWDG1pbmltaUBxdC5pbzAgFw0yMDEw +MjYxMjAxMzFaGA8yMTIwMTAwMjEyMDEzMVowgYMxCzAJBgNVBAYTAk5PMQ0wCwYD +VQQIDARPc2xvMQ0wCwYDVQQHDARPc2xvMRcwFQYDVQQKDA5UaGUgUXQgQ29tcGFu +eTEMMAoGA1UECwwDUiZEMRIwEAYDVQQDDAlIMiBUZXN0ZXIxGzAZBgkqhkiG9w0B +CQEWDG1pbmltaUBxdC5pbzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +AOiUp5+E4blouKH7q+rVNR8NoYX2XkBW+q+rpy1zu5ssRSzbqxAjDx9dkht7Qlnf +VlDT00JvpOWdeuPon5915edQRsY4Unl6mKH29ra3OtUa1/yCJXsGVJTKCj7k4Bxb +5mZzb/fTlZntMLdTIBMfUbw62FKir1WjKIcJ9fCoG8JaGeKVO4Rh5p0ezd4UUUId +r1BXl5Nqdqy2vTMsEDnjOsD3egkv8I2SKN4O6n/C3wWYpMOWYZkGoZiKz7rJs/i/ +ez7bsV7JlwdzTlhpJzkcOSVFBP6JlEOxTNNxZ1wtKy7PtZGmsSSATq2e6+bw38Ae +Op0XnzzqcGjtDDofBmT7OFzZWjS9VZS6+DOOe2QHWle1nCHcHyH4ku6IRlsr9xkR +NAIlOfnvHHxqJUenoeaZ4oQDjCBKS1KXygJO/tL7BLTQVn/xK1EmPvKNnjzWk4tR +PnibUhhs5635qpOU/YPqFBh1JjVruZbsWcDAhRcew0uxONXOa9E+4lttQ9ySYa1A +LvWqJuAX7gu2BsBMLyqfm811YnA7CIFMyO+HlqmkLFfv5L/xIRAXR7l26YGO0VwX +CGjMfz4NVPMMke4nB7qa9NkpXQBQKMms3Qzd5JW0Hy9Ruj5O8GPcFZmV0twjd1uJ +PD/cAjkWLaXjdNsJ16QWc2nghQRS6HYqKRX6j+CXOxupAgMBAAGjUzBRMB0GA1Ud +DgQWBBRSCOU58j9NJZkMamt623qyCrhN3TAfBgNVHSMEGDAWgBRSCOU58j9NJZkM +amt623qyCrhN3TAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQCq +q4jxsWeNDv5Nq14hJtF9HB+ZL64zcZtRjJP1YgNs0QppKICmjPOL2nIMGmI/jKrs +0eGAL/9XXNVHPxm1OPOncvimMMmU6emZfpMdEtTfKP43+Pg9HgKRjLoQp406vGeQ +8ki/mbBhrItVPgEm3tu2AFA02XTYi+YxCI9kRZLGkM3FbgtOuTLPl0Z9y+kiPc9F +uCSC03anBEqv+vDSI8+wODymQ/IJ3Jyz1lxIRDfp4qAekmy0jU2c91VOHHEmOmqq +kqygGFRdwbe99m9yP63r6q0b5K3X2UnJ6bns0hmTwThYwpVPXLU8jdaTddbMukN2 +/Ef96Tsw8nWOEOPMySHOTIPgwyZRp26b0kA9EmhLwOP401SxXVQCmSRmtwNagmtg +jJKmZoYBN+//D45ibK8z6Q0oOm9P+Whf/uUXehcRxBxyV3xz7k0wKGQbHj/ddwcy +IUoIN4lrAlib+lK170kTKN352PDmrpo2gmIzPEsfurKAIMSelDl6H+kih16BtZ8y +Nz6fh9Soqrg3OSAware8pxV7k51crBMoPLN78KoRV8MFCK4K7Fddq4rRISq6hiXq +r1nsjoEPuKM9huprmZVZe9t5YcDa2I+wb3IiE3uwpZbAdaLDyQ5n6F/qpsiIkZXn +gtcF7oqpG5oYrwCcZ53y/ezUgUg7PlSz2XwAGvQtgg== -----END CERTIFICATE----- diff -Naur a/qtbase/tests/auto/network/ssl/qsslsocket/certs/fluke.key b/qtbase/tests/auto/network/ssl/qsslsocket/certs/fluke.key --- a/qtbase/tests/auto/network/ssl/qsslsocket/certs/fluke.key 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/qsslsocket/certs/fluke.key 2022-01-25 17:23:44.188496133 +0000 @@ -1,15 +1,52 @@ ------BEGIN RSA PRIVATE KEY----- -MIICXAIBAAKBgQCnyKBKxBkFG2a6MuLS8RxvF4LkOS4BUZDbBDQyESHCDW9Z2FOQ -VD+Dj6nTs9XuGpuArsMlyV6lr0tgBaqg0ZEBH8oEg+NYHJkyRYRwclgDmEpji0H1 -CEnSkQJga+Rk/t2gqnQI6TRMkV8SPTdNVCytf1uYYDYCjDv2RfMnapuUnQIDAQAB -AoGANFzLkanTeSGNFM0uttBipFT9F4a00dqHz6JnO7zXAT26I5r8sU1pqQBb6uLz -/+Qz5Zwk8RUAQcsMRgJetuPQUb0JZjF6Duv24hNazqXBCu7AZzUenjafwmKC/8ri -KpX3fTwqzfzi//FKGgbXQ80yykSSliDL3kn/drATxsLCgQECQQDXhEFWLJ0vVZ1s -1Ekf+3NITE+DR16X+LQ4W6vyEHAjTbaNWtcTKdAWLA2l6N4WAAPYSi6awm+zMxx4 -VomVTsjdAkEAx0z+e7natLeFcrrq8pbU+wa6SAP1VfhQWKitxL1e7u/QO90NCpxE -oQYKzMkmmpOOFjQwEMAy1dvFMbm4LHlewQJAC/ksDBaUcQHHqjktCtrUb8rVjAyW -A8lscckeB2fEYyG5J6dJVaY4ClNOOs5yMDS2Afk1F6H/xKvtQ/5CzInA/QJATDub -K+BPU8jO9q+gpuIi3VIZdupssVGmCgObVCHLakG4uO04y9IyPhV9lA9tALtoIf4c -VIvv5fWGXBrZ48kZAQJBAJmVCdzQxd9LZI5vxijUCj5EI4e+x5DRqVUvyP8KCZrC -AiNyoDP85T+hBZaSXK3aYGpVwelyj3bvo1GrTNwNWLw= ------END RSA PRIVATE KEY----- +-----BEGIN PRIVATE KEY----- +MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDolKefhOG5aLih ++6vq1TUfDaGF9l5AVvqvq6ctc7ubLEUs26sQIw8fXZIbe0JZ31ZQ09NCb6TlnXrj +6J+fdeXnUEbGOFJ5epih9va2tzrVGtf8giV7BlSUygo+5OAcW+Zmc2/305WZ7TC3 +UyATH1G8OthSoq9VoyiHCfXwqBvCWhnilTuEYeadHs3eFFFCHa9QV5eTanastr0z +LBA54zrA93oJL/CNkijeDup/wt8FmKTDlmGZBqGYis+6ybP4v3s+27FeyZcHc05Y +aSc5HDklRQT+iZRDsUzTcWdcLSsuz7WRprEkgE6tnuvm8N/AHjqdF5886nBo7Qw6 +HwZk+zhc2Vo0vVWUuvgzjntkB1pXtZwh3B8h+JLuiEZbK/cZETQCJTn57xx8aiVH +p6HmmeKEA4wgSktSl8oCTv7S+wS00FZ/8StRJj7yjZ481pOLUT54m1IYbOet+aqT +lP2D6hQYdSY1a7mW7FnAwIUXHsNLsTjVzmvRPuJbbUPckmGtQC71qibgF+4LtgbA +TC8qn5vNdWJwOwiBTMjvh5appCxX7+S/8SEQF0e5dumBjtFcFwhozH8+DVTzDJHu +Jwe6mvTZKV0AUCjJrN0M3eSVtB8vUbo+TvBj3BWZldLcI3dbiTw/3AI5Fi2l43Tb +CdekFnNp4IUEUuh2KikV+o/glzsbqQIDAQABAoICAFw1q6tr5I48vY7DF+rXsuLn +5ZUWE1IQ6fzB4lr72nJv/9EEGnMgYzt9PpMUsD6vdCpBgS2C0+6RHArFzJtNA+RM +iHLIG7K7702veyr/xBx/MwiSlMeMv/XpkFxVI6E6skMGG2s3AMXxKvJTy5CpRx+I +eQFyLG+Ya1X2lgJes/q+/CpAHkOjCOpcLySQC5NZ74q734V7nSdmn+Zs3tYEh+O/ +eiuwTP/j5b38Te5vVTqDxTciJPmljmXLCwa0N100lWlbcpvw8qbqiTI2Jm3XCbUE +AzHjW9vmrF3cRS1fXxKFGShw3SRqlkbxjfeWoi8qDPUBS4m8LOr8qG9Wo5Nfon0z +zLP4bci3zHDvVcaaZrrsUBs/yZbg+Dgka1DmX7ekmeccr2yTdKDFgPupYUyxVbTl +a9ZLJysjFD7rgBv1ZclHonLp6Vbm+ZoTqvteo4ikAy6L9RtBWJ23XEK34PkP/+c5 +2vWZaOrnjSeBHbFce8cdJSxqWpP+eSCI5I9XbDrYFIsQ/gqKgtzDKy2ihJ2Y8STL +yO4hyFPFjxc+Gg4/P2PpmT5CY2ty44M0BWs+JGW96CJPrrplf2lmQUQJj5LZY66X +Z/4C9L7ZYtKZ+bs5SvU46yWugAvQZX22Xm9xLXWyVXRdx3bj+3M3fDnF9di/zdbh +CgLx7oWPNrXc7FCajnn9AoIBAQD5FMYwRpw9NWT9WDxQwx+cSI4Icbd88ByTW63S +LzeRwZA0J9/SfwO+aBRupzc9GkGXCiZcGMw3AGsCtig8yFlw8E5KnzN7KlftDMnM +9NUxxzlR8VwKyLnZfG7sDTl057ZlUujnqhmt/F8F7dIy7FVO1dE/8nngA+FYTCOG +UZdGjwyBDlDM0JJdUWGY3xslutcpCDN5mzSTKjy9drMvImAshRawxRF6WBpn7vr2 +nC6vciqfx1Mzx1vyk0Jm0ilaydDdLMADjt/iL4Nkr0BEs4k+UzQiKDwp8gu7abQ1 +eBfxd9Iar4htQa2I1Ewl6P01G/q+ZYwgHhJ9RVn4AxQXefILAoIBAQDvCouORdQX +C8wsyp7MwXlF/3NQeNN5/+B2mhbxrBOf7PmMCXLnkRWcjwJtzypWFqJ0sqai/2+0 +bqbMcjX5maT8stT2shl3zXe/Ejt2e3TBYpc1tyuses8Kb5BMU8hu6tTd3G2CMXpD +dT6DVemJZCTtwj9aBNIxSizvlgMolJnCpzhPnlfHSI6E+g3m/LTTo3HwbjMSw/Uq +irgjOpI2wSBB6LZPSgjvfcYPRyWUk16L4A5uSX0cADnovDFLa5/h0wJvN/OoCSQg +rLCXG5E18EyL5Wc58BCY1ZvxmjG3lQtgPxYu2Jwc36R/y/JKlxW5suER5ZNpbbD4 +uOyTt2VxMQ2bAoIBAQC5+MzRFqdo/AjfL5Y5JrbfVTzXCTDa09xCGd16ZU60QTWN ++4ed/r+o1sUKqUcRFB2MzEM/2DQBjQpZB/CbEWvWa1XJWXxypXbowveZU+QqOnmN +uQvj8WLyA3o+PNF9e9QvauwCrHpn8VpxbtPWuaYoKnUFreFZZQxHhPGxRBIS2JOZ +eDrT8ZaWnkCkh1AZp5smQ71LOprSlmKrg4jd1GjCVMxQR5N5KXbtyv0OTCZ/UFqK +2aRBsMPyJgkaBChkZPLRcKwc+/wlQRx1fHQb14DNTApMxoXFO7eOwqmOkpAt9iyl +SBIwoS0UUI5ab88+bBmXNvKcuFdNuQ4nowTJUn9pAoIBADMNkILBXSvS5DeIyuO2 +Sp1tkoZUV+5NfPY3sMDK3KIibaW/+t+EOBZo4L7tKQCb8vRzl21mmsfxfgRaPDbj +3r3tv9g0b4YLxxBy52pFscj/soXRai17SS7UZwA2QK+XzgDYbDcLNC6mIsTQG4Gx +dsWk3/zs3KuUSQaehmwrWK+fIUK38c1pLK8v7LoxrLkqxlHwZ04RthHw8KTthH7X +Pnl1J0LF8CSeOyfWLSuPUfkT0GEzptnNHpEbaHfQM6R6eaGhVJPF6AZme4y6YYgg +m2ihhSt1n0XVEWpHYWjxFy3mK2mz75unFC4LM+NEY2p2zuUQoCw7NjnY3QYrfCnx +rRMCggEAXeXsMSLFjjyuoL7iKbAxo52HD/P0fBoy58LyRcwfNVr0lvYan4pYEx+o +KijIh9K16PqXZXKMA9v003B+ulmF8bJ7SddCZ5NGvnFhUTDe4DdTKgp2RuwQ3Bsc +3skPIDbhVETyOLCtys34USHrq8U/0DlGY3eLRfxw9GnbKxSBGa/KEu/qQLPNUo50 +7xHZDg7GKeC3kqNJeqKM9rkp0VzIGkEnaD9127LeNDmERDfftxJzFoC/THvUBLfU +6Sus2ZYwRE8VFvKC30Q45t/c54X3IuhYvAuiCuTmyfE4ruyzyOwKzhUkeeLq1APX +g0veFbyfzlJ0q8qzD/iffqqIa2ZSmQ== +-----END PRIVATE KEY----- diff -Naur a/qtbase/tests/auto/network/ssl/qsslsocket/certs/qtiochain.crt b/qtbase/tests/auto/network/ssl/qsslsocket/certs/qtiochain.crt --- a/qtbase/tests/auto/network/ssl/qsslsocket/certs/qtiochain.crt 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/tests/auto/network/ssl/qsslsocket/certs/qtiochain.crt 2022-01-25 17:23:44.126496355 +0000 @@ -0,0 +1,50 @@ +-----BEGIN CERTIFICATE----- +MIIEjjCCBDOgAwIBAgIQCQsKtxCf9ik3vIVQ+PMa5TAKBggqhkjOPQQDAjBKMQsw +CQYDVQQGEwJVUzEZMBcGA1UEChMQQ2xvdWRmbGFyZSwgSW5jLjEgMB4GA1UEAxMX +Q2xvdWRmbGFyZSBJbmMgRUNDIENBLTMwHhcNMjAwODE2MDAwMDAwWhcNMjEwODE2 +MTIwMDAwWjBhMQswCQYDVQQGEwJVUzELMAkGA1UECBMCQ0ExFjAUBgNVBAcTDVNh +biBGcmFuY2lzY28xGTAXBgNVBAoTEENsb3VkZmxhcmUsIEluYy4xEjAQBgNVBAMT +CXd3dy5xdC5pbzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABP/r0xH22wdU8fLk +RsXhxRj5fmUNUo7rxnUl3lyqYYp53cLvn3agQifXkegpE8Xv4pGmuyWZj85FtoeZ +UZh8iyCjggLiMIIC3jAfBgNVHSMEGDAWgBSlzjfq67B1DpRniLRF+tkkEIeWHzAd +BgNVHQ4EFgQU7qPYGi9VtC4/6MS+54LNEAXApBgwFAYDVR0RBA0wC4IJd3d3LnF0 +LmlvMA4GA1UdDwEB/wQEAwIHgDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUH +AwIwewYDVR0fBHQwcjA3oDWgM4YxaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL0Ns +b3VkZmxhcmVJbmNFQ0NDQS0zLmNybDA3oDWgM4YxaHR0cDovL2NybDQuZGlnaWNl +cnQuY29tL0Nsb3VkZmxhcmVJbmNFQ0NDQS0zLmNybDBMBgNVHSAERTBDMDcGCWCG +SAGG/WwBATAqMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5jb20v +Q1BTMAgGBmeBDAECAjB2BggrBgEFBQcBAQRqMGgwJAYIKwYBBQUHMAGGGGh0dHA6 +Ly9vY3NwLmRpZ2ljZXJ0LmNvbTBABggrBgEFBQcwAoY0aHR0cDovL2NhY2VydHMu +ZGlnaWNlcnQuY29tL0Nsb3VkZmxhcmVJbmNFQ0NDQS0zLmNydDAMBgNVHRMBAf8E +AjAAMIIBBAYKKwYBBAHWeQIEAgSB9QSB8gDwAHYA9lyUL9F3MCIUVBgIMJRWjuNN +Exkzv98MLyALzE7xZOMAAAFz90PlSQAABAMARzBFAiAhrrtxdmuxpCy8HAJJ5Qkg +WNvlo8nZqfe6pqGUcz0dmwIhAOMqDtd5ZhcfRk96GAJxPm8bH4hDnmqDP/zJG2Mq +nFpMAHYAXNxDkv7mq0VEsV6a1FbmEDf71fpH3KFzlLJe5vbHDsoAAAFz90PlewAA +BAMARzBFAiB/EkdY10LDdaRcf6eSc/QxucxU+2PI+3pWjh/21A8ZUAIhAK2Qz9Kw +onlRNyHpV3E6qyVydkXihj3c3q5UclpURYcmMAoGCCqGSM49BAMCA0kAMEYCIQDz +K/lzLb2Rbeg1HErRLLm2HkJUmfOGU2+tbROSTGK8ugIhAKA+MKqaZ8VjPxQ+Ho4v +fuwccvZfkU/fg8tAHTOzX23v +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIDzTCCArWgAwIBAgIQCjeHZF5ftIwiTv0b7RQMPDANBgkqhkiG9w0BAQsFADBa +MQswCQYDVQQGEwJJRTESMBAGA1UEChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJl +clRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3liZXJUcnVzdCBSb290MB4XDTIw +MDEyNzEyNDgwOFoXDTI0MTIzMTIzNTk1OVowSjELMAkGA1UEBhMCVVMxGTAXBgNV +BAoTEENsb3VkZmxhcmUsIEluYy4xIDAeBgNVBAMTF0Nsb3VkZmxhcmUgSW5jIEVD +QyBDQS0zMFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEua1NZpkUC0bsH4HRKlAe +nQMVLzQSfS2WuIg4m4Vfj7+7Te9hRsTJc9QkT+DuHM5ss1FxL2ruTAUJd9NyYqSb +16OCAWgwggFkMB0GA1UdDgQWBBSlzjfq67B1DpRniLRF+tkkEIeWHzAfBgNVHSME +GDAWgBTlnVkwgkdYzKz6CFQ2hns6tQRN8DAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0l +BBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMBIGA1UdEwEB/wQIMAYBAf8CAQAwNAYI +KwYBBQUHAQEEKDAmMCQGCCsGAQUFBzABhhhodHRwOi8vb2NzcC5kaWdpY2VydC5j +b20wOgYDVR0fBDMwMTAvoC2gK4YpaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL09t +bmlyb290MjAyNS5jcmwwbQYDVR0gBGYwZDA3BglghkgBhv1sAQEwKjAoBggrBgEF +BQcCARYcaHR0cHM6Ly93d3cuZGlnaWNlcnQuY29tL0NQUzALBglghkgBhv1sAQIw +CAYGZ4EMAQIBMAgGBmeBDAECAjAIBgZngQwBAgMwDQYJKoZIhvcNAQELBQADggEB +AAUkHd0bsCrrmNaF4zlNXmtXnYJX/OvoMaJXkGUFvhZEOFp3ArnPEELG4ZKk40Un ++ABHLGioVplTVI+tnkDB0A+21w0LOEhsUCxJkAZbZB2LzEgwLt4I4ptJIsCSDBFe +lpKU1fwg3FZs5ZKTv3ocwDfjhUkV+ivhdDkYD7fa86JXWGBPzI6UAPxGezQxPk1H +goE6y/SJXQ7vTQ1unBuCJN0yJV0ReFEQPaA1IwQvZW+cwdFD19Ae8zFnWSfda9J1 +CZMRJCQUzym+5iPDuI9yP+kHyCREU3qzuWFloUwOxkgAyXVjBYdwRVKD05WdRerw +6DEdfgkfCv4+3ao8XnTSrLE= +-----END CERTIFICATE----- diff -Naur a/qtbase/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/qtbase/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp --- a/qtbase/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp 2022-01-25 17:23:44.127496352 +0000 @@ -31,6 +31,7 @@ #include #include #include +#include #include #include #include @@ -51,10 +52,12 @@ #include "../../../network-settings.h" #ifndef QT_NO_SSL + #ifndef QT_NO_OPENSSL #include "private/qsslsocket_openssl_p.h" #include "private/qsslsocket_openssl_symbols_p.h" -#endif +#endif // QT_NO_OPENSSL + #include "private/qsslsocket_p.h" #include "private/qsslconfiguration_p.h" @@ -73,8 +76,9 @@ #define FLUKE_CERTIFICATE_ERROR QSslError::SelfSignedCertificate #else #define FLUKE_CERTIFICATE_ERROR QSslError::CertificateUntrusted -#endif -#endif // QT_NO_SSL +#endif // QT_NO_OPENSSL + +#endif // QT_NO_OPENSSL // Detect ALPN (Application-Layer Protocol Negotiation) support #undef ALPN_SUPPORTED // Undef the variable first to be safe @@ -164,9 +168,6 @@ // API tests void sslErrors_data(); void sslErrors(); - void addCaCertificate(); - void addCaCertificates(); - void addCaCertificates2(); void ciphers(); void connectToHostEncrypted(); void connectToHostEncryptedWithVerificationPeerName(); @@ -191,7 +192,7 @@ void setLocalCertificate(); void localCertificateChain(); void setLocalCertificateChain(); - void setPrivateKey(); + void tlsConfiguration(); void setSocketDescriptor(); void setSslConfiguration_data(); void setSslConfiguration(); @@ -218,6 +219,9 @@ void waitForMinusOne(); void verifyMode(); void verifyDepth(); +#ifndef QT_NO_OPENSSL + void verifyAndDefaultConfiguration(); +#endif // QT_NO_OPENSSL void disconnectFromHostWhenConnecting(); void disconnectFromHostWhenConnected(); #ifndef QT_NO_OPENSSL @@ -770,28 +774,17 @@ QCOMPARE(sslErrors, peerErrors); } -void tst_QSslSocket::addCaCertificate() -{ - if (!QSslSocket::supportsSsl()) - return; -} - -void tst_QSslSocket::addCaCertificates() -{ - if (!QSslSocket::supportsSsl()) - return; -} - -void tst_QSslSocket::addCaCertificates2() +void tst_QSslSocket::ciphers() { if (!QSslSocket::supportsSsl()) return; -} -void tst_QSslSocket::ciphers() -{ - if (!QSslSocket::supportsSsl()) + QFETCH_GLOBAL(const bool, setProxy); + if (setProxy) { + // KISS(mart), we don't connect, no need to test the same thing + // many times! return; + } QSslSocket socket; QCOMPARE(socket.sslConfiguration().ciphers(), QSslConfiguration::defaultConfiguration().ciphers()); @@ -805,14 +798,16 @@ socket.setSslConfiguration(sslConfig); QCOMPARE(socket.sslConfiguration().ciphers(), QSslConfiguration::defaultConfiguration().ciphers()); - sslConfig.setCiphers(QSslConfiguration::defaultConfiguration().ciphers()); - socket.setSslConfiguration(sslConfig); - QCOMPARE(socket.sslConfiguration().ciphers(), QSslConfiguration::defaultConfiguration().ciphers()); - - // Task 164356 - sslConfig.setCiphers({QSslCipher("ALL"), QSslCipher("!ADH"), QSslCipher("!LOW"), - QSslCipher("!EXP"), QSslCipher("!MD5"), QSslCipher("@STRENGTH")}); - socket.setSslConfiguration(sslConfig); +#ifndef QT_NO_OPENSSL + const auto ciphers = QSslConfiguration::defaultConfiguration().ciphers(); + for (const auto &cipher : ciphers) { + if (cipher.name().size() && cipher.protocol() != QSsl::UnknownProtocol) { + const QSslCipher aCopy(cipher.name(), cipher.protocol()); + QCOMPARE(aCopy, cipher); + break; + } + } +#endif // QT_NO_OPENSSL } void tst_QSslSocket::connectToHostEncrypted() @@ -1562,8 +1557,33 @@ QCOMPARE(chain[1].serialNumber(), QByteArray("3b:eb:99:c5:ea:d8:0b:5d:0b:97:5d:4f:06:75:4b:e1")); } -void tst_QSslSocket::setPrivateKey() +void tst_QSslSocket::tlsConfiguration() { + QFETCH_GLOBAL(const bool, setProxy); + if (setProxy) + return; + // Test some things not covered by any other auto-test. + QSslSocket socket; + auto tlsConfig = socket.sslConfiguration(); + QVERIFY(tlsConfig.sessionCipher().isNull()); + QCOMPARE(tlsConfig.addCaCertificates(QStringLiteral("nonexisting/chain.crt")), false); + QCOMPARE(tlsConfig.sessionProtocol(), QSsl::UnknownProtocol); + QSslConfiguration nullConfig; + QVERIFY(nullConfig.isNull()); +#ifndef QT_NO_OPENSSL + nullConfig.setEllipticCurves(tlsConfig.ellipticCurves()); + QCOMPARE(nullConfig.ellipticCurves(), tlsConfig.ellipticCurves()); +#endif + QMap backendConfig; + backendConfig["DTLSMTU"] = QVariant::fromValue(1024); + backendConfig["DTLSTIMEOUTMS"] = QVariant::fromValue(1000); + nullConfig.setBackendConfiguration(backendConfig); + QCOMPARE(nullConfig.backendConfiguration(), backendConfig); + QTest::ignoreMessage(QtWarningMsg, "QSslConfiguration::setPeerVerifyDepth: cannot set negative depth of -1000"); + nullConfig.setPeerVerifyDepth(-1000); + QVERIFY(nullConfig.peerVerifyDepth() != -1000); + nullConfig.setPeerVerifyDepth(100); + QCOMPARE(nullConfig.peerVerifyDepth(), 100); } void tst_QSslSocket::setSocketDescriptor() @@ -2387,6 +2407,43 @@ QCOMPARE(socket.peerVerifyDepth(), 1); } +#ifndef QT_NO_OPENSSL +void tst_QSslSocket::verifyAndDefaultConfiguration() +{ + QFETCH_GLOBAL(const bool, setProxy); + if (setProxy) + return; + const auto defaultCACertificates = QSslConfiguration::defaultConfiguration().caCertificates(); + const auto chainGuard = qScopeGuard([&defaultCACertificates]{ + auto conf = QSslConfiguration::defaultConfiguration(); + conf.setCaCertificates(defaultCACertificates); + QSslConfiguration::setDefaultConfiguration(conf); + }); + + auto chain = QSslCertificate::fromPath(testDataDir + QStringLiteral("certs/qtiochain.crt"), QSsl::Pem); + QCOMPARE(chain.size(), 2); + QVERIFY(!chain.at(0).isNull()); + QVERIFY(!chain.at(1).isNull()); + auto errors = QSslCertificate::verify(chain); + // At least, test that 'verify' did not alter the default configuration: + QCOMPARE(defaultCACertificates, QSslConfiguration::defaultConfiguration().caCertificates()); + if (!errors.isEmpty()) + QSKIP("The certificate for qt.io could not be trusted, skipping the rest of the test"); +#ifdef Q_OS_WINDOWS + const auto fakeCaChain = QSslCertificate::fromPath(testDataDir + QStringLiteral("certs/fluke.cert")); + QCOMPARE(fakeCaChain.size(), 1); + const auto caCert = fakeCaChain.at(0); + QVERIFY(!caCert.isNull()); + auto conf = QSslConfiguration::defaultConfiguration(); + conf.setCaCertificates({caCert}); + QSslConfiguration::setDefaultConfiguration(conf); + errors = QSslCertificate::verify(chain); + QVERIFY(errors.size() > 0); + QCOMPARE(QSslConfiguration::defaultConfiguration().caCertificates(), QList() << caCert); +#endif +} +#endif // QT_NO_OPENSSL + void tst_QSslSocket::disconnectFromHostWhenConnecting() { QSslSocketPtr socket = newSocket(); diff -Naur a/qtbase/tests/auto/network/ssl/ssl.pro b/qtbase/tests/auto/network/ssl/ssl.pro --- a/qtbase/tests/auto/network/ssl/ssl.pro 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network/ssl/ssl.pro 2022-01-25 17:23:44.140496305 +0000 @@ -5,11 +5,12 @@ qpassworddigestor \ qsslcertificate \ qsslcipher \ - qsslellipticcurve \ - qsslerror \ - qsslkey \ + qsslellipticcurve qtConfig(ssl) { + SUBDIRS += qsslkey \ + qsslerror + qtConfig(private_tests) { SUBDIRS += \ qsslsocket \ diff -Naur a/qtbase/tests/auto/network-settings.h b/qtbase/tests/auto/network-settings.h --- a/qtbase/tests/auto/network-settings.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/network-settings.h 2022-01-25 17:23:44.112496406 +0000 @@ -262,6 +262,41 @@ #endif } + static QString hostWithServiceOnPort(int port) + { +#if !defined(QT_TEST_SERVER) + Q_UNUSED(port); + return serverName(); +#else + switch (port) { + case 13: + case 22: + case 139: + return serverName(); // No such things in docker (yet?) + case 7: + return echoServerName(); + case 21: + return ftpServerName(); + case 80: + case 443: + return httpServerName(); + case 143: + return imapServerName(); + case 3128: + case 3129: + case 3130: + return httpProxyServerName(); + case 1080: + case 1081: + return socksProxyServerName(); + case 2121: + return ftpProxyServerName(); + default: + return serverName(); + } +#endif // QT_TEST_SERVER + } + #ifdef QT_NETWORK_LIB static QHostAddress imapServerIp() { @@ -297,5 +332,6 @@ { return getServerIpImpl(firewallServerName()); } -#endif + +#endif // QT_NETWORK_LIB }; diff -Naur a/qtbase/tests/auto/other/lancelot/scripts/tinydashes.qps b/qtbase/tests/auto/other/lancelot/scripts/tinydashes.qps --- a/qtbase/tests/auto/other/lancelot/scripts/tinydashes.qps 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/tests/auto/other/lancelot/scripts/tinydashes.qps 2022-01-25 17:23:44.176496176 +0000 @@ -0,0 +1,34 @@ +# Version: 1 +# CheckVsReference: 5% + +path_addEllipse mypath 20.0 20.0 200.0 200.0 + +save +setPen blue 20 SolidLine FlatCap +pen_setCosmetic true +pen_setDashPattern [ 0.0004 0.0004 ] +setBrush yellow + +drawPath mypath +translate 300 0 +setRenderHint Antialiasing true +drawPath mypath +restore + +path_addEllipse bigpath 200000.0 200000.0 2000000.0 2000000.0 + +setPen blue 20 DotLine FlatCap +setBrush yellow + +save +translate 0 300 +scale 0.0001 0.00011 +drawPath bigpath +restore + +save +translate 300 300 +setRenderHint Antialiasing true +scale 0.0001 0.00011 +drawPath bigpath +restore diff -Naur a/qtbase/tests/auto/other/networkselftest/networkselftest.pro b/qtbase/tests/auto/other/networkselftest/networkselftest.pro --- a/qtbase/tests/auto/other/networkselftest/networkselftest.pro 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/other/networkselftest/networkselftest.pro 2022-01-25 17:23:44.113496402 +0000 @@ -3,3 +3,6 @@ SOURCES += tst_networkselftest.cpp QT = core core-private network testlib + +CONFIG += unsupported/testserver +QT_TEST_SERVER_LIST = cyrus vsftpd apache2 ftp-proxy danted squid echo diff -Naur a/qtbase/tests/auto/other/networkselftest/tst_networkselftest.cpp b/qtbase/tests/auto/other/networkselftest/tst_networkselftest.cpp --- a/qtbase/tests/auto/other/networkselftest/tst_networkselftest.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/other/networkselftest/tst_networkselftest.cpp 2022-01-25 17:23:44.113496402 +0000 @@ -35,18 +35,16 @@ #include #include -#ifndef QT_NO_BEARERMANAGEMENT -#include -#include -#include -#endif - #include "../../network-settings.h" class tst_NetworkSelfTest: public QObject { Q_OBJECT + // This is either old server's address, or the new http + // server's address (different from ftp, for example): QHostAddress cachedIpAddress; + // This is only for the new docker test server: + QHostAddress ftpServerIpAddress; public: tst_NetworkSelfTest(); virtual ~tst_NetworkSelfTest(); @@ -83,12 +81,6 @@ // ssl supported test void supportsSsl(); -private: -#ifndef QT_NO_BEARERMANAGEMENT - QNetworkConfigurationManager *netConfMan; - QNetworkConfiguration networkConfiguration; - QScopedPointer networkSession; -#endif }; class Chat @@ -223,8 +215,8 @@ #else QTcpSocket socket; #endif - - socket.connectToHost(QtNetworkSettings::serverName(), port); + const auto serverName = QtNetworkSettings::hostWithServiceOnPort(port); + socket.connectToHost(serverName, port); qDebug() << 0 << "Connecting to server on port" << port; QVERIFY2(socket.waitForConnected(10000), QString("Failed to connect to server in step 0: %1").arg(socket.errorString()).toLocal8Bit()); @@ -236,7 +228,7 @@ case Chat::Expect: { qDebug() << i << "Expecting" << prettyByteArray(it->data); if (!doSocketRead(&socket, it->data.length(), 3 * defaultReadTimeoutMS)) - QFAIL(msgDoSocketReadFailed(QtNetworkSettings::serverName(), port, i, it->data.length())); + QFAIL(msgDoSocketReadFailed(serverName, port, i, it->data.length())); // pop that many bytes off the socket QByteArray received = socket.read(it->data.length()); @@ -254,7 +246,7 @@ while (true) { // scan the buffer until we have our string if (!doSocketRead(&socket, it->data.length())) - QFAIL(msgDoSocketReadFailed(QtNetworkSettings::serverName(), port, i, it->data.length())); + QFAIL(msgDoSocketReadFailed(serverName, port, i, it->data.length())); QByteArray buffer; buffer.resize(socket.bytesAvailable()); @@ -275,7 +267,7 @@ case Chat::SkipBytes: { qDebug() << i << "Skipping" << it->value << "bytes"; if (!doSocketRead(&socket, it->value)) - QFAIL(msgDoSocketReadFailed(QtNetworkSettings::serverName(), port, i, it->value)); + QFAIL(msgDoSocketReadFailed(serverName, port, i, it->value)); // now discard the bytes QByteArray buffer = socket.read(it->value); @@ -324,7 +316,7 @@ case Chat::Reconnect: qDebug() << i << "Reconnecting to server on port" << port; - socket.connectToHost(QtNetworkSettings::serverName(), port); + socket.connectToHost(serverName, port); QVERIFY2(socket.waitForConnected(10000), QString("Failed to reconnect to server in step %1: %2").arg(i).arg(socket.errorString()).toLocal8Bit()); break; @@ -357,7 +349,7 @@ { if (cachedIpAddress.protocol() == QAbstractSocket::UnknownNetworkLayerProtocol) { // need resolving - QHostInfo resolved = QHostInfo::fromName(QtNetworkSettings::serverName()); + QHostInfo resolved = QHostInfo::fromName(QtNetworkSettings::httpServerName()); if(resolved.error() != QHostInfo::NoError || resolved.addresses().isEmpty()) { qWarning("QHostInfo::fromName failed (%d).", resolved.error()); @@ -370,16 +362,27 @@ void tst_NetworkSelfTest::initTestCase() { +#if defined(QT_TEST_SERVER) + QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::echoServerName(), 7)); + // TODO: 'daytime' , port 13. + QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::ftpServerName(), 21)); + const QHostInfo resolved = QHostInfo::fromName(QtNetworkSettings::ftpServerName()); + if (resolved.error() == QHostInfo::NoError && !resolved.addresses().isEmpty()) + ftpServerIpAddress = resolved.addresses().first(); + // TODO: 'ssh', port 22. + QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::ftpProxyServerName(), 2121)); + QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::httpServerName(), 80)); + // TODO: 'smb', port 139. + QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::imapServerName(), 143)); + QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::httpServerName(), 443)); + QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::httpProxyServerName(), 3128)); + QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::httpProxyServerName(), 3129)); + QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::httpProxyServerName(), 3130)); + QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::socksProxyServerName(), 1080)); + QVERIFY(QtNetworkSettings::verifyConnection(QtNetworkSettings::socksProxyServerName(), 1081)); +#else if (!QtNetworkSettings::verifyTestNetworkSettings()) QSKIP("No network test server available"); -#ifndef QT_NO_BEARERMANAGEMENT - netConfMan = new QNetworkConfigurationManager(this); - networkConfiguration = netConfMan->defaultConfiguration(); - networkSession.reset(new QNetworkSession(networkConfiguration)); - if (!networkSession->isOpen()) { - networkSession->open(); - QVERIFY(networkSession->waitForOpened(30000)); - } #endif } @@ -402,7 +405,7 @@ { QTest::addColumn("hostName"); QTest::newRow("local-name") << QtNetworkSettings::serverLocalName(); - QTest::newRow("fqdn") << QtNetworkSettings::serverName(); + QTest::newRow("fqdn") << QtNetworkSettings::httpServerName(); } void tst_NetworkSelfTest::dnsResolution() @@ -420,7 +423,7 @@ { // check that we get a proper error connecting to port 12346 QTcpSocket socket; - socket.connectToHost(QtNetworkSettings::serverName(), 12346); + socket.connectToHost(QtNetworkSettings::httpServerName(), 12346); QElapsedTimer timer; timer.start(); @@ -434,7 +437,11 @@ void tst_NetworkSelfTest::remotePortsOpen_data() { +#if defined(QT_TEST_SERVER) + QSKIP("Skipping, for the docker test server already tested by initTestCase()"); +#endif QTest::addColumn("portNumber"); + QTest::newRow("echo") << 7; QTest::newRow("daytime") << 13; QTest::newRow("ftp") << 21; @@ -453,9 +460,10 @@ void tst_NetworkSelfTest::remotePortsOpen() { - QFETCH(int, portNumber); + QFETCH(const int, portNumber); + QTcpSocket socket; - socket.connectToHost(QtNetworkSettings::serverName(), portNumber); + socket.connectToHost(QtNetworkSettings::hostWithServiceOnPort(portNumber), quint16(portNumber)); if (!socket.waitForConnected(10000)) { if (socket.error() == QAbstractSocket::SocketTimeoutError) @@ -470,43 +478,43 @@ { QList rv; rv << Chat::expect("220") - << Chat::discardUntil("\r\n") - << Chat::send("USER anonymous" + userSuffix + "\r\n") - << Chat::expect("331") - << Chat::discardUntil("\r\n") - << Chat::send("PASS user@hostname\r\n") - << Chat::expect("230") - << Chat::discardUntil("\r\n") - - << Chat::send("CWD pub\r\n") - << Chat::expect("250") - << Chat::discardUntil("\r\n") - << Chat::send("CWD dir-not-readable\r\n") - << Chat::expect("550") - << Chat::discardUntil("\r\n") - << Chat::send("PWD\r\n") - << Chat::expect("257 \"/pub\"\r\n") - << Chat::send("SIZE file-not-readable.txt\r\n") - << Chat::expect("213 41\r\n") - << Chat::send("CWD qxmlquery\r\n") - << Chat::expect("250") - << Chat::discardUntil("\r\n") + << Chat::discardUntil("\r\n") + << Chat::send("USER anonymous" + userSuffix + "\r\n") + << Chat::expect("331") + << Chat::discardUntil("\r\n") + << Chat::send("PASS user@hostname\r\n") + << Chat::expect("230") + << Chat::discardUntil("\r\n") + << Chat::send("CWD pub\r\n") + << Chat::expect("250") + << Chat::discardUntil("\r\n") + << Chat::send("CWD dir-not-readable\r\n") + << Chat::expect("550") + << Chat::discardUntil("\r\n") + << Chat::send("PWD\r\n") +#if defined(QT_TEST_SERVER) + << Chat::expect("257 \"/pub\" is the current directory\r\n") +#else + << Chat::expect("257 \"/pub\"\r\n") +#endif + << Chat::send("SIZE file-not-readable.txt\r\n") + << Chat::expect("213 41\r\n") + << Chat::send("CWD qxmlquery\r\n") + << Chat::expect("250") + << Chat::discardUntil("\r\n") + << Chat::send("CWD /qtest\r\n") + << Chat::expect("250") + << Chat::discardUntil("\r\n") + << Chat::send("SIZE bigfile\r\n") + << Chat::expect("213 519240\r\n") + << Chat::send("SIZE rfc3252\r\n") + << Chat::expect("213 25962\r\n") + << Chat::send("SIZE rfc3252.txt\r\n") + << Chat::expect("213 25962\r\n") + << Chat::send("QUIT\r\n"); - << Chat::send("CWD /qtest\r\n") - << Chat::expect("250") - << Chat::discardUntil("\r\n") - << Chat::send("SIZE bigfile\r\n") - << Chat::expect("213 519240\r\n") - << Chat::send("SIZE rfc3252\r\n") - << Chat::expect("213 25962\r\n") - << Chat::send("SIZE rfc3252.txt\r\n") - << Chat::expect("213 25962\r\n") -// << Chat::send("SIZE nonASCII/german_\344\366\374\304\326\334\337\r\n") -// << Chat::expect("213 40\r\n") - - << Chat::send("QUIT\r\n"); - rv << Chat::expect("221") - << Chat::discardUntil("\r\n"); + rv << Chat::expect("221") + << Chat::discardUntil("\r\n"); rv << Chat::RemoteDisconnect; return rv; @@ -519,7 +527,7 @@ void tst_NetworkSelfTest::ftpProxyServer() { - netChat(2121, ftpChat("@" + QtNetworkSettings::serverName().toLatin1())); + netChat(2121, ftpChat("@" + QtNetworkSettings::ftpServerName().toLatin1())); } void tst_NetworkSelfTest::imapServer() @@ -551,7 +559,7 @@ // HTTP/1.0 chat: << Chat::Reconnect << Chat::send("GET / HTTP/1.0\r\n" - "Host: " + QtNetworkSettings::serverName().toLatin1() + "\r\n" + "Host: " + QtNetworkSettings::httpServerName().toLatin1() + "\r\n" "Connection: close\r\n" "\r\n") << Chat::expect("HTTP/1.") @@ -563,7 +571,7 @@ << Chat::Reconnect << Chat::send("POST / HTTP/1.0\r\n" "Content-Length: 5\r\n" - "Host: " + QtNetworkSettings::serverName().toLatin1() + "\r\n" + "Host: " + QtNetworkSettings::httpServerName().toLatin1() + "\r\n" "Connection: close\r\n" "\r\n" "Hello") @@ -575,7 +583,7 @@ // HTTP protected area << Chat::Reconnect << Chat::send("GET /qtest/protected/rfc3252.txt HTTP/1.0\r\n" - "Host: " + QtNetworkSettings::serverName().toLatin1() + "\r\n" + "Host: " + QtNetworkSettings::httpServerName().toLatin1() + "\r\n" "Connection: close\r\n" "\r\n") << Chat::expect("HTTP/1.") @@ -585,7 +593,7 @@ << Chat::Reconnect << Chat::send("HEAD /qtest/protected/rfc3252.txt HTTP/1.0\r\n" - "Host: " + QtNetworkSettings::serverName().toLatin1() + "\r\n" + "Host: " + QtNetworkSettings::httpServerName().toLatin1() + "\r\n" "Connection: close\r\n" "Authorization: Basic cXNvY2tzdGVzdDpwYXNzd29yZA==\r\n" "\r\n") @@ -597,7 +605,7 @@ // DAV area << Chat::Reconnect << Chat::send("HEAD /dav/ HTTP/1.0\r\n" - "Host: " + QtNetworkSettings::serverName().toLatin1() + "\r\n" + "Host: " + QtNetworkSettings::httpServerName().toLatin1() + "\r\n" "Connection: close\r\n" "\r\n") << Chat::expect("HTTP/1.") @@ -609,7 +617,7 @@ << Chat::Reconnect << Chat::send("PUT /dav/networkselftest-" + uniqueExtension + ".txt HTTP/1.0\r\n" "Content-Length: 5\r\n" - "Host: " + QtNetworkSettings::serverName().toLatin1() + "\r\n" + "Host: " + QtNetworkSettings::httpServerName().toLatin1() + "\r\n" "Connection: close\r\n" "\r\n" "Hello") @@ -621,7 +629,7 @@ // check that the file did get uploaded << Chat::Reconnect << Chat::send("HEAD /dav/networkselftest-" + uniqueExtension + ".txt HTTP/1.0\r\n" - "Host: " + QtNetworkSettings::serverName().toLatin1() + "\r\n" + "Host: " + QtNetworkSettings::httpServerName().toLatin1() + "\r\n" "Connection: close\r\n" "\r\n") << Chat::expect("HTTP/1.") @@ -633,7 +641,7 @@ // HTTP/1.0 DELETE << Chat::Reconnect << Chat::send("DELETE /dav/networkselftest-" + uniqueExtension + ".txt HTTP/1.0\r\n" - "Host: " + QtNetworkSettings::serverName().toLatin1() + "\r\n" + "Host: " + QtNetworkSettings::httpServerName().toLatin1() + "\r\n" "Connection: close\r\n" "\r\n") << Chat::expect("HTTP/1.") @@ -668,7 +676,7 @@ QList chat; chat << Chat::send("HEAD " + url.toEncoded() + " HTTP/1.0\r\n" - "Host: " + QtNetworkSettings::serverName().toLatin1() + "\r\n" + "Host: " + QtNetworkSettings::httpServerName().toLatin1() + "\r\n" "Connection: close\r\n" "Authorization: Basic cXNvY2tzdGVzdDpwYXNzd29yZA==\r\n" "\r\n") @@ -757,7 +765,7 @@ netChat(443, QList() << Chat::StartEncryption << Chat::send("GET / HTTP/1.0\r\n" - "Host: " + QtNetworkSettings::serverName().toLatin1() + "\r\n" + "Host: " + QtNetworkSettings::httpServerName().toLatin1() + "\r\n" "Connection: close\r\n" "\r\n") << Chat::expect("HTTP/1.") @@ -772,7 +780,7 @@ netChat(3128, QList() // proxy GET by IP << Chat::send("GET http://" + serverIpAddress().toString().toLatin1() + "/ HTTP/1.0\r\n" - "Host: " + QtNetworkSettings::serverName().toLatin1() + "\r\n" + "Host: " + QtNetworkSettings::httpServerName().toLatin1() + "\r\n" "Proxy-connection: close\r\n" "\r\n") << Chat::expect("HTTP/1.") @@ -782,8 +790,8 @@ // proxy GET by hostname << Chat::Reconnect - << Chat::send("GET http://" + QtNetworkSettings::serverName().toLatin1() + "/ HTTP/1.0\r\n" - "Host: " + QtNetworkSettings::serverName().toLatin1() + "\r\n" + << Chat::send("GET http://" + QtNetworkSettings::httpServerName().toLatin1() + "/ HTTP/1.0\r\n" + "Host: " + QtNetworkSettings::httpServerName().toLatin1() + "\r\n" "Proxy-connection: close\r\n" "\r\n") << Chat::expect("HTTP/1.") @@ -793,8 +801,13 @@ // proxy CONNECT by IP << Chat::Reconnect +#if !defined(QT_TEST_SERVER) << Chat::send("CONNECT " + serverIpAddress().toString().toLatin1() + ":21 HTTP/1.0\r\n" "\r\n") +#else + << Chat::send("CONNECT " + ftpServerIpAddress.toString().toLatin1() + ":21 HTTP/1.0\r\n" + "\r\n") +#endif << Chat::expect("HTTP/1.") << Chat::discardUntil(" ") << Chat::expect("200 ") @@ -803,7 +816,7 @@ // proxy CONNECT by hostname << Chat::Reconnect - << Chat::send("CONNECT " + QtNetworkSettings::serverName().toLatin1() + ":21 HTTP/1.0\r\n" + << Chat::send("CONNECT " + QtNetworkSettings::ftpServerName().toLatin1() + ":21 HTTP/1.0\r\n" "\r\n") << Chat::expect("HTTP/1.") << Chat::discardUntil(" ") @@ -817,8 +830,8 @@ { netChat(3129, QList() // test auth required response - << Chat::send("GET http://" + QtNetworkSettings::serverName().toLatin1() + "/ HTTP/1.0\r\n" - "Host: " + QtNetworkSettings::serverName().toLatin1() + "\r\n" + << Chat::send("GET http://" + QtNetworkSettings::httpServerName().toLatin1() + "/ HTTP/1.0\r\n" + "Host: " + QtNetworkSettings::httpServerName().toLatin1() + "\r\n" "Proxy-connection: close\r\n" "\r\n") << Chat::expect("HTTP/1.") @@ -829,8 +842,8 @@ // now try sending our credentials << Chat::Reconnect - << Chat::send("GET http://" + QtNetworkSettings::serverName().toLatin1() + "/ HTTP/1.0\r\n" - "Host: " + QtNetworkSettings::serverName().toLatin1() + "\r\n" + << Chat::send("GET http://" + QtNetworkSettings::httpServerName().toLatin1() + "/ HTTP/1.0\r\n" + "Host: " + QtNetworkSettings::httpServerName().toLatin1() + "\r\n" "Proxy-connection: close\r\n" "Proxy-Authorization: Basic cXNvY2tzdGVzdDpwYXNzd29yZA==\r\n" "\r\n") @@ -844,9 +857,13 @@ { netChat(3130, QList() // test auth required response - << Chat::send("GET http://" + QtNetworkSettings::serverName().toLatin1() + "/ HTTP/1.0\r\n" - "Host: " + QtNetworkSettings::serverName().toLatin1() + "\r\n" + << Chat::send("GET http://" + QtNetworkSettings::httpServerName().toLatin1() + "/ HTTP/1.0\r\n" + "Host: " + QtNetworkSettings::httpServerName().toLatin1() + "\r\n" +#if !defined(QT_TEST_SERVER) "Proxy-connection: keep-alive\r\n" // NTLM auth will disconnect +#else + "Proxy-connection: close\r\n" // Well, what do you know? It keeps it alive! +#endif "\r\n") << Chat::expect("HTTP/1.") << Chat::discardUntil(" ") @@ -877,8 +894,12 @@ char buf[4]; quint32 data; } ip4Address; - ip4Address.data = qToBigEndian(serverIpAddress().toIPv4Address()); - + ip4Address.data = +#if !defined(QT_TEST_SERVER) + qToBigEndian(serverIpAddress().toIPv4Address()); +#else + qToBigEndian(ftpServerIpAddress.toIPv4Address()); +#endif const QByteArray handshakeNoAuthData = QByteArray(handshakeNoAuth, int(sizeof handshakeNoAuth) - 1); const QByteArray handshakeOkNoAuthData = QByteArray(handshakeOkNoAuth, int(sizeof handshakeOkNoAuth) - 1); const QByteArray connect1Data = QByteArray(connect1, int(sizeof connect1) - 1); @@ -887,6 +908,10 @@ netChat(1080, QList() // IP address connection +#if !defined(QT_TEST_SERVER) + // This test relies on the proxy and ftp servers + // running on the same machine, which is not the + // case for the docker test server. << Chat::send(handshakeNoAuthData) << Chat::expect(handshakeOkNoAuthData) << Chat::send(connect1Data) @@ -897,6 +922,7 @@ // connect by IP << Chat::Reconnect +#endif << Chat::send(handshakeNoAuthData) << Chat::expect(handshakeOkNoAuthData) << Chat::send(QBA(connect1a) + QByteArray::fromRawData(ip4Address.buf, 4) + QBA(connect1b)) @@ -904,8 +930,9 @@ << Chat::expect("\1") // IPv4 address following << Chat::skipBytes(6) // the server's local address and port << ftpChat() - - // connect to "localhost" by hostname +#if !defined(QT_TEST_SERVER) + // connect to "localhost" by hostname, the same as above: + // makes no sense with the docker test server. << Chat::Reconnect << Chat::send(handshakeNoAuthData) << Chat::expect(handshakeOkNoAuthData) @@ -914,12 +941,12 @@ << Chat::expect("\1") // IPv4 address following << Chat::skipBytes(6) // the server's local address and port << ftpChat() - +#endif // connect to server by its official name << Chat::Reconnect << Chat::send(handshakeNoAuthData) << Chat::expect(handshakeOkNoAuthData) - << Chat::send(QBA(connect2a) + char(QtNetworkSettings::serverName().size()) + QtNetworkSettings::serverName().toLatin1() + QBA(connect1b)) + << Chat::send(QBA(connect2a) + char(QtNetworkSettings::ftpServerName().size()) + QtNetworkSettings::ftpServerName().toLatin1() + QBA(connect1b)) << Chat::expect(connectedData) << Chat::expect("\1") // IPv4 address following << Chat::skipBytes(6) // the server's local address and port @@ -941,8 +968,10 @@ << Chat::send(handshakeNoAuthData) << Chat::expect(handshakeAuthNotOkData) << Chat::RemoteDisconnect - - // now try to connect with authentication +#if !defined(QT_TEST_SERVER) + // now try to connect with authentication, + // danted is just that, socks 5 proxy and + // does not have ftp running, skip! << Chat::Reconnect << Chat::send(handshakeAuthPasswordData) << Chat::expect(handshakeOkPasswdAuthData) @@ -951,6 +980,16 @@ << Chat::expect("\1") // IPv4 address following << Chat::skipBytes(6) // the server's local address and port << ftpChat() +#else + << Chat::Reconnect + << Chat::send(handshakeAuthPasswordData) + << Chat::expect(handshakeOkPasswdAuthData) + << Chat::send(QBA(connect2a) + char(QtNetworkSettings::ftpServerName().size()) + QtNetworkSettings::ftpServerName().toLatin1() + QBA(connect1b)) + << Chat::expect(connectedData) + << Chat::expect("\1") // IPv4 address following + << Chat::skipBytes(6) // the server's local address and port + << ftpChat() +#endif ); } @@ -984,6 +1023,9 @@ void tst_NetworkSelfTest::smbServer() { +#if defined(QT_TEST_SERVER) + QSKIP("Not supported by the docker test server"); +#endif // QT_TEST_SERVER static const char contents[] = "This is 34 bytes. Do not change..."; #ifdef Q_OS_WIN // use Windows's native UNC support to try and open a file on the server diff -Naur a/qtbase/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp b/qtbase/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp --- a/qtbase/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp 2022-01-25 17:23:44.148496276 +0000 @@ -40,6 +40,7 @@ void stringListModel(); void treeWidgetModel(); void standardItemModel(); + void standardItemModelZeroColumns(); void testInsertThroughProxy(); void moveSourceItems(); void testResetThroughProxy(); @@ -104,6 +105,22 @@ model.insertColumns(0, 5, model.index(1, 3)); } +void tst_QAbstractItemModelTester::standardItemModelZeroColumns() +{ + QStandardItemModel model; + QAbstractItemModelTester t1(&model); + // QTBUG-92220 + model.insertRows(0, 5); + model.removeRows(0, 5); + // QTBUG-92886 + model.insertRows(0, 5); + model.removeRows(1, 2); + + const QModelIndex parentIndex = model.index(0, 0); + model.insertRows(0, 5, parentIndex); + model.removeRows(1, 2, parentIndex); +} + void tst_QAbstractItemModelTester::testInsertThroughProxy() { DynamicTreeModel *model = new DynamicTreeModel(this); diff -Naur a/qtbase/tests/auto/testlib/selftests/tst_selftests.cpp b/qtbase/tests/auto/testlib/selftests/tst_selftests.cpp --- a/qtbase/tests/auto/testlib/selftests/tst_selftests.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/testlib/selftests/tst_selftests.cpp 2022-01-25 17:23:44.071496553 +0000 @@ -616,7 +616,7 @@ || key == QLatin1String("QEMU_SET_ENV") || key == QLatin1String("QEMU_LD_PREFIX") // Required for QEMU # if !defined(Q_OS_MAC) || key == QLatin1String("DISPLAY") || key == QLatin1String("XAUTHLOCALHOSTNAME") - || key.startsWith(QLatin1String("XDG_")) + || key.startsWith(QLatin1String("XDG_")) || key == QLatin1String("XAUTHORITY") # endif // !Q_OS_MAC #endif // Q_OS_UNIX #ifdef __COVERAGESCANNER__ diff -Naur a/qtbase/tests/auto/tools/moc/allmocs_baseline_in.json b/qtbase/tests/auto/tools/moc/allmocs_baseline_in.json --- a/qtbase/tests/auto/tools/moc/allmocs_baseline_in.json 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/tools/moc/allmocs_baseline_in.json 2022-01-25 17:23:44.169496201 +0000 @@ -671,50 +671,6 @@ { "classes": [ { - "className": "InlineSlotsWithThrowDeclaration", - "object": true, - "qualifiedClassName": "InlineSlotsWithThrowDeclaration", - "slots": [ - { - "access": "public", - "name": "a", - "returnType": "void" - }, - { - "access": "public", - "name": "b", - "returnType": "void" - }, - { - "access": "public", - "name": "c", - "returnType": "void" - }, - { - "access": "public", - "name": "d", - "returnType": "void" - }, - { - "access": "public", - "name": "e", - "returnType": "void" - } - ], - "superClasses": [ - { - "access": "public", - "name": "QObject" - } - ] - } - ], - "inputFile": "task189996.h", - "outputRevision": 67 - }, - { - "classes": [ - { "className": "TestObject", "object": true, "qualifiedClassName": "NS_A::NS_B::TestObject", diff -Naur a/qtbase/tests/auto/tools/moc/enum_inc.h b/qtbase/tests/auto/tools/moc/enum_inc.h --- a/qtbase/tests/auto/tools/moc/enum_inc.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/tools/moc/enum_inc.h 2022-01-25 17:23:44.077496531 +0000 @@ -1 +1,2 @@ -parcel +parcel = 42, +part = 12, diff -Naur a/qtbase/tests/auto/tools/moc/moc.pro b/qtbase/tests/auto/tools/moc/moc.pro --- a/qtbase/tests/auto/tools/moc/moc.pro 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/tools/moc/moc.pro 2022-01-25 17:23:44.169496201 +0000 @@ -15,7 +15,7 @@ HEADERS += using-namespaces.h no-keywords.h task87883.h c-comments.h backslash-newlines.h oldstyle-casts.h \ slots-with-void-template.h qinvokable.h namespaced-flags.h trigraphs.h \ escapes-in-string-literals.h cstyle-enums.h qprivateslots.h gadgetwithnoenums.h \ - dir-in-include-path.h single_function_keyword.h task192552.h task189996.h \ + dir-in-include-path.h single_function_keyword.h task192552.h \ task234909.h task240368.h pure-virtual-signals.h cxx11-enums.h \ cxx11-final-classes.h \ cxx11-explicit-override-control.h \ diff -Naur a/qtbase/tests/auto/tools/moc/task189996.h b/qtbase/tests/auto/tools/moc/task189996.h --- a/qtbase/tests/auto/tools/moc/task189996.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/tools/moc/task189996.h 1970-01-01 01:00:00.000000000 +0100 @@ -1,47 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ -// inline functions can have throw declarations - -#ifndef TASK189996_H -#define TASK189996_H - -#include - -class InlineSlotsWithThrowDeclaration : public QObject -{ - Q_OBJECT - -public slots: - void a() throw() { } - void b() const throw() { } - void c() throw(); - void d() throw(int) { } - void e() const throw(int,double) { } -}; - -#endif diff -Naur a/qtbase/tests/auto/tools/moc/tst_moc.cpp b/qtbase/tests/auto/tools/moc/tst_moc.cpp --- a/qtbase/tests/auto/tools/moc/tst_moc.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/tools/moc/tst_moc.cpp 2022-01-25 17:23:44.170496197 +0000 @@ -630,7 +630,6 @@ private slots: void initTestCase(); - void slotWithException() throw(MyStruct); void dontStripNamespaces(); void oldStyleCasts(); void warnOnExtraSignalSlotQualifiaction(); @@ -672,7 +671,6 @@ void templateGtGt(); void qprivateslots(); void qprivateproperties(); - void inlineSlotsWithThrowDeclaration(); void warnOnPropertyWithoutREAD(); void constructors(); void typenameWithUnsigned(); @@ -782,12 +780,6 @@ #endif } -void tst_Moc::slotWithException() throw(MyStruct) -{ - // be happy - QVERIFY(true); -} - void tst_Moc::dontStripNamespaces() { Sender sender; @@ -822,7 +814,7 @@ QStringList args; args << "-c" << "-x" << "c++" << "-Wold-style-cast" << "-I" << "." - << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++11" << "-"; + << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++1z" << "-"; proc.start("gcc", args); QVERIFY(proc.waitForStarted()); proc.write(mocOut); @@ -892,7 +884,7 @@ QStringList args; args << "-c" << "-x" << "c++" << "-I" << ".." - << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++11" << "-"; + << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++1z" << "-"; proc.start("gcc", args); QVERIFY(proc.waitForStarted()); proc.write(mocOut); @@ -1172,7 +1164,7 @@ QStringList gccArgs; gccArgs << "-c" << "-x" << "c++" << "-I" << ".." << "-I" << qtIncludePath << "-I" << includeDir << "-o" << "/dev/null" - << "-fPIC" << "-std=c++11" << "-"; + << "-fPIC" << "-std=c++1z" << "-"; proc.start("gcc", gccArgs); QVERIFY(proc.waitForStarted()); proc.write(mocOut); @@ -1591,21 +1583,6 @@ } -#include "task189996.h" - -void InlineSlotsWithThrowDeclaration::c() throw() {} - -void tst_Moc::inlineSlotsWithThrowDeclaration() -{ - InlineSlotsWithThrowDeclaration tst; - const QMetaObject *mobj = tst.metaObject(); - QVERIFY(mobj->indexOfSlot("a()") != -1); - QVERIFY(mobj->indexOfSlot("b()") != -1); - QVERIFY(mobj->indexOfSlot("c()") != -1); - QVERIFY(mobj->indexOfSlot("d()") != -1); - QVERIFY(mobj->indexOfSlot("e()") != -1); -} - void tst_Moc::warnOnPropertyWithoutREAD() { #ifdef MOC_CROSS_COMPILED @@ -1867,7 +1844,7 @@ QStringList args; args << "-c" << "-x" << "c++" << "-I" << "." - << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++11" << "-"; + << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++1z" << "-"; proc.start("gcc", args); QVERIFY(proc.waitForStarted()); proc.write(mocOut); diff -Naur a/qtbase/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp b/qtbase/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp --- a/qtbase/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp 2022-01-25 17:23:44.121496373 +0000 @@ -218,6 +218,7 @@ void QTBUG75615_sizeHintWithStylesheet(); void ensureNoIndexAtLength(); void offsetConsistent(); + void sectionsDontSortWhenNotClickingInThem(); void initialSortOrderRole(); @@ -2628,6 +2629,140 @@ QVERIFY(offset2 > offset1); } +void tst_QHeaderView::sectionsDontSortWhenNotClickingInThem() +{ + QTableView qtv; + QStandardItemModel amodel(1000, 4); + qtv.setModel(&amodel); + QHeaderView *hv = qtv.horizontalHeader(); + hv->setSectionsClickable(true); + hv->setFirstSectionMovable(true); + hv->setSectionsMovable(false); + + enum { DefaultYOffset = 5, OutOfRangeYOffset = 10000 }; + + const auto pressOnSection = [&](int section, int yOffset = DefaultYOffset) + { + QTest::mousePress(hv->viewport(), Qt::LeftButton, Qt::NoModifier, + QPoint(hv->sectionViewportPosition(section) + hv->sectionSize(section) / 2, yOffset)); + }; + const auto moveOntoSection = [&](int section, int yOffset = DefaultYOffset) + { + QTest::mouseMove(hv->viewport(), + QPoint(hv->sectionViewportPosition(section) + hv->sectionSize(section) / 2, yOffset)); + }; + const auto releaseOnSection = [&](int section, int yOffset = DefaultYOffset) + { + QTest::mouseRelease(hv->viewport(), Qt::LeftButton, Qt::NoModifier, + QPoint(hv->sectionViewportPosition(section) + hv->sectionSize(section) / 2, yOffset)); + }; + + hv->setSortIndicator(-1, Qt::AscendingOrder); + QCOMPARE(hv->sortIndicatorSection(), -1); + + pressOnSection(0); + releaseOnSection(0); + // RESULT: sorting + QCOMPARE(hv->sortIndicatorSection(), 0); + + hv->setSortIndicator(-1, Qt::AscendingOrder); + QCOMPARE(hv->sortIndicatorSection(), -1); + + pressOnSection(0); + moveOntoSection(1); + releaseOnSection(1); + // RESULT: no sorting + QCOMPARE(hv->sortIndicatorSection(), -1); + + pressOnSection(0); + moveOntoSection(1); + moveOntoSection(2); + releaseOnSection(2); + // RESULT: no sorting + QCOMPARE(hv->sortIndicatorSection(), -1); + + pressOnSection(0); + moveOntoSection(1); + moveOntoSection(0); + releaseOnSection(0); + // RESULT: sorting by 0 + QCOMPARE(hv->sortIndicatorSection(), 0); + + pressOnSection(0); + moveOntoSection(1); + releaseOnSection(1); + // RESULT: no change, still sorting by 0 + QCOMPARE(hv->sortIndicatorSection(), 0); + + auto sortOrder = hv->sortIndicatorOrder(); + pressOnSection(1); + moveOntoSection(0); + releaseOnSection(0); + // RESULT: no change, still sorting by 0 + QCOMPARE(hv->sortIndicatorSection(), 0); + QCOMPARE(hv->sortIndicatorOrder(), sortOrder); + + pressOnSection(1); + moveOntoSection(0); + moveOntoSection(1); + releaseOnSection(1); + // RESULT: sorting by 1 + QCOMPARE(hv->sortIndicatorSection(), 1); + + pressOnSection(1); + moveOntoSection(0); + releaseOnSection(0); + // RESULT: no change, still sorting by 1 + QCOMPARE(hv->sortIndicatorSection(), 1); + + hv->setSortIndicator(-1, Qt::AscendingOrder); + QCOMPARE(hv->sortIndicatorSection(), -1); + + pressOnSection(0); + releaseOnSection(0, OutOfRangeYOffset); + // RESULT: no sorting + QCOMPARE(hv->sortIndicatorSection(), -1); + + pressOnSection(0); + moveOntoSection(0, OutOfRangeYOffset); + releaseOnSection(0, OutOfRangeYOffset); + // RESULT: no sorting + QCOMPARE(hv->sortIndicatorSection(), -1); + + pressOnSection(0); + moveOntoSection(0, OutOfRangeYOffset); + moveOntoSection(0); + releaseOnSection(0); + // RESULT: sorting by 0 + QCOMPARE(hv->sortIndicatorSection(), 0); + + pressOnSection(1); + releaseOnSection(1, OutOfRangeYOffset); + // RESULT: no change, still sorting by 0 + QCOMPARE(hv->sortIndicatorSection(), 0); + + pressOnSection(1); + moveOntoSection(1, OutOfRangeYOffset); + releaseOnSection(1, OutOfRangeYOffset); + // RESULT: no change, still sorting by 0 + QCOMPARE(hv->sortIndicatorSection(), 0); + + pressOnSection(1); + moveOntoSection(1, OutOfRangeYOffset); + moveOntoSection(1); + releaseOnSection(1); + // RESULT: sorting by 1 + QCOMPARE(hv->sortIndicatorSection(), 1); + + pressOnSection(2); + moveOntoSection(1); + moveOntoSection(2); + moveOntoSection(2, OutOfRangeYOffset); + releaseOnSection(2, OutOfRangeYOffset); + // RESULT: no change, still sorting by 1 + QCOMPARE(hv->sortIndicatorSection(), 1); +} + void tst_QHeaderView::initialSortOrderRole() { QTableView view; // ### Shadowing member view (of type QHeaderView) diff -Naur a/qtbase/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp b/qtbase/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp --- a/qtbase/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp 2022-01-25 17:23:44.096496463 +0000 @@ -2707,12 +2707,12 @@ list.startDrag(Qt::MoveAction); - QCOMPARE(data.stringList(), expectedData); + QTRY_COMPARE(data.stringList(), expectedData); // if the model doesn't implement moveRows, or if items are replaced, then selection is lost if (modelMoves && !(itemFlags & Qt::ItemIsDropEnabled)) { const QStringList actualSelected = getSelectedTexts(); - QCOMPARE(actualSelected, expectedSelected); + QTRY_COMPARE(actualSelected, expectedSelected); } } diff -Naur a/qtbase/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp b/qtbase/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp --- a/qtbase/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp 2022-01-25 17:23:44.150496269 +0000 @@ -397,6 +397,7 @@ void checkHeaderMinSize(); void resizeToContents(); + void resizeToContentsSpans(); void tabFocus(); void bigModel(); @@ -3721,6 +3722,70 @@ } + +class SpanModel : public QAbstractTableModel +{ +public: + SpanModel(bool sectionsMoved) + : _sectionsMoved(sectionsMoved) + {} + int columnCount(const QModelIndex & = {}) const override { return 2; } + int rowCount(const QModelIndex & = {}) const override { return 1; } + QVariant data(const QModelIndex &idx, int role = Qt::DisplayRole) const override + { + if (role != Qt::DisplayRole) + return QVariant(); + const int col = _sectionsMoved ? 1 - idx.column() : idx.column(); + if (col == 0) + return "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."; + return QVariant(); + } +private: + bool _sectionsMoved; +}; + + +void tst_QTableView::resizeToContentsSpans() +{ + SpanModel model1(false); + SpanModel model2(true); + QTableView view1, view2, view3; + view1.setModel(&model1); + view2.setModel(&model2); + view2.horizontalHeader()->moveSection(0, 1); + view3.setModel(&model1); + + view1.setSpan(0, 0, 1, 2); + view2.setSpan(0, 1, 1, 2); + view1.show(); + view2.show(); + view3.show(); + QVERIFY(QTest::qWaitForWindowExposed(&view1)); + QVERIFY(QTest::qWaitForWindowExposed(&view2)); + QVERIFY(QTest::qWaitForWindowExposed(&view3)); + view1.setColumnWidth(0, 100); + view1.setColumnWidth(1, 100); + view2.setColumnWidth(0, 100); + view2.setColumnWidth(1, 100); + view3.setColumnWidth(0, 200); + + view1.resizeRowToContents(0); + view2.resizeRowToContents(0); + view3.resizeRowToContents(0); + QCOMPARE(view1.rowHeight(0), view3.rowHeight(0)); + QCOMPARE(view2.rowHeight(0), view3.rowHeight(0)); + + view3.resizeColumnToContents(0); + view3.resizeRowToContents(0); + // height should be only 1 text line for easy testing + view1.setRowHeight(0, view3.verticalHeader()->sectionSize(0)); + view2.setRowHeight(0, view3.verticalHeader()->sectionSize(0)); + view1.resizeColumnToContents(0); + view2.resizeColumnToContents(1); + QCOMPARE(view1.columnWidth(0), view3.columnWidth(0) - view1.columnWidth(1)); + QCOMPARE(view2.columnWidth(0), view3.columnWidth(0) - view2.columnWidth(1)); +} + QT_BEGIN_NAMESPACE extern bool Q_WIDGETS_EXPORT qt_tab_all_widgets(); // qapplication.cpp QT_END_NAMESPACE diff -Naur a/qtbase/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp b/qtbase/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp --- a/qtbase/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp 2022-01-25 17:23:44.149496273 +0000 @@ -151,6 +151,7 @@ void getMimeDataWithInvalidItem(); void testVisualItemRect(); void reparentHiddenItem(); + void persistentChildIndex(); #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) void clearItemData(); #endif @@ -3597,6 +3598,21 @@ QVERIFY(grandChild->isHidden()); } +void tst_QTreeWidget::persistentChildIndex() // QTBUG-90030 +{ + QTreeWidget tree; + QTreeWidgetItem *toplevel = new QTreeWidgetItem(QStringList{QStringLiteral("toplevel")}); + tree.addTopLevelItem(toplevel); + QModelIndex firstIndex = tree.model()->index(0, 0); + QTreeWidgetItem *child1 = new QTreeWidgetItem(QStringList{QStringLiteral("child1")}); + QTreeWidgetItem *child2 = new QTreeWidgetItem(QStringList{QStringLiteral("child2")}); + toplevel->addChildren({child1, child2}); + QPersistentModelIndex persistentIdx = tree.model()->index(1, 0, firstIndex); + QCOMPARE(persistentIdx.data().toString(), QStringLiteral("child2")); + tree.model()->removeRows(0, 1, firstIndex); + QCOMPARE(persistentIdx.data().toString(), QStringLiteral("child2")); +} + #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) void tst_QTreeWidget::clearItemData() { diff -Naur a/qtbase/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/qtbase/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp --- a/qtbase/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp 2022-01-25 17:23:44.073496546 +0000 @@ -166,6 +166,7 @@ void inputMethodUpdate(); void task_QTBUG_52027_mapCompleterIndex(); void checkMenuItemPosWhenStyleSheetIsSet(); + void checkEmbeddedLineEditWhenStyleSheetIsSet(); private: PlatformInputContext m_platformInputContext; @@ -3558,6 +3559,32 @@ qApp->setStyleSheet(oldCss); } + +void tst_QComboBox::checkEmbeddedLineEditWhenStyleSheetIsSet() +{ + QString newCss = "QWidget { background-color: red; color: white; }"; + QString oldCss = qApp->styleSheet(); + qApp->setStyleSheet(newCss); + + QWidget topLevel; + auto layout = new QVBoxLayout(&topLevel); + topLevel.setLayout(layout); + auto comboBox = new QComboBox; + layout->addWidget(comboBox); + topLevel.show(); + comboBox->setEditable(true); + QApplication::setActiveWindow(&topLevel); + QVERIFY(QTest::qWaitForWindowActive(&topLevel)); + + QImage grab = comboBox->grab().toImage(); + auto color = grab.pixelColor(grab.rect().center()); + + QVERIFY(color.red() > 240); + QVERIFY(color.green() < 20); + QVERIFY(color.blue() < 20); + + qApp->setStyleSheet(oldCss); +} QTEST_MAIN(tst_QComboBox) #include "tst_qcombobox.moc" diff -Naur a/qtbase/tests/auto/widgets/widgets/qmdiarea/BLACKLIST b/qtbase/tests/auto/widgets/widgets/qmdiarea/BLACKLIST --- a/qtbase/tests/auto/widgets/widgets/qmdiarea/BLACKLIST 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/widgets/widgets/qmdiarea/BLACKLIST 2022-01-25 17:23:44.144496291 +0000 @@ -11,3 +11,6 @@ [resizeTimer] macos +[updateScrollBars] +macos + diff -Naur a/qtbase/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp b/qtbase/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp --- a/qtbase/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp 2022-01-25 17:23:44.190496125 +0000 @@ -68,6 +68,7 @@ void taskQTBUG_20191_shortcutWithKeypadModifer(); void emitReleasedAfterChange(); void hitButton(); + void iconOnlyStyleSheet(); protected slots: void resetCounters(); @@ -695,5 +696,22 @@ QVERIFY(!button2->hitButton(QPoint(2, 2))); } +/* + Test that a style sheet with only icon doesn't crash. + QTBUG-91735 +*/ +void tst_QPushButton::iconOnlyStyleSheet() +{ + QIcon icon(":/qt-project.org/styles/commonstyle/images/dvd-32.png"); + QVERIFY(!icon.isNull()); + QPushButton pb; + pb.setStyleSheet("QPushButton {" + "icon: url(:/qt-project.org/styles/commonstyle/images/dvd-32.png);" + "border: red;" + "}"); + pb.show(); + QVERIFY(QTest::qWaitForWindowExposed(&pb)); +} + QTEST_MAIN(tst_QPushButton) #include "tst_qpushbutton.moc" diff -Naur a/qtbase/tests/libfuzzer/corelib/time/qdatetime/fromstring/fromstring.pro b/qtbase/tests/libfuzzer/corelib/time/qdatetime/fromstring/fromstring.pro --- a/qtbase/tests/libfuzzer/corelib/time/qdatetime/fromstring/fromstring.pro 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/tests/libfuzzer/corelib/time/qdatetime/fromstring/fromstring.pro 2022-01-25 17:23:44.096496463 +0000 @@ -0,0 +1,10 @@ +QT -= gui +CONFIG -= app_bundle +CONFIG += console +SOURCES += main.cpp +FUZZ_ENGINE = $$(LIB_FUZZING_ENGINE) +isEmpty(FUZZ_ENGINE) { + QMAKE_LFLAGS += -fsanitize=fuzzer +} else { + LIBS += $$FUZZ_ENGINE +} diff -Naur a/qtbase/tests/libfuzzer/corelib/time/qdatetime/fromstring/main.cpp b/qtbase/tests/libfuzzer/corelib/time/qdatetime/fromstring/main.cpp --- a/qtbase/tests/libfuzzer/corelib/time/qdatetime/fromstring/main.cpp 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/tests/libfuzzer/corelib/time/qdatetime/fromstring/main.cpp 2022-01-25 17:23:44.096496463 +0000 @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the test suite of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL-EXCEPT$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +static const QString formats[] = { + QStringLiteral("h"), + QStringLiteral("hh"), + QStringLiteral("H"), + QStringLiteral("HH"), + QStringLiteral("m"), + QStringLiteral("mm"), + QStringLiteral("s"), + QStringLiteral("ss"), + QStringLiteral("z"), + QStringLiteral("zzz"), + QStringLiteral("A"), + QStringLiteral("t"), + QStringLiteral("M/d/yyyy"), + QStringLiteral("M/d/yyyy hh:mm"), + QStringLiteral("M/d/yyyy hh:mm A"), + QStringLiteral("M/d/yyyy, hh:mm"), + QStringLiteral("M/d/yyyy, hh:mm A"), + QStringLiteral("MMM d yyyy"), + QStringLiteral("MMM d yyyy hh:mm"), + QStringLiteral("MMM d yyyy hh:mm:ss"), + QStringLiteral("MMM d yyyy, hh:mm"), + QStringLiteral("MMM d yyyy, hh:mm:ss"), + QStringLiteral("MMMM d yyyy"), + QStringLiteral("MMMM d yyyy hh:mm"), + QStringLiteral("MMMM d yyyy hh:mm:ss"), + QStringLiteral("MMMM d yyyy, hh:mm"), + QStringLiteral("MMMM d yyyy, hh:mm:ss"), + QStringLiteral("MMMM d yyyy, hh:mm:ss t"), + QStringLiteral("MMM d, yyyy"), + QStringLiteral("MMM d, yyyy hh:mm"), + QStringLiteral("MMM d, yyyy hh:mm:ss"), + QStringLiteral("MMMM d, yyyy"), + QStringLiteral("MMMM d, yyyy hh:mm"), + QStringLiteral("MMMM d, yyyy hh:mm:ss"), + QStringLiteral("MMMM d, yyyy hh:mm:ss t"), + QStringLiteral("d MMM yyyy"), + QStringLiteral("d MMM yyyy hh:mm"), + QStringLiteral("d MMM yyyy hh:mm:ss"), + QStringLiteral("d MMM yyyy, hh:mm"), + QStringLiteral("d MMM yyyy, hh:mm:ss"), + QStringLiteral("d MMMM yyyy"), + QStringLiteral("d MMMM yyyy hh:mm"), + QStringLiteral("d MMMM yyyy hh:mm:ss"), + QStringLiteral("d MMMM yyyy, hh:mm"), + QStringLiteral("d MMMM yyyy, hh:mm:ss"), + QStringLiteral("d MMM, yyyy"), + QStringLiteral("d MMM, yyyy hh:mm"), + QStringLiteral("d MMM, yyyy hh:mm:ss"), + QStringLiteral("d MMMM, yyyy"), + QStringLiteral("d MMMM, yyyy hh:mm"), + QStringLiteral("d MMMM, yyyy hh:mm:ss"), + QStringLiteral("yyyy-MM-ddThh:mm:ss.zt"), +}; + +// libFuzzer entry-point for testing QDateTimeParser +extern "C" int LLVMFuzzerTestOneInput(const char *Data, size_t Size) +{ + const QString userString = QString::fromUtf8(Data, Size); + + QDateTime::fromString(userString, Qt::TextDate); + QDateTime::fromString(userString, Qt::ISODate); + QDateTime::fromString(userString, Qt::RFC2822Date); + QDateTime::fromString(userString, Qt::ISODateWithMs); + + for (const auto &format : formats) { + QDateTime::fromString(userString, format); + } + return 0; +} diff -Naur a/qtbase/tests/libfuzzer/README b/qtbase/tests/libfuzzer/README --- a/qtbase/tests/libfuzzer/README 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/libfuzzer/README 2022-01-25 17:23:44.143496294 +0000 @@ -39,4 +39,16 @@ * tell libFuzzer to generate only ASCII data using -only_ascii=1 -For further info, see https://llvm.org/docs/LibFuzzer.html +For further info about libFuzzer, see https://llvm.org/docs/LibFuzzer.html + +Some of these tests are continuously being run on oss-fuzz which is documented at +https://google.github.io/oss-fuzz/ + +You can find: + - The build logs for Qt at + https://oss-fuzz-build-logs.storage.googleapis.com/index.html#qt + - The code coverage of the running fuzzers at + https://storage.googleapis.com/oss-fuzz-coverage/qt/reports/20201104/linux/report.html + Update the date in the URL to get more recent data. + - The found issues which were already published at: + https://bugs.chromium.org/p/oss-fuzz/issues/list?q=proj%3Dqt diff -Naur a/qtbase/tests/manual/qcursor/allcursors/mainwindow.cpp b/qtbase/tests/manual/qcursor/allcursors/mainwindow.cpp --- a/qtbase/tests/manual/qcursor/allcursors/mainwindow.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/manual/qcursor/allcursors/mainwindow.cpp 2022-01-25 17:23:44.125496359 +0000 @@ -51,6 +51,9 @@ { QPoint off(0, 0); switch (event->key()) { + case Qt::Key_Q: + qApp->quit(); + break; case Qt::Key_Up: off.setY(-4); break; diff -Naur a/qtbase/tests/testserver/apache2/testdata/main.conf b/qtbase/tests/testserver/apache2/testdata/main.conf --- a/qtbase/tests/testserver/apache2/testdata/main.conf 2020-10-27 08:02:11.000000000 +0000 +++ b/qtbase/tests/testserver/apache2/testdata/main.conf 2022-01-25 17:23:44.113496402 +0000 @@ -54,3 +54,7 @@ AllowOverride AuthConfig Options + + + Options Indexes + diff -Naur a/qtbase/tests/testserver/apache2/testdata/www/htdocs/protected/rfc3252.txt b/qtbase/tests/testserver/apache2/testdata/www/htdocs/protected/rfc3252.txt --- a/qtbase/tests/testserver/apache2/testdata/www/htdocs/protected/rfc3252.txt 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/tests/testserver/apache2/testdata/www/htdocs/protected/rfc3252.txt 2022-01-25 17:23:44.113496402 +0000 @@ -0,0 +1,899 @@ + + + + + + +Network Working Group H. Kennedy +Request for Comments: 3252 Mimezine +Category: Informational 1 April 2002 + + + Binary Lexical Octet Ad-hoc Transport + +Status of this Memo + + This memo provides information for the Internet community. It does + not specify an Internet standard of any kind. Distribution of this + memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (2002). All Rights Reserved. + +Abstract + + This document defines a reformulation of IP and two transport layer + protocols (TCP and UDP) as XML applications. + +1. Introduction + +1.1. Overview + + This document describes the Binary Lexical Octet Ad-hoc Transport + (BLOAT): a reformulation of a widely-deployed network-layer protocol + (IP [RFC791]), and two associated transport layer protocols (TCP + [RFC793] and UDP [RFC768]) as XML [XML] applications. It also + describes methods for transporting BLOAT over Ethernet and IEEE 802 + networks as well as encapsulating BLOAT in IP for gatewaying BLOAT + across the public Internet. + +1.2. Motivation + + The wild popularity of XML as a basis for application-level protocols + such as the Blocks Extensible Exchange Protocol [RFC3080], the Simple + Object Access Protocol [SOAP], and Jabber [JABBER] prompted + investigation into the possibility of extending the use of XML in the + protocol stack. Using XML at both the transport and network layer in + addition to the application layer would provide for an amazing amount + of power and flexibility while removing dependencies on proprietary + and hard-to-understand binary protocols. This protocol unification + would also allow applications to use a single XML parser for all + aspects of their operation, eliminating developer time spent figuring + out the intricacies of each new protocol, and moving the hard work of + + + + +Kennedy Informational [Page 1] + +RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 + + + parsing to the XML toolset. The use of XML also mitigates concerns + over "network vs. host" byte ordering which is at the root of many + network application bugs. + +1.3. Relation to Existing Protocols + + The reformulations specified in this RFC follow as closely as + possible the spirit of the RFCs on which they are based, and so MAY + contain elements or attributes that would not be needed in a pure + reworking (e.g. length attributes, which are implicit in XML.) + + The layering of network and transport protocols are maintained in + this RFC despite the optimizations that could be made if the line + were somewhat blurred (i.e. merging TCP and IP into a single, larger + element in the DTD) in order to foster future use of this protocol as + a basis for reformulating other protocols (such as ICMP.) + + Other than the encoding, the behavioral aspects of each of the + existing protocols remain unchanged. Routing, address spaces, TCP + congestion control, etc. behave as specified in the extant standards. + Adapting to new standards and experimental algorithm heuristics for + improving performance will become much easier once the move to BLOAT + has been completed. + +1.4. Requirement Levels + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in BCP 14, RFC 2119 + [RFC2119]. + +2. IPoXML + + This protocol MUST be implemented to be compliant with this RFC. + IPoXML is the root protocol REQUIRED for effective use of TCPoXML + (section 3.) and higher-level application protocols. + + The DTD for this document type can be found in section 7.1. + + The routing of IPoXML can be easily implemented on hosts with an XML + parser, as the regular structure lends itself handily to parsing and + validation of the document/datagram and then processing the + destination address, TTL, and checksum before sending it on to its + next-hop. + + The reformulation of IPv4 was chosen over IPv6 [RFC2460] due to the + wider deployment of IPv4 and the fact that implementing IPv6 as XML + would have exceeded the 1500 byte Ethernet MTU. + + + +Kennedy Informational [Page 2] + +RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 + + + All BLOAT implementations MUST use - and specify - the UTF-8 encoding + of RFC 2279 [RFC2279]. All BLOAT document/datagrams MUST be well- + formed and include the XMLDecl. + +2.1. IP Description + + A number of items have changed (for the better) from the original IP + specification. Bit-masks, where present have been converted into + human-readable values. IP addresses are listed in their dotted- + decimal notation [RFC1123]. Length and checksum values are present + as decimal integers. + + To calculate the length and checksum fields of the IP element, a + canonicalized form of the element MUST be used. The canonical form + SHALL have no whitespace (including newline characters) between + elements and only one space character between attributes. There + SHALL NOT be a space following the last attribute in an element. + + An iterative method SHOULD be used to calculate checksums, as the + length field will vary based on the size of the checksum. + + The payload element bears special attention. Due to the character + set restrictions of XML, the payload of IP datagrams (which MAY + contain arbitrary data) MUST be encoded for transport. This RFC + REQUIRES the contents of the payload to be encoded in the base-64 + encoding of RFC 2045 [RFC2045], but removes the requirement that the + encoded output MUST be wrapped on 76-character lines. + + + + + + + + + + + + + + + + + + + + + + + + +Kennedy Informational [Page 3] + +RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 + + +2.2. Example Datagram + + The following is an example IPoXML datagram with an empty payload: + + + + +
+ + + + + + + + + + + + + + + +
+ + +
+ +3. TCPoXML + + This protocol MUST be implemented to be compliant with this RFC. The + DTD for this document type can be found in section 7.2. + +3.1. TCP Description + + A number of items have changed from the original TCP specification. + Bit-masks, where present have been converted into human-readable + values. Length and checksum and port values are present as decimal + integers. + + To calculate the length and checksum fields of the TCP element, a + canonicalized form of the element MUST be used as in section 2.1. + + An iterative method SHOULD be used to calculate checksums as in + section 2.1. + + The payload element MUST be encoded as in section 2.1. + + + +Kennedy Informational [Page 4] + +RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 + + + The TCP offset element was expanded to a maximum of 255 from 16 to + allow for the increased size of the header in XML. + + TCPoXML datagrams encapsulated by IPoXML MAY omit the header + as well as the declaration. + +3.2. Example Datagram + + The following is an example TCPoXML datagram with an empty payload: + + + + + + + + + + + + + + + + + + + + + + + + +4. UDPoXML + + This protocol MUST be implemented to be compliant with this RFC. The + DTD for this document type can be found in section 7.3. + +4.1. UDP Description + + A number of items have changed from the original UDP specification. + Bit-masks, where present have been converted into human-readable + values. Length and checksum and port values are present as decimal + integers. + + + + + + + +Kennedy Informational [Page 5] + +RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 + + + To calculate the length and checksum fields of the UDP element, a + canonicalized form of the element MUST be used as in section 2.1. An + iterative method SHOULD be used to calculate checksums as in section + 2.1. + + The payload element MUST be encoded as in section 2.1. + + UDPoXML datagrams encapsulated by IPoXML MAY omit the header + as well as the declaration. + +4.2. Example Datagram + + The following is an example UDPoXML datagram with an empty payload: + + + + + + + + + + + + + + +5. Network Transport + + This document provides for the transmission of BLOAT datagrams over + two common families of physical layer transport. Future RFCs will + address additional transports as routing vendors catch up to the + specification, and we begin to see BLOAT routed across the Internet + backbone. + +5.1. Ethernet + + BLOAT is encapsulated in Ethernet datagrams as in [RFC894] with the + exception that the type field of the Ethernet frame MUST contain the + value 0xBEEF. The first 5 octets of the Ethernet frame payload will + be 0x3c 3f 78 6d 6c (" + --> + + + + +Kennedy Informational [Page 7] + +RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Kennedy Informational [Page 9] + +RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 + + + + + + + + + + + + + + + + + + + + + + + + +Kennedy Informational [Page 10] + +RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 + + + + + + + + + + + + + +7.2. TCPoXML DTD + + + + + + + + + + + + + + + + + +Kennedy Informational [Page 11] + +RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Kennedy Informational [Page 12] + +RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 + + + + + + + + + + + + + + + + + + + + +7.3. UDPoXML DTD + + + + + + + + + + + + + + + +Kennedy Informational [Page 13] + +RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 + + +8. Security Considerations + + XML, as a subset of SGML, has the same security considerations as + specified in SGML Media Types [RFC1874]. Security considerations + that apply to IP, TCP and UDP also likely apply to BLOAT as it does + not attempt to correct for issues not related to message format. + +9. References + + [JABBER] Miller, J., "Jabber", draft-miller-jabber-00.txt, + February 2002. (Work in Progress) + + [RFC768] Postel, J., "User Datagram Protocol", STD 6, RFC 768, + August 1980. + + [RFC791] Postel, J., "Internet Protocol", STD 5, RFC 791, + September 1981. + + [RFC793] Postel, J., "Transmission Control Protocol", STD 7, RFC + 793, September 1981. + + [RFC894] Hornig, C., "Standard for the Transmission of IP + Datagrams over Ethernet Networks.", RFC 894, April 1984. + + [RFC1042] Postel, J. and J. Reynolds, "Standard for the + Transmission of IP Datagrams Over IEEE 802 Networks", STD + 43, RFC 1042, February 1988. + + [RFC1123] Braden, R., "Requirements for Internet Hosts - + Application and Support", RFC 1123, October 1989. + + [RFC1874] Levinson, E., "SGML Media Types", RFC 1874, December + 1995. + + [RFC2003] Perkins, C., "IP Encapsulation within IP", RFC 2003, + October 1996. + + [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail + Extensions (MIME) Part One: Format of Internet Message + Bodies", RFC 2045, November 1996. + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC2279] Yergeau, F., "UTF-8, a transformation format of ISO + 10646", RFC 2279, January 1998. + + + + + +Kennedy Informational [Page 14] + +RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 + + + [RFC2460] Deering, S. and R. Hinden, "Internet Protocol, Version 6 + (IPv6) Specification", RFC 2460, December 1998. + + [RFC3080] Rose, M., "The Blocks Extensible Exchange Protocol Core", + RFC 3080, March 2001. + + [SOAP] Box, D., Ehnebuske, D., Kakivaya, G., Layman, A., + Mendelsohn, N., Nielsen, H. F., Thatte, S. Winer, D., + "Simple Object Access Protocol (SOAP) 1.1" World Wide Web + Consortium Note, May 2000 http://www.w3.org/TR/SOAP/ + + [XML] Bray, T., Paoli, J., Sperberg-McQueen, C. M., "Extensible + Markup Language (XML)" World Wide Web Consortium + Recommendation REC- xml-19980210. + http://www.w3.org/TR/1998/REC-xml-19980210 + +10. Author's Address + + Hugh Kennedy + Mimezine + 1060 West Addison + Chicago, IL 60613 + USA + + EMail: kennedyh@engin.umich.edu + + + + + + + + + + + + + + + + + + + + + + + + + + +Kennedy Informational [Page 15] + +RFC 3252 Binary Lexical Octet Ad-hoc Transport 1 April 2002 + + +11. Full Copyright Statement + + Copyright (C) The Internet Society (2002). All Rights Reserved. + + This document and translations of it may be copied and furnished to + others, and derivative works that comment on or otherwise explain it + or assist in its implementation may be prepared, copied, published + and distributed, in whole or in part, without restriction of any + kind, provided that the above copyright notice and this paragraph are + included on all such copies and derivative works. However, this + document itself may not be modified in any way, such as by removing + the copyright notice or references to the Internet Society or other + Internet organizations, except as needed for the purpose of + developing Internet standards in which case the procedures for + copyrights defined in the Internet Standards process must be + followed, or as required to translate it into languages other than + English. + + The limited permissions granted above are perpetual and will not be + revoked by the Internet Society or its successors or assigns. + + This document and the information contained herein is provided on an + "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING + TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION + HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF + MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + + + + + + + + + + + + + +Kennedy Informational [Page 16] + diff -Naur a/qtbase/tests/testserver/apache2/testdata/www/htdocs/qxmlquery/notWellformedViaHttps.xml b/qtbase/tests/testserver/apache2/testdata/www/htdocs/qxmlquery/notWellformedViaHttps.xml --- a/qtbase/tests/testserver/apache2/testdata/www/htdocs/qxmlquery/notWellformedViaHttps.xml 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/tests/testserver/apache2/testdata/www/htdocs/qxmlquery/notWellformedViaHttps.xml 2022-01-25 17:23:44.113496402 +0000 @@ -0,0 +1 @@ + +Some Text diff -Naur a/qtbase/tests/testserver/apache2/testdata/www/htdocs/qxmlquery/wellFormed.xml b/qtbase/tests/testserver/apache2/testdata/www/htdocs/qxmlquery/wellFormed.xml --- a/qtbase/tests/testserver/apache2/testdata/www/htdocs/qxmlquery/wellFormed.xml 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/tests/testserver/apache2/testdata/www/htdocs/qxmlquery/wellFormed.xml 2022-01-25 17:23:44.113496402 +0000 @@ -0,0 +1,2 @@ + +Some Text diff -Naur a/qtbase/tests/testserver/vsftpd/testdata/ftp/pub/qxmlquery/notWellFormed.xml b/qtbase/tests/testserver/vsftpd/testdata/ftp/pub/qxmlquery/notWellFormed.xml --- a/qtbase/tests/testserver/vsftpd/testdata/ftp/pub/qxmlquery/notWellFormed.xml 1970-01-01 01:00:00.000000000 +0100 +++ b/qtbase/tests/testserver/vsftpd/testdata/ftp/pub/qxmlquery/notWellFormed.xml 2022-01-25 17:23:44.114496398 +0000 @@ -0,0 +1 @@ + +Some Text diff -Naur a/qtdeclarative/examples/qml/doc/src/qml-extending.qdoc b/qtdeclarative/examples/qml/doc/src/qml-extending.qdoc --- a/qtdeclarative/examples/qml/doc/src/qml-extending.qdoc 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/examples/qml/doc/src/qml-extending.qdoc 2022-01-25 17:24:17.026378330 +0000 @@ -79,6 +79,10 @@ \snippet referenceexamples/extended/lineedit.h 0 +Note the usage of \l QML_NAMED_ELEMENT() instead of \l QML_ELEMENT. +QML_ELEMENT uses the name of the containing type by default, "LineEditExtension" in this case. +As the class being an extension class is an implementation detail, we choose the more natural name "LineEdit" instead + The QML engine then instantiates a \l QLineEdit: \snippet referenceexamples/extended/main.cpp 1 diff -Naur a/qtdeclarative/src/3rdparty/masm/assembler/AssemblerBuffer.h b/qtdeclarative/src/3rdparty/masm/assembler/AssemblerBuffer.h --- a/qtdeclarative/src/3rdparty/masm/assembler/AssemblerBuffer.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/3rdparty/masm/assembler/AssemblerBuffer.h 2022-01-25 17:24:17.039378283 +0000 @@ -140,9 +140,9 @@ if (!result) return 0; - ExecutableAllocator::makeWritable(result->start(), result->sizeInBytes()); + ExecutableAllocator::makeWritable(result->memoryStart(), result->memorySize()); - memcpy(result->start(), m_buffer, m_index); + memcpy(result->codeStart(), m_buffer, m_index); return result.release(); } diff -Naur a/qtdeclarative/src/3rdparty/masm/assembler/LinkBuffer.h b/qtdeclarative/src/3rdparty/masm/assembler/LinkBuffer.h --- a/qtdeclarative/src/3rdparty/masm/assembler/LinkBuffer.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/3rdparty/masm/assembler/LinkBuffer.h 2022-01-25 17:24:17.039378283 +0000 @@ -333,7 +333,7 @@ m_executableMemory = m_assembler->m_assembler.executableCopy(*m_globalData, ownerUID, effort); if (!m_executableMemory) return; - m_code = m_executableMemory->start(); + m_code = m_executableMemory->codeStart(); m_size = m_assembler->m_assembler.codeSize(); ASSERT(m_code); } @@ -355,7 +355,8 @@ template class ExecutableOffsetCalculator> inline void LinkBufferBase::makeExecutable() { - ExecutableAllocator::makeExecutable(code(), static_cast(m_size)); + ExecutableAllocator::makeExecutable(m_executableMemory->memoryStart(), + m_executableMemory->memorySize()); } template @@ -442,9 +443,9 @@ m_executableMemory = m_globalData->executableAllocator.allocate(*m_globalData, m_initialSize, ownerUID, effort); if (!m_executableMemory) return; - m_code = (uint8_t*)m_executableMemory->start(); + m_code = (uint8_t*)m_executableMemory->codeStart(); ASSERT(m_code); - ExecutableAllocator::makeWritable(m_code, m_initialSize); + ExecutableAllocator::makeWritable(m_executableMemory->memoryStart(), m_executableMemory->memorySize()); uint8_t* inData = (uint8_t*)m_assembler->unlinkedCode(); uint8_t* outData = reinterpret_cast(m_code); int readPtr = 0; diff -Naur a/qtdeclarative/src/3rdparty/masm/assembler/MacroAssemblerCodeRef.h b/qtdeclarative/src/3rdparty/masm/assembler/MacroAssemblerCodeRef.h --- a/qtdeclarative/src/3rdparty/masm/assembler/MacroAssemblerCodeRef.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/3rdparty/masm/assembler/MacroAssemblerCodeRef.h 2022-01-25 17:24:17.039378283 +0000 @@ -357,11 +357,11 @@ } MacroAssemblerCodeRef(PassRefPtr executableMemory) - : m_codePtr(executableMemory->start()) + : m_codePtr(executableMemory->codeStart()) , m_executableMemory(executableMemory) { ASSERT(m_executableMemory->isManaged()); - ASSERT(m_executableMemory->start()); + ASSERT(m_executableMemory->codeStart()); ASSERT(m_codePtr); } @@ -395,7 +395,7 @@ { if (!m_executableMemory) return 0; - return m_executableMemory->sizeInBytes(); + return m_executableMemory->codeSize(); } bool tryToDisassemble(const char* prefix) const diff -Naur a/qtdeclarative/src/3rdparty/masm/stubs/ExecutableAllocator.h b/qtdeclarative/src/3rdparty/masm/stubs/ExecutableAllocator.h --- a/qtdeclarative/src/3rdparty/masm/stubs/ExecutableAllocator.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/3rdparty/masm/stubs/ExecutableAllocator.h 2022-01-25 17:24:17.039378283 +0000 @@ -82,9 +82,14 @@ inline bool isManaged() const { return true; } - void *exceptionHandler() { return m_allocation->exceptionHandler(); } - void *start() { return m_allocation->start(); } - size_t sizeInBytes() { return m_size; } + void *memoryStart() { return m_allocation->memoryStart(); } + size_t memorySize() { return m_allocation->memorySize(); } + + void *exceptionHandlerStart() { return m_allocation->exceptionHandlerStart(); } + size_t exceptionHandlerSize() { return m_allocation->exceptionHandlerSize(); } + + void *codeStart() { return m_allocation->codeStart(); } + size_t codeSize() { return m_size; } QV4::ExecutableAllocator::ChunkOfPages *chunk() const { return m_allocator->chunkForAllocation(m_allocation); } diff -Naur a/qtdeclarative/src/3rdparty/masm/yarr/Yarr.h b/qtdeclarative/src/3rdparty/masm/yarr/Yarr.h --- a/qtdeclarative/src/3rdparty/masm/yarr/Yarr.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/3rdparty/masm/yarr/Yarr.h 2022-01-25 17:24:17.044378265 +0000 @@ -28,6 +28,7 @@ #pragma once #include +#include #include "YarrErrorCode.h" namespace JSC { namespace Yarr { diff -Naur a/qtdeclarative/src/imports/folderlistmodel/plugin.cpp b/qtdeclarative/src/imports/folderlistmodel/plugin.cpp --- a/qtdeclarative/src/imports/folderlistmodel/plugin.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/imports/folderlistmodel/plugin.cpp 2022-01-25 17:24:17.024378337 +0000 @@ -43,6 +43,7 @@ #include "qquickfolderlistmodel.h" extern void qml_register_types_Qt_labs_folderlistmodel(); +GHS_KEEP_REFERENCE(qml_register_types_Qt_labs_folderlistmodel); QT_BEGIN_NAMESPACE diff -Naur a/qtdeclarative/src/imports/labsanimation/plugin.cpp b/qtdeclarative/src/imports/labsanimation/plugin.cpp --- a/qtdeclarative/src/imports/labsanimation/plugin.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/imports/labsanimation/plugin.cpp 2022-01-25 17:24:17.024378337 +0000 @@ -43,6 +43,7 @@ #include "qquickboundaryrule_p.h" extern void qml_register_types_Qt_labs_animation(); +GHS_KEEP_REFERENCE(qml_register_types_Qt_labs_animation); QT_BEGIN_NAMESPACE diff -Naur a/qtdeclarative/src/imports/labsmodels/plugin.cpp b/qtdeclarative/src/imports/labsmodels/plugin.cpp --- a/qtdeclarative/src/imports/labsmodels/plugin.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/imports/labsmodels/plugin.cpp 2022-01-25 17:24:17.024378337 +0000 @@ -51,6 +51,7 @@ #endif extern void qml_register_types_Qt_labs_qmlmodels(); +GHS_KEEP_REFERENCE(qml_register_types_Qt_labs_qmlmodels); QT_BEGIN_NAMESPACE diff -Naur a/qtdeclarative/src/imports/layouts/plugin.cpp b/qtdeclarative/src/imports/layouts/plugin.cpp --- a/qtdeclarative/src/imports/layouts/plugin.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/imports/layouts/plugin.cpp 2022-01-25 17:24:17.025378334 +0000 @@ -43,6 +43,7 @@ #include "qquickstacklayout_p.h" extern void qml_register_types_QtQuick_Layouts(); +GHS_KEEP_REFERENCE(qml_register_types_QtQuick_Layouts); QT_BEGIN_NAMESPACE diff -Naur a/qtdeclarative/src/imports/localstorage/plugin.cpp b/qtdeclarative/src/imports/localstorage/plugin.cpp --- a/qtdeclarative/src/imports/localstorage/plugin.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/imports/localstorage/plugin.cpp 2022-01-25 17:24:17.025378334 +0000 @@ -43,6 +43,7 @@ #include extern void qml_register_types_QtQuick_LocalStorage(); +GHS_KEEP_REFERENCE(qml_register_types_QtQuick_LocalStorage); QT_BEGIN_NAMESPACE diff -Naur a/qtdeclarative/src/imports/settings/plugin.cpp b/qtdeclarative/src/imports/settings/plugin.cpp --- a/qtdeclarative/src/imports/settings/plugin.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/imports/settings/plugin.cpp 2022-01-25 17:24:17.025378334 +0000 @@ -43,6 +43,7 @@ #include "qqmlsettings_p.h" extern void qml_register_types_Qt_labs_settings(); +GHS_KEEP_REFERENCE(qml_register_types_Qt_labs_settings); QT_BEGIN_NAMESPACE diff -Naur a/qtdeclarative/src/imports/sharedimage/plugin.cpp b/qtdeclarative/src/imports/sharedimage/plugin.cpp --- a/qtdeclarative/src/imports/sharedimage/plugin.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/imports/sharedimage/plugin.cpp 2022-01-25 17:24:17.025378334 +0000 @@ -100,6 +100,7 @@ */ extern void qml_register_types_Qt_labs_sharedimage(); +GHS_KEEP_REFERENCE(qml_register_types_Qt_labs_sharedimage); QT_BEGIN_NAMESPACE diff -Naur a/qtdeclarative/src/imports/statemachine/plugin.cpp b/qtdeclarative/src/imports/statemachine/plugin.cpp --- a/qtdeclarative/src/imports/statemachine/plugin.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/imports/statemachine/plugin.cpp 2022-01-25 17:24:17.025378334 +0000 @@ -49,6 +49,7 @@ #include extern void qml_register_types_QtQml_StateMachine(); +GHS_KEEP_REFERENCE(qml_register_types_QtQml_StateMachine); QT_BEGIN_NAMESPACE diff -Naur a/qtdeclarative/src/imports/testlib/main.cpp b/qtdeclarative/src/imports/testlib/main.cpp --- a/qtdeclarative/src/imports/testlib/main.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/imports/testlib/main.cpp 2022-01-25 17:24:17.025378334 +0000 @@ -51,6 +51,7 @@ QML_DECLARE_TYPE(QuickTestUtil) extern void qml_register_types_QtTest(); +GHS_KEEP_REFERENCE(qml_register_types_QtTest); QT_BEGIN_NAMESPACE diff -Naur a/qtdeclarative/src/imports/wavefrontmesh/plugin.cpp b/qtdeclarative/src/imports/wavefrontmesh/plugin.cpp --- a/qtdeclarative/src/imports/wavefrontmesh/plugin.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/imports/wavefrontmesh/plugin.cpp 2022-01-25 17:24:17.025378334 +0000 @@ -43,6 +43,7 @@ #include "qwavefrontmesh.h" extern void qml_register_types_Qt_labs_wavefrontmesh(); +GHS_KEEP_REFERENCE(qml_register_types_Qt_labs_wavefrontmesh); QT_BEGIN_NAMESPACE diff -Naur a/qtdeclarative/src/imports/window/plugin.cpp b/qtdeclarative/src/imports/window/plugin.cpp --- a/qtdeclarative/src/imports/window/plugin.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/imports/window/plugin.cpp 2022-01-25 17:24:17.025378334 +0000 @@ -42,6 +42,7 @@ #include "plugin.h" extern void qml_register_types_QtQuick_Window(); +GHS_KEEP_REFERENCE(qml_register_types_QtQuick_Window); QT_BEGIN_NAMESPACE diff -Naur a/qtdeclarative/src/particles/qtquickparticlesglobal_p.h b/qtdeclarative/src/particles/qtquickparticlesglobal_p.h --- a/qtdeclarative/src/particles/qtquickparticlesglobal_p.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/particles/qtquickparticlesglobal_p.h 2022-01-25 17:24:17.025378334 +0000 @@ -66,5 +66,6 @@ #endif void Q_QUICKPARTICLES_PRIVATE_EXPORT qml_register_types_QtQuick_Particles(); +GHS_KEEP_REFERENCE(qml_register_types_QtQuick_Particles); #endif // QTQUICKPARTICLESGLOBAL_P_H diff -Naur a/qtdeclarative/src/qml/common/qqmljsfixedpoolarray_p.h b/qtdeclarative/src/qml/common/qqmljsfixedpoolarray_p.h --- a/qtdeclarative/src/qml/common/qqmljsfixedpoolarray_p.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qml/common/qqmljsfixedpoolarray_p.h 2022-01-25 17:24:17.050378244 +0000 @@ -86,7 +86,7 @@ if (QTypeInfo::isComplex) { for (int i = 0; i < count; ++i) new (data + i) T(vector.at(i)); - } else { + } else if (count) { memcpy(data, static_cast(vector.constData()), count * sizeof(T)); } } diff -Naur a/qtdeclarative/src/qml/doc/src/cppintegration/definetypes.qdoc b/qtdeclarative/src/qml/doc/src/cppintegration/definetypes.qdoc --- a/qtdeclarative/src/qml/doc/src/cppintegration/definetypes.qdoc 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qml/doc/src/cppintegration/definetypes.qdoc 2022-01-25 17:24:17.026378330 +0000 @@ -117,6 +117,14 @@ QML_IMPORT_MAJOR_VERSION = 1 \endcode +If the header the class is declared in is not accessible from your project's +include path, you may have to amend the include path so that the generated +registration code can be compiled: + +\code +INCLUDEPATH += com/mycompany/messaging +\endcode + The type can be used in an \l{qtqml-syntax-basics.html#object-declarations} {object declaration} from QML, and its properties can be read and written to, as per the example below: diff -Naur a/qtdeclarative/src/qml/doc/src/qmlfunctions.qdoc b/qtdeclarative/src/qml/doc/src/qmlfunctions.qdoc --- a/qtdeclarative/src/qml/doc/src/qmlfunctions.qdoc 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qml/doc/src/qmlfunctions.qdoc 2022-01-25 17:24:17.026378330 +0000 @@ -250,6 +250,10 @@ This is useful for registering types that cannot be amended to add the macros, for example because they belong to 3rdparty libraries. + \b{NOTE:} You may want to use \l QML_NAMED_ELEMENT() instead of \l QML_ELEMENT due to the fact that + the element will be named like the struct it is contained in, not the foreign type. + See \l {Extending QML - Extension Objects Example} for an example. + \sa QML_ELEMENT, QML_NAMED_ELEMENT() */ diff -Naur a/qtdeclarative/src/qml/jsruntime/qv4executableallocator.cpp b/qtdeclarative/src/qml/jsruntime/qv4executableallocator.cpp --- a/qtdeclarative/src/qml/jsruntime/qv4executableallocator.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qml/jsruntime/qv4executableallocator.cpp 2022-01-25 17:24:17.040378280 +0000 @@ -45,12 +45,22 @@ using namespace QV4; -void *ExecutableAllocator::Allocation::exceptionHandler() const +void *ExecutableAllocator::Allocation::exceptionHandlerStart() const { return reinterpret_cast(addr); } -void *ExecutableAllocator::Allocation::start() const +size_t ExecutableAllocator::Allocation::exceptionHandlerSize() const +{ + return QV4::exceptionHandlerSize(); +} + +void *ExecutableAllocator::Allocation::memoryStart() const +{ + return reinterpret_cast(addr); +} + +void *ExecutableAllocator::Allocation::codeStart() const { return reinterpret_cast(addr + exceptionHandlerSize()); } diff -Naur a/qtdeclarative/src/qml/jsruntime/qv4executableallocator_p.h b/qtdeclarative/src/qml/jsruntime/qv4executableallocator_p.h --- a/qtdeclarative/src/qml/jsruntime/qv4executableallocator_p.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qml/jsruntime/qv4executableallocator_p.h 2022-01-25 17:24:17.040378280 +0000 @@ -86,8 +86,14 @@ , free(true) {} - void *exceptionHandler() const; - void *start() const; + void *memoryStart() const; + size_t memorySize() const { return size; } + + void *exceptionHandlerStart() const; + size_t exceptionHandlerSize() const; + + void *codeStart() const; + void invalidate() { addr = 0; } bool isValid() const { return addr != 0; } void deallocate(ExecutableAllocator *allocator); diff -Naur a/qtdeclarative/src/qml/jsruntime/qv4functiontable_win64.cpp b/qtdeclarative/src/qml/jsruntime/qv4functiontable_win64.cpp --- a/qtdeclarative/src/qml/jsruntime/qv4functiontable_win64.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qml/jsruntime/qv4functiontable_win64.cpp 2022-01-25 17:24:17.040378280 +0000 @@ -106,7 +106,7 @@ void generateFunctionTable(Function *, JSC::MacroAssemblerCodeRef *codeRef) { ExceptionHandlerRecord *record = reinterpret_cast( - codeRef->executableMemory()->exceptionHandler()); + codeRef->executableMemory()->exceptionHandlerStart()); record->info.Version = 1; record->info.Flags = 0; @@ -136,7 +136,7 @@ void destroyFunctionTable(Function *, JSC::MacroAssemblerCodeRef *codeRef) { ExceptionHandlerRecord *record = reinterpret_cast( - codeRef->executableMemory()->exceptionHandler()); + codeRef->executableMemory()->exceptionHandlerStart()); if (!RtlDeleteFunctionTable(&record->handler)) { const unsigned int errorCode = GetLastError(); qWarning() << "Failed to remove win64 unwind hook. Error code:" << errorCode; diff -Naur a/qtdeclarative/src/qml/jsruntime/qv4proxy.cpp b/qtdeclarative/src/qml/jsruntime/qv4proxy.cpp --- a/qtdeclarative/src/qml/jsruntime/qv4proxy.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qml/jsruntime/qv4proxy.cpp 2022-01-25 17:24:17.037378291 +0000 @@ -265,9 +265,9 @@ ScopedProperty targetDesc(scope); PropertyAttributes targetAttributes = target->getOwnProperty(id, targetDesc); if (trapResult->isUndefined()) { - p->value = Encode::undefined(); - if (targetAttributes == Attr_Invalid) { + if (p) p->value = Encode::undefined(); + if (targetAttributes == Attr_Invalid) { return Attr_Invalid; } if (!targetAttributes.isConfigurable() || !target->isExtensible()) { @@ -295,8 +295,10 @@ } } - p->value = resultDesc->value; - p->set = resultDesc->set; + if (p) { + p->value = resultDesc->value; + p->set = resultDesc->set; + } return resultAttributes; } @@ -622,8 +624,10 @@ else targetNonConfigurableKeys->push_back(keyAsValue); } - if (target->isExtensible() && targetNonConfigurableKeys->getLength() == 0) + if (target->isExtensible() && targetNonConfigurableKeys->getLength() == 0) { + *iteratorTarget = *m; return new ProxyObjectOwnPropertyKeyIterator(trapKeys); + } ScopedArrayObject uncheckedResultKeys(scope, scope.engine->newArrayObject()); uncheckedResultKeys->copyArrayData(trapKeys); @@ -637,8 +641,10 @@ } } - if (target->isExtensible()) + if (target->isExtensible()) { + *iteratorTarget = *m; return new ProxyObjectOwnPropertyKeyIterator(trapKeys); + } len = targetConfigurableKeys->getLength(); for (uint i = 0; i < len; ++i) { diff -Naur a/qtdeclarative/src/qml/jsruntime/qv4qmlcontext.cpp b/qtdeclarative/src/qml/jsruntime/qv4qmlcontext.cpp --- a/qtdeclarative/src/qml/jsruntime/qv4qmlcontext.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qml/jsruntime/qv4qmlcontext.cpp 2022-01-25 17:24:17.029378319 +0000 @@ -466,9 +466,9 @@ return static_cast(ctx)->locals[index].asReturnedValue(); } - // Skip only block contexts within the current call context. + // Skip only block and call contexts. // Other contexts need a regular QML property lookup. See below. - if (ctx->type != Heap::ExecutionContext::Type_BlockContext) + if (ctx->type != Heap::ExecutionContext::Type_BlockContext && ctx->type != Heap::ExecutionContext::Type_CallContext) break; } diff -Naur a/qtdeclarative/src/qml/memory/qv4mm.cpp b/qtdeclarative/src/qml/memory/qv4mm.cpp --- a/qtdeclarative/src/qml/memory/qv4mm.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qml/memory/qv4mm.cpp 2022-01-25 17:24:17.045378262 +0000 @@ -981,7 +981,7 @@ if (MultiplyWrappedQObjectMap *multiplyWrappedQObjects = engine->m_multiplyWrappedQObjects) { for (MultiplyWrappedQObjectMap::Iterator it = multiplyWrappedQObjects->begin(); it != multiplyWrappedQObjects->end();) { - if (!it.value().isNullOrUndefined()) + if (it.value().isNullOrUndefined()) it = multiplyWrappedQObjects->erase(it); else ++it; diff -Naur a/qtdeclarative/src/qml/qml/qqmlextensionplugin.h b/qtdeclarative/src/qml/qml/qqmlextensionplugin.h --- a/qtdeclarative/src/qml/qml/qqmlextensionplugin.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qml/qml/qqmlextensionplugin.h 2022-01-25 17:24:17.025378334 +0000 @@ -44,6 +44,13 @@ #include #include +#if defined(Q_CC_GHS) +# define GHS_PRAGMA(S) _Pragma(#S) +# define GHS_KEEP_REFERENCE(S) GHS_PRAGMA(ghs reference S ##__Fv) +#else +# define GHS_KEEP_REFERENCE(S) +#endif + QT_BEGIN_NAMESPACE class QQmlEngine; diff -Naur a/qtdeclarative/src/qml/qml/qqmlpropertycachecreator.cpp b/qtdeclarative/src/qml/qml/qqmlpropertycachecreator.cpp --- a/qtdeclarative/src/qml/qml/qqmlpropertycachecreator.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qml/qml/qqmlpropertycachecreator.cpp 2022-01-25 17:24:17.038378287 +0000 @@ -90,6 +90,15 @@ QByteArray::number(classIndexCounter.fetchAndAddRelaxed(1)); } +QByteArray QQmlPropertyCacheCreatorBase::createClassNameForInlineComponent(const QUrl &baseUrl, int icId) +{ + QByteArray baseName = createClassNameTypeByUrl(baseUrl); + if (baseName.isEmpty()) + baseName = QByteArray("ANON_QML_IC_") + QByteArray::number(classIndexCounter.fetchAndAddRelaxed(1)); + baseName += "_" + QByteArray::number(icId); + return baseName; +} + QQmlBindingInstantiationContext::QQmlBindingInstantiationContext(int referencingObjectIndex, const QV4::CompiledData::Binding *instantiatingBinding, const QString &instantiatingPropertyName, QQmlPropertyCache *referencingObjectPropertyCache) : referencingObjectIndex(referencingObjectIndex) diff -Naur a/qtdeclarative/src/qml/qml/qqmlpropertycachecreator_p.h b/qtdeclarative/src/qml/qml/qqmlpropertycachecreator_p.h --- a/qtdeclarative/src/qml/qml/qqmlpropertycachecreator_p.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qml/qml/qqmlpropertycachecreator_p.h 2022-01-25 17:24:17.038378287 +0000 @@ -104,6 +104,8 @@ static int metaTypeForPropertyType(QV4::CompiledData::BuiltinType type); static QByteArray createClassNameTypeByUrl(const QUrl &url); + + static QByteArray createClassNameForInlineComponent(const QUrl &baseUrl, int icId); }; template diff -Naur a/qtdeclarative/src/qml/qml/qqmlpropertyvalidator.cpp b/qtdeclarative/src/qml/qml/qqmlpropertyvalidator.cpp --- a/qtdeclarative/src/qml/qml/qqmlpropertyvalidator.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qml/qml/qqmlpropertyvalidator.cpp 2022-01-25 17:24:17.038378287 +0000 @@ -651,6 +651,19 @@ { QQmlPropertyCache *toMo = enginePrivate->rawPropertyCacheForType(to); + if (toMo == nullptr) { + // if we have an inline component from the current file, + // it is not properly registered at this point, as registration + // only occurs after the whole file has been validated + // Therefore we need to check the ICs here + for (const auto& icDatum : compilationUnit->inlineComponentData) { + if (icDatum.typeIds.id == to) { + toMo = compilationUnit->propertyCaches.at(icDatum.objectIndex); + break; + } + } + } + while (fromMo) { if (fromMo == toMo) return true; @@ -746,6 +759,18 @@ // effect the properties on the type, but don't effect assignability // Using -1 for the minor version ensures that we get the raw metaObject. QQmlPropertyCache *propertyMetaObject = enginePrivate->rawPropertyCacheForType(propType, -1); + if (!propertyMetaObject) { + // if we have an inline component from the current file, + // it is not properly registered at this point, as registration + // only occurs after the whole file has been validated + // Therefore we need to check the ICs here + for (const auto& icDatum: compilationUnit->inlineComponentData) { + if (icDatum.typeIds.id == property->propType()) { + propertyMetaObject = compilationUnit->propertyCaches.at(icDatum.objectIndex); + break; + } + } + } if (propertyMetaObject) { // Will be true if the assigned type inherits propertyMetaObject diff -Naur a/qtdeclarative/src/qml/qml/qqmltypedata.cpp b/qtdeclarative/src/qml/qml/qqmltypedata.cpp --- a/qtdeclarative/src/qml/qml/qqmltypedata.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qml/qml/qqmltypedata.cpp 2022-01-25 17:24:17.039378283 +0000 @@ -283,9 +283,7 @@ for (int i = 0; i != container->objectCount(); ++i) { auto root = container->objectAt(i); for (auto it = root->inlineComponentsBegin(); it != root->inlineComponentsEnd(); ++it) { - auto url = finalUrl; - url.setFragment(QString::number(it->objectIndex)); - const QByteArray &className = QQmlPropertyCacheCreatorBase::createClassNameTypeByUrl(url); + const QByteArray &className = QQmlPropertyCacheCreatorBase::createClassNameForInlineComponent(finalUrl, it->objectIndex); InlineComponentData icDatum(QQmlMetaType::registerInternalCompositeType(className), int(it->objectIndex), int(it->nameIndex), 0, 0, 0); icData->insert(it->objectIndex, icDatum); } diff -Naur a/qtdeclarative/src/qml/qtqmlglobal_p.h b/qtdeclarative/src/qml/qtqmlglobal_p.h --- a/qtdeclarative/src/qml/qtqmlglobal_p.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qml/qtqmlglobal_p.h 2022-01-25 17:24:17.025378334 +0000 @@ -53,6 +53,7 @@ #include #include +#include #ifndef QT_QML_BOOTSTRAPPED # include #endif @@ -61,6 +62,7 @@ #define Q_QML_PRIVATE_EXPORT Q_QML_EXPORT void Q_QML_PRIVATE_EXPORT qml_register_types_QtQml(); +GHS_KEEP_REFERENCE(qml_register_types_QtQml); #if !defined(QT_QMLDEVTOOLS_LIB) && !defined(QT_BUILD_QMLDEVTOOLS_LIB) # define Q_QML_AUTOTEST_EXPORT Q_AUTOTEST_EXPORT diff -Naur a/qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h b/qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h --- a/qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qmldebug/qqmlprofilerevent_p.h 2022-01-25 17:24:17.040378280 +0000 @@ -48,6 +48,7 @@ #include #include +#include #include // diff -Naur a/qtdeclarative/src/qmlmodels/qqmldelegatemodel.cpp b/qtdeclarative/src/qmlmodels/qqmldelegatemodel.cpp --- a/qtdeclarative/src/qmlmodels/qqmldelegatemodel.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qmlmodels/qqmldelegatemodel.cpp 2022-01-25 17:24:17.050378244 +0000 @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2020 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtQml module of the Qt Toolkit. @@ -389,6 +389,12 @@ q, QQmlDelegateModel, SLOT(_q_rowsRemoved(QModelIndex,int,int))); qmlobject_connect(aim, QAbstractItemModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)), q, QQmlDelegateModel, SLOT(_q_rowsAboutToBeRemoved(QModelIndex,int,int))); + qmlobject_connect(aim, QAbstractItemModel, SIGNAL(columnsInserted(QModelIndex,int,int)), + q, QQmlDelegateModel, SLOT(_q_columnsInserted(QModelIndex,int,int))); + qmlobject_connect(aim, QAbstractItemModel, SIGNAL(columnsRemoved(QModelIndex,int,int)), + q, QQmlDelegateModel, SLOT(_q_columnsRemoved(QModelIndex,int,int))); + qmlobject_connect(aim, QAbstractItemModel, SIGNAL(columnsMoved(QModelIndex,int,int,QModelIndex,int)), + q, QQmlDelegateModel, SLOT(_q_columnsMoved(QModelIndex,int,int,QModelIndex,int))); qmlobject_connect(aim, QAbstractItemModel, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector)), q, QQmlDelegateModel, SLOT(_q_dataChanged(QModelIndex,QModelIndex,QVector))); qmlobject_connect(aim, QAbstractItemModel, SIGNAL(rowsMoved(QModelIndex,int,int,QModelIndex,int)), @@ -413,6 +419,12 @@ q, SLOT(_q_rowsAboutToBeRemoved(QModelIndex,int,int))); QObject::disconnect(aim, SIGNAL(rowsRemoved(QModelIndex,int,int)), q, SLOT(_q_rowsRemoved(QModelIndex,int,int))); + QObject::disconnect(aim, SIGNAL(columnsInserted(QModelIndex,int,int)), q, + SLOT(_q_columnsInserted(QModelIndex,int,int))); + QObject::disconnect(aim, SIGNAL(columnsRemoved(QModelIndex,int,int)), q, + SLOT(_q_columnsRemoved(QModelIndex,int,int))); + QObject::disconnect(aim, SIGNAL(columnsMoved(QModelIndex,int,int,QModelIndex,int)), q, + SLOT(_q_columnsMoved(QModelIndex,int,int,QModelIndex,int))); QObject::disconnect(aim, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector)), q, SLOT(_q_dataChanged(QModelIndex,QModelIndex,QVector))); QObject::disconnect(aim, SIGNAL(rowsMoved(QModelIndex,int,int,QModelIndex,int)), @@ -1609,7 +1621,7 @@ removed[i] = 0; for (const Compositor::Remove &remove : removes) { - for (; cacheIndex < remove.cacheIndex; ++cacheIndex) + for (; cacheIndex < remove.cacheIndex && cacheIndex < m_cache.size(); ++cacheIndex) incrementIndexes(m_cache.at(cacheIndex), m_groupCount, removed); for (int i = 1; i < m_groupCount; ++i) { @@ -1875,6 +1887,9 @@ d->m_count = d->adaptorModelCount(); const QList cache = d->m_cache; + for (QQmlDelegateModelItem *item : cache) + item->referenceObject(); + for (int i = 0, c = cache.count(); i < c; ++i) { QQmlDelegateModelItem *item = cache.at(i); // layout change triggered by changing the modelIndex might have @@ -1886,6 +1901,8 @@ item->setModelIndex(-1, -1, -1); } + for (QQmlDelegateModelItem *item : cache) + item->releaseObject(); QVector removes; QVector inserts; if (oldCount) @@ -1953,6 +1970,38 @@ } } +void QQmlDelegateModel::_q_columnsInserted(const QModelIndex &parent, int begin, int end) +{ + Q_D(QQmlDelegateModel); + Q_UNUSED(end); + if (parent == d->m_adaptorModel.rootIndex && begin == 0) { + // mark all items as changed + _q_itemsChanged(0, d->m_count, QVector()); + } +} + +void QQmlDelegateModel::_q_columnsRemoved(const QModelIndex &parent, int begin, int end) +{ + Q_D(QQmlDelegateModel); + Q_UNUSED(end); + if (parent == d->m_adaptorModel.rootIndex && begin == 0) { + // mark all items as changed + _q_itemsChanged(0, d->m_count, QVector()); + } +} + +void QQmlDelegateModel::_q_columnsMoved(const QModelIndex &parent, int start, int end, + const QModelIndex &destination, int column) +{ + Q_D(QQmlDelegateModel); + Q_UNUSED(end); + if ((parent == d->m_adaptorModel.rootIndex && start == 0) + || (destination == d->m_adaptorModel.rootIndex && column == 0)) { + // mark all items as changed + _q_itemsChanged(0, d->m_count, QVector()); + } +} + void QQmlDelegateModel::_q_dataChanged(const QModelIndex &begin, const QModelIndex &end, const QVector &roles) { Q_D(QQmlDelegateModel); @@ -2379,6 +2428,15 @@ data->ownContext = nullptr; data->context = nullptr; } + /* QTBUG-87228: when destroying object at the application exit, the deferred + * parent by setting it to QCoreApplication instance if it's nullptr, so + * deletion won't work. Not to leak memory, make sure our object has a that + * the parent claims the object at the end of the lifetime. When not at the + * application exit, normal event loop will handle the deferred deletion + * earlier. + */ + if (object->parent() == nullptr) + object->setParent(QCoreApplication::instance()); object->deleteLater(); if (attached) { diff -Naur a/qtdeclarative/src/qmlmodels/qqmldelegatemodel_p.h b/qtdeclarative/src/qmlmodels/qqmldelegatemodel_p.h --- a/qtdeclarative/src/qmlmodels/qqmldelegatemodel_p.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qmlmodels/qqmldelegatemodel_p.h 2022-01-25 17:24:17.044378265 +0000 @@ -152,6 +152,9 @@ void _q_itemsMoved(int from, int to, int count); void _q_modelReset(); void _q_rowsInserted(const QModelIndex &,int,int); + void _q_columnsInserted(const QModelIndex &, int, int); + void _q_columnsRemoved(const QModelIndex &, int, int); + void _q_columnsMoved(const QModelIndex &, int, int, const QModelIndex &, int); void _q_rowsAboutToBeRemoved(const QModelIndex &parent, int begin, int end); void _q_rowsRemoved(const QModelIndex &,int,int); void _q_rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int); diff -Naur a/qtdeclarative/src/qmlmodels/qqmllistmodel.cpp b/qtdeclarative/src/qmlmodels/qqmllistmodel.cpp --- a/qtdeclarative/src/qmlmodels/qqmllistmodel.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qmlmodels/qqmllistmodel.cpp 2022-01-25 17:24:17.029378319 +0000 @@ -703,7 +703,7 @@ } else if (propertyValue->isNullOrUndefined()) { if (reason == SetElement::WasJustInserted) { QQmlError err; - auto memberName = propertyName->toString(m_modelCache->engine())->toQString(); + auto memberName = propertyName->toString(v4)->toQString(); err.setDescription(QString::fromLatin1("%1 is %2. Adding an object with a %2 member does not create a role for it.").arg(memberName, propertyValue->isNull() ? QLatin1String("null") : QLatin1String("undefined"))); qmlWarning(nullptr, err); } else { diff -Naur a/qtdeclarative/src/qmlmodels/qtqmlmodelsglobal_p.h b/qtdeclarative/src/qmlmodels/qtqmlmodelsglobal_p.h --- a/qtdeclarative/src/qmlmodels/qtqmlmodelsglobal_p.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qmlmodels/qtqmlmodelsglobal_p.h 2022-01-25 17:24:17.025378334 +0000 @@ -59,5 +59,6 @@ #define Q_QMLMODELS_AUTOTEST_EXPORT Q_AUTOTEST_EXPORT void Q_QMLMODELS_PRIVATE_EXPORT qml_register_types_QtQml_Models(); +GHS_KEEP_REFERENCE(qml_register_types_QtQml_Models); #endif // QTQMLMODELSGLOBAL_P_H diff -Naur a/qtdeclarative/src/qmltyperegistrar/qmltypes.prf b/qtdeclarative/src/qmltyperegistrar/qmltypes.prf --- a/qtdeclarative/src/qmltyperegistrar/qmltypes.prf 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qmltyperegistrar/qmltypes.prf 2022-01-25 17:24:17.029378319 +0000 @@ -44,7 +44,8 @@ qt_module_deps = $$unique(qt_module_deps) for(dep, qt_module_deps) { - METATYPES_FILENAME = $$lower($$eval(QT.$${dep}.module))_metatypes.json + android:ABI = _$${ANDROID_TARGET_ARCH} + METATYPES_FILENAME = $$lower($$eval(QT.$${dep}.module))$${ABI}_metatypes.json INSTALLED_METATYPES = $$[QT_INSTALL_LIBS]/metatypes/$$METATYPES_FILENAME isEmpty(MODULE_BASE_OUTDIR) { QML_FOREIGN_METATYPES += $$INSTALLED_METATYPES diff -Naur a/qtdeclarative/src/qmlworkerscript/qtqmlworkerscriptglobal_p.h b/qtdeclarative/src/qmlworkerscript/qtqmlworkerscriptglobal_p.h --- a/qtdeclarative/src/qmlworkerscript/qtqmlworkerscriptglobal_p.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/qmlworkerscript/qtqmlworkerscriptglobal_p.h 2022-01-25 17:24:17.025378334 +0000 @@ -58,5 +58,6 @@ #define Q_QMLWORKERSCRIPT_AUTOTEST_EXPORT Q_AUTOTEST_EXPORT void Q_QMLWORKERSCRIPT_PRIVATE_EXPORT qml_register_types_QtQml_WorkerScript(); +GHS_KEEP_REFERENCE(qml_register_types_QtQml_WorkerScript); #endif // QTQMLWORKERSCRIPTGLOBAL_P_H diff -Naur a/qtdeclarative/src/quick/designer/qquickdesignersupportproperties.cpp b/qtdeclarative/src/quick/designer/qquickdesignersupportproperties.cpp --- a/qtdeclarative/src/quick/designer/qquickdesignersupportproperties.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/quick/designer/qquickdesignersupportproperties.cpp 2022-01-25 17:24:17.030378316 +0000 @@ -137,11 +137,8 @@ if (inspectedObjects == nullptr) inspectedObjects = &localObjectList; - - if (inspectedObjects->contains(object)) - return propertyNameList; - - inspectedObjects->append(object); + if (!inspectedObjects->contains(object)) + inspectedObjects->append(object); const QMetaObject *metaObject = object->metaObject(); for (int index = 0; index < metaObject->propertyCount(); ++index) { @@ -194,12 +191,8 @@ if (inspectedObjects == nullptr) inspectedObjects = &localObjectList; - - if (inspectedObjects->contains(object)) - return propertyNameList; - - inspectedObjects->append(object); - + if (!inspectedObjects->contains(object)) + inspectedObjects->append(object); const QMetaObject *metaObject = object->metaObject(); diff -Naur a/qtdeclarative/src/quick/doc/snippets/qquickview-ex.cpp b/qtdeclarative/src/quick/doc/snippets/qquickview-ex.cpp --- a/qtdeclarative/src/quick/doc/snippets/qquickview-ex.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/quick/doc/snippets/qquickview-ex.cpp 2022-01-25 17:24:17.024378337 +0000 @@ -59,3 +59,12 @@ return app.exec(); } //![0] + +void makeDocTeamHappyByKeepingExampleCompilable() { +//![1] + QScopedPointer view { new QQuickView }; + view->setInitialProperties({"x, 100"}, {"width", 50}); + view->setSource(QUrl::fromLocalFile("myqmlfile.qml")); + view->show(); +//![1] +} diff -Naur a/qtdeclarative/src/quick/items/qquickitemanimation.cpp b/qtdeclarative/src/quick/items/qquickitemanimation.cpp --- a/qtdeclarative/src/quick/items/qquickitemanimation.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/quick/items/qquickitemanimation.cpp 2022-01-25 17:24:17.046378258 +0000 @@ -230,8 +230,8 @@ { Q_D(QQuickParentAnimation); - QQuickParentAnimationData *data = new QQuickParentAnimationData; - QQuickParentAnimationData *viaData = new QQuickParentAnimationData; + std::unique_ptr data(new QQuickParentAnimationData); + std::unique_ptr viaData(new QQuickParentAnimationData); bool hasExplicit = false; if (d->target && d->newParent) { @@ -377,8 +377,8 @@ QParallelAnimationGroupJob *ag = new QParallelAnimationGroupJob; if (d->via) - viaAction->setAnimAction(viaData); - targetAction->setAnimAction(data); + viaAction->setAnimAction(viaData.release()); + targetAction->setAnimAction(data.release()); //take care of any child animations bool valid = d->defaultProperty.isValid(); @@ -405,9 +405,6 @@ topLevelGroup->appendAnimation(d->via ? viaAction : targetAction); } return initInstance(topLevelGroup); - } else { - delete data; - delete viaData; } return nullptr; } diff -Naur a/qtdeclarative/src/quick/items/qquickitem.cpp b/qtdeclarative/src/quick/items/qquickitem.cpp --- a/qtdeclarative/src/quick/items/qquickitem.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/quick/items/qquickitem.cpp 2022-01-25 17:24:17.040378280 +0000 @@ -1,9 +1,9 @@ /**************************************************************************** ** -** Copyright (C) 2016 The Qt Company Ltd. +** Copyright (C) 2021 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** -** This file is part of the QtQuick module of the Qt Toolkit. +** This file is part of the QtQuick module of the Qt Toolkit.fset ** ** $QT_BEGIN_LICENSE:LGPL$ ** Commercial License Usage @@ -1883,7 +1883,23 @@ \endqml - \section2 Key Handling + \section2 Event Handling + + All Item-based visual types can use \l {Qt Quick Input Handlers}{Input Handlers} + to handle incoming input events (subclasses of QInputEvent), such as mouse, + touch and key events. This is the preferred declarative way to handle events. + + An alternative way to handle touch events is to subclass QQuickItem, call + setAcceptTouchEvents() in the constructor, and override touchEvent(). + \l {QEvent::setAccepted()}{Accept} the entire event to stop delivery to + items underneath, and to exclusively grab all the event's touch points. + + Likewise, a QQuickItem subclass can call setAcceptedMouseButtons() + to register to receive mouse button events, setAcceptHoverEvents() + to receive hover events (mouse movements while no button is pressed), + and override the virtual functions mousePressEvent(), mouseMoveEvent(), and + mouseReleaseEvent(). Those can also accept the event to prevent further + delivery and get an implicit grab at the same time. Key handling is available to all Item-based visual types via the \l Keys attached property. The \e Keys attached property provides basic signals @@ -3753,6 +3769,14 @@ emit widthChanged(); if (change.heightChange()) emit heightChanged(); +#if QT_CONFIG(accessibility) + if (QAccessible::isActive()) { + if (QObject *acc = QQuickAccessibleAttached::findAccessible(this)) { + QAccessibleEvent ev(acc, QAccessible::LocationChanged); + QAccessible::updateAccessibility(&ev); + } + } +#endif } /*! @@ -7293,7 +7317,9 @@ If an item does not accept the mouse button for a particular mouse event, the mouse event will not be delivered to the item and will be delivered to the next item in the item hierarchy instead. - */ + + \sa acceptTouchEvents() +*/ Qt::MouseButtons QQuickItem::acceptedMouseButtons() const { Q_D(const QQuickItem); @@ -7302,7 +7328,13 @@ /*! Sets the mouse buttons accepted by this item to \a buttons. - */ + + \note In Qt 5, calling setAcceptedMouseButtons() implicitly caused + an item to receive touch events as well as mouse events; but it was + recommended to call setAcceptTouchEvents() to subscribe for them. + In Qt 6, it is necessary to call setAcceptTouchEvents() to continue + to receive them. +*/ void QQuickItem::setAcceptedMouseButtons(Qt::MouseButtons buttons) { Q_D(QQuickItem); diff -Naur a/qtdeclarative/src/quick/items/qquickloader.cpp b/qtdeclarative/src/quick/items/qquickloader.cpp --- a/qtdeclarative/src/quick/items/qquickloader.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/quick/items/qquickloader.cpp 2022-01-25 17:24:17.044378265 +0000 @@ -738,6 +738,9 @@ return; } + if (!active) + return; + QQmlContext *creationContext = component->creationContext(); if (!creationContext) creationContext = qmlContext(q); itemContext = new QQmlContext(creationContext); diff -Naur a/qtdeclarative/src/quick/items/qquickmousearea_p_p.h b/qtdeclarative/src/quick/items/qquickmousearea_p_p.h --- a/qtdeclarative/src/quick/items/qquickmousearea_p_p.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/quick/items/qquickmousearea_p_p.h 2022-01-25 17:24:17.043378269 +0000 @@ -61,7 +61,6 @@ class QQuickMouseEvent; class QQuickMouseArea; -class QQuickPointerMask; class QQuickMouseAreaPrivate : public QQuickItemPrivate { Q_DECLARE_PUBLIC(QQuickMouseArea) @@ -100,7 +99,6 @@ #if QT_CONFIG(quick_draganddrop) QQuickDrag *drag; #endif - QPointer mask; QPointF startScene; QPointF targetStartPos; QPointF lastPos; diff -Naur a/qtdeclarative/src/quick/items/qquickshadereffectsource.cpp b/qtdeclarative/src/quick/items/qquickshadereffectsource.cpp --- a/qtdeclarative/src/quick/items/qquickshadereffectsource.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/quick/items/qquickshadereffectsource.cpp 2022-01-25 17:24:17.046378258 +0000 @@ -344,7 +344,6 @@ d->refFromEffectItem(m_hideSource); d->addItemChangeListener(this, QQuickItemPrivate::Geometry); connect(m_sourceItem, SIGNAL(destroyed(QObject*)), this, SLOT(sourceItemDestroyed(QObject*))); - connect(m_sourceItem, SIGNAL(parentChanged(QQuickItem*)), this, SLOT(sourceItemParentChanged(QQuickItem*))); } else { qWarning("ShaderEffectSource: sourceItem and ShaderEffectSource must both be children of the same window."); m_sourceItem = nullptr; @@ -364,13 +363,6 @@ } -void QQuickShaderEffectSource::sourceItemParentChanged(QQuickItem *parent) -{ - if (!parent && m_texture) - m_texture->setItem(0); -} - - /*! \qmlproperty rect QtQuick::ShaderEffectSource::sourceRect diff -Naur a/qtdeclarative/src/quick/items/qquickshadereffectsource_p.h b/qtdeclarative/src/quick/items/qquickshadereffectsource_p.h --- a/qtdeclarative/src/quick/items/qquickshadereffectsource_p.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/quick/items/qquickshadereffectsource_p.h 2022-01-25 17:24:17.046378258 +0000 @@ -173,7 +173,6 @@ private Q_SLOTS: void sourceItemDestroyed(QObject *item); void invalidateSceneGraph(); - void sourceItemParentChanged(QQuickItem *parent); protected: void releaseResources() override; diff -Naur a/qtdeclarative/src/quick/items/qquicktableview.cpp b/qtdeclarative/src/quick/items/qquicktableview.cpp --- a/qtdeclarative/src/quick/items/qquicktableview.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/quick/items/qquicktableview.cpp 2022-01-25 17:24:17.030378316 +0000 @@ -1760,11 +1760,8 @@ const auto syncView_d = syncView->d_func(); if (syncView_d->loadedItems.isEmpty()) { - // The sync view contains no loaded items. This probably means - // that it has not been rebuilt yet. Which also means that - // we cannot rebuild anything before this happens. - topLeftCell.rx() = kEdgeIndexNotSet; - topLeftCell.ry() = kEdgeIndexNotSet; + topLeftCell.rx() = 0; + topLeftCell.ry() = 0; return; } diff -Naur a/qtdeclarative/src/quick/items/qquicktext.cpp b/qtdeclarative/src/quick/items/qquicktext.cpp --- a/qtdeclarative/src/quick/items/qquicktext.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtdeclarative/src/quick/items/qquicktext.cpp 2022-01-25 17:24:17.042378273 +0000 @@ -398,6 +398,8 @@ layedOutTextRect = QRectF(0, 0, 0, fontHeight); advance = QSizeF(); signalSizeChange(previousSize); + lineCount = 1; + emit q->lineCountChanged(); updateType = UpdatePaintNode; q->update(); return; @@ -2166,7 +2168,7 @@ - inline images
    ,
      and
    • - ordered and unordered lists
       - preformatted
      -    > < &
      +    > < & "   '
           \endcode
       
           \c Text.StyledText parser is strict, requiring tags to be correctly nested.
      diff -Naur a/qtdeclarative/src/quick/items/qquicktextinput.cpp b/qtdeclarative/src/quick/items/qquicktextinput.cpp
      --- a/qtdeclarative/src/quick/items/qquicktextinput.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/items/qquicktextinput.cpp	2022-01-25 17:24:17.027378326 +0000
      @@ -3831,8 +3831,7 @@
           int delimiter = maskFields.indexOf(QLatin1Char(';'));
           if (maskFields.isEmpty() || delimiter == 0) {
               if (m_maskData) {
      -            delete [] m_maskData;
      -            m_maskData = nullptr;
      +            m_maskData.reset(nullptr);
                   m_maxLength = 32767;
                   internalSetText(QString());
               }
      @@ -3863,8 +3862,7 @@
                   m_maxLength++;
           }
       
      -    delete [] m_maskData;
      -    m_maskData = new MaskInputData[m_maxLength];
      +    m_maskData.reset(new MaskInputData[m_maxLength]);
       
           MaskInputData::Casemode m = MaskInputData::NoCaseMode;
           c = 0;
      diff -Naur a/qtdeclarative/src/quick/items/qquicktextinput_p_p.h b/qtdeclarative/src/quick/items/qquicktextinput_p_p.h
      --- a/qtdeclarative/src/quick/items/qquicktextinput_p_p.h	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/items/qquicktextinput_p_p.h	2022-01-25 17:24:17.027378326 +0000
      @@ -58,6 +58,8 @@
       
       #include "qplatformdefs.h"
       
      +#include 
      +
       //
       //  W A R N I N G
       //  -------------
      @@ -230,7 +232,7 @@
       
           QQuickItem *cursorItem;
           QQuickTextNode *textNode;
      -    MaskInputData *m_maskData;
      +    std::unique_ptr m_maskData;
           QInputControl *m_inputControl;
       
           QList m_transactions;
      diff -Naur a/qtdeclarative/src/quick/items/qquickview.cpp b/qtdeclarative/src/quick/items/qquickview.cpp
      --- a/qtdeclarative/src/quick/items/qquickview.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/items/qquickview.cpp	2022-01-25 17:24:17.024378337 +0000
      @@ -240,7 +240,11 @@
          Sets the initial properties \a initialProperties with which the QML
          component gets initialized after calling \l QQuickView::setSource().
       
      +   \snippet qquickview-ex.cpp 1
      +
          \note You can only use this function to initialize top-level properties.
      +   \note This function should always be called before setSource, as it has
      +   no effect once the component has become \c Ready.
       
          \sa QQmlComponent::createWithInitialProperties()
          \since 5.14
      diff -Naur a/qtdeclarative/src/quick/items/qquickwindow.cpp b/qtdeclarative/src/quick/items/qquickwindow.cpp
      --- a/qtdeclarative/src/quick/items/qquickwindow.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/items/qquickwindow.cpp	2022-01-25 17:24:17.048378251 +0000
      @@ -450,15 +450,14 @@
       void QQuickWindow::handleScreenChanged(QScreen *screen)
       {
           Q_D(QQuickWindow);
      +    disconnect(d->physicalDpiChangedConnection);
           if (screen) {
               physicalDpiChanged();
               // When physical DPI changes on the same screen, either the resolution or the device pixel
               // ratio changed. We must check what it is. Device pixel ratio does not have its own
               // ...Changed() signal.
      -        d->physicalDpiChangedConnection = connect(screen, SIGNAL(physicalDotsPerInchChanged(qreal)),
      -                                                  this, SLOT(physicalDpiChanged()));
      -    } else {
      -        disconnect(d->physicalDpiChangedConnection);
      +        d->physicalDpiChangedConnection = connect(screen, &QScreen::physicalDotsPerInchChanged,
      +                                                  this, &QQuickWindow::physicalDpiChanged);
           }
       
           d->forcePolish();
      @@ -2864,6 +2863,14 @@
       {
           Q_Q(QQuickWindow);
           QQuickItemPrivate *itemPrivate = QQuickItemPrivate::get(item);
      +#if defined(Q_OS_ANDROID) && QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
      +    // QTBUG-85379
      +    // In QT_VERSION below 6.0.0 touchEnabled for QtQuickItems is set by default to true
      +    // It causes delivering touch events to Items which are not interested
      +    // In some cases (like using Material Style in Android) it may cause a crash
      +    if (itemPrivate->wasDeleted)
      +        return;
      +#endif
           pointerEvent->localize(item);
       
           // Let the Item's handlers (if any) have the event first.
      diff -Naur a/qtdeclarative/src/quick/qtquickglobal_p.h b/qtdeclarative/src/quick/qtquickglobal_p.h
      --- a/qtdeclarative/src/quick/qtquickglobal_p.h	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/qtquickglobal_p.h	2022-01-25 17:24:17.025378334 +0000
      @@ -62,6 +62,7 @@
       #define Q_QUICK_PRIVATE_EXPORT Q_QUICK_EXPORT
       
       void Q_QUICK_PRIVATE_EXPORT qml_register_types_QtQuick();
      +GHS_KEEP_REFERENCE(qml_register_types_QtQuick);
       
       QT_BEGIN_NAMESPACE
       
      diff -Naur a/qtdeclarative/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp b/qtdeclarative/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
      --- a/qtdeclarative/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp	2022-01-25 17:24:17.045378262 +0000
      @@ -428,6 +428,18 @@
                             QStringLiteral(":/qt-project.org/scenegraph/shaders_ng/textmask.frag.qsb"));
       }
       
      +enum UbufOffset {
      +    ModelViewMatrixOffset = 0,
      +    ProjectionMatrixOffset = ModelViewMatrixOffset + 64,
      +    ColorOffset = ProjectionMatrixOffset + 64,
      +    TextureScaleOffset = ColorOffset + 16,
      +    DprOffset = TextureScaleOffset + 8,
      +
      +    // + 1 float padding (vec4 must be aligned to 16)
      +    StyleColorOffset = DprOffset + 4 + 4,
      +    ShiftOffset = StyleColorOffset + 16
      +};
      +
       bool QSGTextMaskRhiShader::updateUniformData(RenderState &state,
                                                    QSGMaterial *newMaterial, QSGMaterial *oldMaterial)
       {
      @@ -443,11 +455,14 @@
       
           bool changed = false;
           QByteArray *buf = state.uniformData();
      -    Q_ASSERT(buf->size() >= 92);
      +    Q_ASSERT(buf->size() >= DprOffset + 4);
       
           if (state.isMatrixDirty()) {
      -        const QMatrix4x4 m = state.combinedMatrix();
      -        memcpy(buf->data(), m.constData(), 64);
      +        const QMatrix4x4 mv = state.modelViewMatrix();
      +        memcpy(buf->data() + ModelViewMatrixOffset, mv.constData(), 64);
      +        const QMatrix4x4 p = state.projectionMatrix();
      +        memcpy(buf->data() + ProjectionMatrixOffset, p.constData(), 64);
      +
               changed = true;
           }
       
      @@ -456,13 +471,13 @@
           if (updated || !oldMat || oldRtex != newRtex) {
               const QVector2D textureScale = QVector2D(1.0f / mat->rhiGlyphCache()->width(),
                                                        1.0f / mat->rhiGlyphCache()->height());
      -        memcpy(buf->data() + 64 + 16, &textureScale, 8);
      +        memcpy(buf->data() + TextureScaleOffset, &textureScale, 8);
               changed = true;
           }
       
           if (!oldMat) {
               float dpr = state.devicePixelRatio();
      -        memcpy(buf->data() + 64 + 16 + 8, &dpr, 4);
      +        memcpy(buf->data() + DprOffset, &dpr, 4);
           }
       
           // move texture uploads/copies onto the renderer's soon-to-be-committed list
      @@ -510,11 +525,11 @@
           QSGTextMaskMaterial *oldMat = static_cast(oldMaterial);
       
           QByteArray *buf = state.uniformData();
      -    Q_ASSERT(buf->size() >= 80);
      +    Q_ASSERT(buf->size() >= ColorOffset + 16);
       
           if (oldMat == nullptr || mat->color() != oldMat->color() || state.isOpacityDirty()) {
               const QVector4D color = qsg_premultiply(mat->color(), state.opacity());
      -        memcpy(buf->data() + 64, &color, 16);
      +        memcpy(buf->data() + ColorOffset, &color, 16);
               changed = true;
           }
       
      @@ -553,12 +568,12 @@
           QSGTextMaskMaterial *oldMat = static_cast(oldMaterial);
       
           QByteArray *buf = state.uniformData();
      -    Q_ASSERT(buf->size() >= 92);
      +    Q_ASSERT(buf->size() >= ColorOffset + 16);
       
           if (oldMat == nullptr || mat->color() != oldMat->color() || state.isOpacityDirty()) {
               // shader takes vec4 but uses alpha only; coloring happens via the blend constant
               const QVector4D color = qsg_premultiply(mat->color(), state.opacity());
      -        memcpy(buf->data() + 64, &color, 16);
      +        memcpy(buf->data() + ColorOffset, &color, 16);
               changed = true;
           }
       
      @@ -608,12 +623,12 @@
           QSGTextMaskMaterial *oldMat = static_cast(oldMaterial);
       
           QByteArray *buf = state.uniformData();
      -    Q_ASSERT(buf->size() >= 92);
      +    Q_ASSERT(buf->size() >= ColorOffset + 16);
       
           if (oldMat == nullptr || mat->color() != oldMat->color() || state.isOpacityDirty()) {
               // shader takes vec4 but uses alpha only
               const QVector4D color(0, 0, 0, mat->color().w() * state.opacity());
      -        memcpy(buf->data() + 64, &color, 16);
      +        memcpy(buf->data() + ColorOffset, &color, 16);
               changed = true;
           }
       
      @@ -649,20 +664,17 @@
           QSGStyledTextMaterial *oldMat = static_cast(oldMaterial);
       
           QByteArray *buf = state.uniformData();
      -    Q_ASSERT(buf->size() >= 120);
      -
      -    // matrix..dpr + 1 float padding (vec4 must be aligned to 16)
      -    const int startOffset = 64 + 16 + 8 + 4 + 4;
      +    Q_ASSERT(buf->size() >= ShiftOffset + 8);
       
           if (oldMat == nullptr || mat->styleColor() != oldMat->styleColor() || state.isOpacityDirty()) {
               const QVector4D styleColor = qsg_premultiply(mat->styleColor(), state.opacity());
      -        memcpy(buf->data() + startOffset, &styleColor, 16);
      +        memcpy(buf->data() + StyleColorOffset, &styleColor, 16);
               changed = true;
           }
       
           if (oldMat == nullptr || oldMat->styleShift() != mat->styleShift()) {
               const QVector2D v = mat->styleShift();
      -        memcpy(buf->data() + startOffset + 16, &v, 8);
      +        memcpy(buf->data() + ShiftOffset, &v, 8);
               changed = true;
           }
       
      diff -Naur a/qtdeclarative/src/quick/scenegraph/shaders_ng/24bittextmask.frag b/qtdeclarative/src/quick/scenegraph/shaders_ng/24bittextmask.frag
      --- a/qtdeclarative/src/quick/scenegraph/shaders_ng/24bittextmask.frag	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/scenegraph/shaders_ng/24bittextmask.frag	2022-01-25 17:24:17.045378262 +0000
      @@ -6,8 +6,9 @@
       layout(binding = 1) uniform sampler2D _qt_texture;
       
       layout(std140, binding = 0) uniform buf {
      -    mat4 matrix;
      -    vec4 color; // only alpha is used, but must be vec4 due to layout compat
      +    mat4 modelViewMatrix;
      +    mat4 projectionMatrix;
      +    vec4 color;
           vec2 textureScale;
           float dpr;
       } ubuf;
      diff -Naur a/qtdeclarative/src/quick/scenegraph/shaders_ng/32bitcolortext.frag b/qtdeclarative/src/quick/scenegraph/shaders_ng/32bitcolortext.frag
      --- a/qtdeclarative/src/quick/scenegraph/shaders_ng/32bitcolortext.frag	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/scenegraph/shaders_ng/32bitcolortext.frag	2022-01-25 17:24:17.045378262 +0000
      @@ -6,8 +6,9 @@
       layout(binding = 1) uniform sampler2D _qt_texture;
       
       layout(std140, binding = 0) uniform buf {
      -    mat4 matrix;
      -    vec4 color; // only alpha is used, but must be vec4 due to layout compat
      +    mat4 modelViewMatrix;
      +    mat4 projectionMatrix;
      +    vec4 color;
           vec2 textureScale;
           float dpr;
       } ubuf;
      diff -Naur a/qtdeclarative/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag b/qtdeclarative/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag
      --- a/qtdeclarative/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag	2022-01-25 17:24:17.045378262 +0000
      @@ -6,7 +6,8 @@
       layout(binding = 1) uniform sampler2D _qt_texture;
       
       layout(std140, binding = 0) uniform buf {
      -    mat4 matrix;
      +    mat4 modelViewMatrix;
      +    mat4 projectionMatrix;
           vec4 color;
           vec2 textureScale;
           float dpr;
      diff -Naur a/qtdeclarative/src/quick/scenegraph/shaders_ng/8bittextmask.frag b/qtdeclarative/src/quick/scenegraph/shaders_ng/8bittextmask.frag
      --- a/qtdeclarative/src/quick/scenegraph/shaders_ng/8bittextmask.frag	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/scenegraph/shaders_ng/8bittextmask.frag	2022-01-25 17:24:17.045378262 +0000
      @@ -6,7 +6,8 @@
       layout(binding = 1) uniform sampler2D _qt_texture;
       
       layout(std140, binding = 0) uniform buf {
      -    mat4 matrix;
      +    mat4 modelViewMatrix;
      +    mat4 projectionMatrix;
           vec4 color;
           vec2 textureScale;
           float dpr;
      diff -Naur a/qtdeclarative/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag b/qtdeclarative/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag
      --- a/qtdeclarative/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag	2022-01-25 17:24:17.046378258 +0000
      @@ -11,11 +11,12 @@
       layout(binding = 1) uniform sampler2D _qt_texture;
       
       layout(std140, binding = 0) uniform buf {
      -    // must match styledtext
      -    mat4 matrix;
      +    mat4 modelViewMatrix;
      +    mat4 projectionMatrix;
           vec4 color;
           vec2 textureScale;
           float dpr;
      +    // the above must stay compatible with textmask/8bittextmask
           vec4 styleColor;
           vec2 shift;
       } ubuf;
      diff -Naur a/qtdeclarative/src/quick/scenegraph/shaders_ng/outlinedtext.frag b/qtdeclarative/src/quick/scenegraph/shaders_ng/outlinedtext.frag
      --- a/qtdeclarative/src/quick/scenegraph/shaders_ng/outlinedtext.frag	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/scenegraph/shaders_ng/outlinedtext.frag	2022-01-25 17:24:17.045378262 +0000
      @@ -11,11 +11,12 @@
       layout(binding = 1) uniform sampler2D _qt_texture;
       
       layout(std140, binding = 0) uniform buf {
      -    // must match styledtext
      -    mat4 matrix;
      +    mat4 modelViewMatrix;
      +    mat4 projectionMatrix;
           vec4 color;
           vec2 textureScale;
           float dpr;
      +    // the above must stay compatible with textmask/8bittextmask
           vec4 styleColor;
           vec2 shift;
       } ubuf;
      diff -Naur a/qtdeclarative/src/quick/scenegraph/shaders_ng/outlinedtext.vert b/qtdeclarative/src/quick/scenegraph/shaders_ng/outlinedtext.vert
      --- a/qtdeclarative/src/quick/scenegraph/shaders_ng/outlinedtext.vert	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/scenegraph/shaders_ng/outlinedtext.vert	2022-01-25 17:24:17.046378258 +0000
      @@ -10,11 +10,12 @@
       layout(location = 4) out vec2 sCoordRight;
       
       layout(std140, binding = 0) uniform buf {
      -    // must match styledtext
      -    mat4 matrix;
      +    mat4 modelViewMatrix;
      +    mat4 projectionMatrix;
           vec4 color;
           vec2 textureScale;
           float dpr;
      +    // the above must stay compatible with textmask/8bittextmask
           vec4 styleColor;
           vec2 shift;
       } ubuf;
      @@ -28,6 +29,6 @@
            sCoordDown = (tCoord - vec2(0.0, 1.0)) * ubuf.textureScale;
            sCoordLeft = (tCoord - vec2(-1.0, 0.0)) * ubuf.textureScale;
            sCoordRight = (tCoord - vec2(1.0, 0.0)) * ubuf.textureScale;
      -     vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr;
      -     gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w);
      +     vec4 xformed = ubuf.modelViewMatrix * vCoord;
      +     gl_Position = ubuf.projectionMatrix * vec4(floor(xformed.xyz * ubuf.dpr + 0.5) / ubuf.dpr, xformed.w);
       }
      diff -Naur a/qtdeclarative/src/quick/scenegraph/shaders_ng/styledtext_a.frag b/qtdeclarative/src/quick/scenegraph/shaders_ng/styledtext_a.frag
      --- a/qtdeclarative/src/quick/scenegraph/shaders_ng/styledtext_a.frag	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/scenegraph/shaders_ng/styledtext_a.frag	2022-01-25 17:24:17.046378258 +0000
      @@ -8,7 +8,8 @@
       layout(binding = 1) uniform sampler2D _qt_texture;
       
       layout(std140, binding = 0) uniform buf {
      -    mat4 matrix;
      +    mat4 modelViewMatrix;
      +    mat4 projectionMatrix;
           vec4 color;
           vec2 textureScale;
           float dpr;
      diff -Naur a/qtdeclarative/src/quick/scenegraph/shaders_ng/styledtext.frag b/qtdeclarative/src/quick/scenegraph/shaders_ng/styledtext.frag
      --- a/qtdeclarative/src/quick/scenegraph/shaders_ng/styledtext.frag	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/scenegraph/shaders_ng/styledtext.frag	2022-01-25 17:24:17.046378258 +0000
      @@ -8,7 +8,8 @@
       layout(binding = 1) uniform sampler2D _qt_texture;
       
       layout(std140, binding = 0) uniform buf {
      -    mat4 matrix;
      +    mat4 modelViewMatrix;
      +    mat4 projectionMatrix;
           vec4 color;
           vec2 textureScale;
           float dpr;
      diff -Naur a/qtdeclarative/src/quick/scenegraph/shaders_ng/styledtext.vert b/qtdeclarative/src/quick/scenegraph/shaders_ng/styledtext.vert
      --- a/qtdeclarative/src/quick/scenegraph/shaders_ng/styledtext.vert	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/scenegraph/shaders_ng/styledtext.vert	2022-01-25 17:24:17.046378258 +0000
      @@ -7,7 +7,8 @@
       layout(location = 1) out vec2 shiftedSampleCoord;
       
       layout(std140, binding = 0) uniform buf {
      -    mat4 matrix;
      +    mat4 modelViewMatrix;
      +    mat4 projectionMatrix;
           vec4 color;
           vec2 textureScale;
           float dpr;
      @@ -22,6 +23,6 @@
       {
            sampleCoord = tCoord * ubuf.textureScale;
            shiftedSampleCoord = (tCoord - ubuf.shift) * ubuf.textureScale;
      -     vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr;
      -     gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w);
      +     vec4 xformed = ubuf.modelViewMatrix * vCoord;
      +     gl_Position = ubuf.projectionMatrix * vec4(floor(xformed.xyz * ubuf.dpr + 0.5) / ubuf.dpr, xformed.w);
       }
      diff -Naur a/qtdeclarative/src/quick/scenegraph/shaders_ng/textmask.frag b/qtdeclarative/src/quick/scenegraph/shaders_ng/textmask.frag
      --- a/qtdeclarative/src/quick/scenegraph/shaders_ng/textmask.frag	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/scenegraph/shaders_ng/textmask.frag	2022-01-25 17:24:17.046378258 +0000
      @@ -6,7 +6,8 @@
       layout(binding = 1) uniform sampler2D _qt_texture;
       
       layout(std140, binding = 0) uniform buf {
      -    mat4 matrix;
      +    mat4 modelViewMatrix;
      +    mat4 projectionMatrix;
           vec4 color;
           vec2 textureScale;
           float dpr;
      diff -Naur a/qtdeclarative/src/quick/scenegraph/shaders_ng/textmask.vert b/qtdeclarative/src/quick/scenegraph/shaders_ng/textmask.vert
      --- a/qtdeclarative/src/quick/scenegraph/shaders_ng/textmask.vert	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/scenegraph/shaders_ng/textmask.vert	2022-01-25 17:24:17.046378258 +0000
      @@ -6,7 +6,8 @@
       layout(location = 0) out vec2 sampleCoord;
       
       layout(std140, binding = 0) uniform buf {
      -    mat4 matrix;
      +    mat4 modelViewMatrix;
      +    mat4 projectionMatrix;
           vec4 color;
           vec2 textureScale;
           float dpr;
      @@ -17,6 +18,6 @@
       void main()
       {
            sampleCoord = tCoord * ubuf.textureScale;
      -     vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr;
      -     gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w);
      +     vec4 xformed = ubuf.modelViewMatrix * vCoord;
      +     gl_Position = ubuf.projectionMatrix * vec4(floor(xformed.xyz * ubuf.dpr + 0.5) / ubuf.dpr, xformed.w);
       }
      diff -Naur a/qtdeclarative/src/quick/util/qquickstate.cpp b/qtdeclarative/src/quick/util/qquickstate.cpp
      --- a/qtdeclarative/src/quick/util/qquickstate.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/util/qquickstate.cpp	2022-01-25 17:24:17.046378258 +0000
      @@ -635,6 +635,11 @@
                   }
               }
               if (!found) {
      +            // If revert list contains bindings assigned to deleted objects, we need to
      +            // prevent reverting properties of those objects.
      +            if (d->revertList.at(ii).binding() && !d->revertList.at(ii).property().object()) {
      +                continue;
      +            }
                   QVariant cur = d->revertList.at(ii).property().read();
                   QQmlPropertyPrivate::removeBinding(d->revertList.at(ii).property());
       
      diff -Naur a/qtdeclarative/src/quick/util/qquickstyledtext.cpp b/qtdeclarative/src/quick/util/qquickstyledtext.cpp
      --- a/qtdeclarative/src/quick/util/qquickstyledtext.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quick/util/qquickstyledtext.cpp	2022-01-25 17:24:17.043378269 +0000
      @@ -46,6 +46,8 @@
       #include "qquickstyledtext_p.h"
       #include 
       
      +Q_LOGGING_CATEGORY(lcStyledText, "qt.quick.styledtext")
      +
       /*
           QQuickStyledText supports few tags:
       
      @@ -562,10 +564,14 @@
                       textOut += QChar(60);
                   else if (entity == QLatin1String("amp"))
                       textOut += QChar(38);
      +            else if (entity == QLatin1String("apos"))
      +                textOut += QChar(39);
                   else if (entity == QLatin1String("quot"))
                       textOut += QChar(34);
                   else if (entity == QLatin1String("nbsp"))
                       textOut += QChar(QChar::Nbsp);
      +            else
      +                qCWarning(lcStyledText) << "StyledText doesn't support entity" << entity;
                   return;
               } else if (*ch == QLatin1Char(' ')) {
                   QStringRef entity(&textIn, entityStart - 1, entityLength + 1);
      diff -Naur a/qtdeclarative/src/quickshapes/qquickshapesglobal_p.h b/qtdeclarative/src/quickshapes/qquickshapesglobal_p.h
      --- a/qtdeclarative/src/quickshapes/qquickshapesglobal_p.h	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/src/quickshapes/qquickshapesglobal_p.h	2022-01-25 17:24:17.025378334 +0000
      @@ -51,6 +51,7 @@
       // We mean it.
       //
       
      +#include 
       #include "qquickshapesglobal.h"
       
       QT_BEGIN_NAMESPACE
      @@ -60,5 +61,6 @@
       QT_END_NAMESPACE
       
       void Q_QUICKSHAPES_PRIVATE_EXPORT qml_register_types_QtQuick_Shapes();
      +GHS_KEEP_REFERENCE(qml_register_types_QtQuick_Shapes);
       
       #endif // QQUICKSHAPESGLOBAL_P_H
      diff -Naur a/qtdeclarative/tests/auto/qml/debugger/qv4debugger/tst_qv4debugger.cpp b/qtdeclarative/tests/auto/qml/debugger/qv4debugger/tst_qv4debugger.cpp
      --- a/qtdeclarative/tests/auto/qml/debugger/qv4debugger/tst_qv4debugger.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/tests/auto/qml/debugger/qv4debugger/tst_qv4debugger.cpp	2022-01-25 17:24:17.029378319 +0000
      @@ -910,19 +910,25 @@
           component.setData("import QtQml 2.12\n"
                             "QtObject {\n"
                             "    id: root\n"
      -                      "    property string result\n"
      +                      "    property string result: 'unset'\n"
      +                      "    property string resultCallbackInternal: 'unset'\n"
      +                      "    property string resultCallbackExternal: 'unset'\n"
                             "    signal signalWithArg(string textArg)\n"
      +                      "    function call(callback) { callback(); }\n"
      +                      "    function externalCallback() { root.resultCallbackExternal = textArg; }\n"
                             "    property Connections connections : Connections {\n"
                             "        target: root\n"
      -                      "        onSignalWithArg: { root.result = textArg; }\n"
      +                      "        onSignalWithArg: { root.result = textArg; call(function() { root.resultCallbackInternal = textArg; }); call(externalCallback); }\n"
                             "    }\n"
                             "    Component.onCompleted: signalWithArg('something')\n"
                             "}", QUrl("test.qml"));
       
      -    QVERIFY(component.isReady());
      +    QVERIFY2(component.isReady(), qPrintable(component.errorString()));
           QScopedPointer obj(component.create());
           QVERIFY(obj);
           QCOMPARE(obj->property("result").toString(), QLatin1String("something"));
      +    QCOMPARE(obj->property("resultCallbackInternal").toString(), QLatin1String("something"));
      +    QCOMPARE(obj->property("resultCallbackExternal").toString(), QLatin1String("unset"));
       }
       
       QTEST_MAIN(tst_qv4debugger)
      diff -Naur a/qtdeclarative/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/qtdeclarative/tests/auto/qml/qjsengine/tst_qjsengine.cpp
      --- a/qtdeclarative/tests/auto/qml/qjsengine/tst_qjsengine.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/tests/auto/qml/qjsengine/tst_qjsengine.cpp	2022-01-25 17:24:17.045378262 +0000
      @@ -102,6 +102,7 @@
           void valueConversion_RegularExpression();
           void castWithMultipleInheritance();
           void collectGarbage();
      +    void collectGarbageNestedWrappersTwoEngines();
           void gcWithNestedDataStructure();
           void stacktrace();
           void numberParsing_data();
      @@ -1809,6 +1810,44 @@
           QVERIFY(ptr.isNull());
       }
       
      +class TestObjectContainer : public QObject
      +{
      +    Q_OBJECT
      +    Q_PROPERTY(QObject *dummy MEMBER m_dummy CONSTANT)
      +
      +public:
      +    TestObjectContainer() : m_dummy(new QObject(this)) {}
      +
      +private:
      +    QObject *m_dummy;
      +};
      +
      +void tst_QJSEngine::collectGarbageNestedWrappersTwoEngines()
      +{
      +    QJSEngine engine1;
      +    QJSEngine engine2;
      +
      +    TestObjectContainer container;
      +    QQmlEngine::setObjectOwnership(&container, QQmlEngine::CppOwnership);
      +
      +    engine1.globalObject().setProperty("foobar", engine1.newQObject(&container));
      +    engine2.globalObject().setProperty("foobar", engine2.newQObject(&container));
      +
      +    engine1.evaluate("foobar.dummy.baz = 42");
      +    engine2.evaluate("foobar.dummy.baz = 43");
      +
      +    QCOMPARE(engine1.evaluate("foobar.dummy.baz").toInt(), 42);
      +    QCOMPARE(engine2.evaluate("foobar.dummy.baz").toInt(), 43);
      +
      +    engine1.collectGarbage();
      +    engine2.collectGarbage();
      +
      +    // The GC should not collect dummy object wrappers neither in engine1 nor engine2, we
      +    // verify that by checking whether the baz property still has its previous value.
      +    QCOMPARE(engine1.evaluate("foobar.dummy.baz").toInt(), 42);
      +    QCOMPARE(engine2.evaluate("foobar.dummy.baz").toInt(), 43);
      +}
      +
       void tst_QJSEngine::gcWithNestedDataStructure()
       {
           // The GC must be able to traverse deeply nested objects, otherwise this
      diff -Naur a/qtdeclarative/tests/auto/qml/qqmldelegatemodel/data/redrawUponColumnChange.qml b/qtdeclarative/tests/auto/qml/qqmldelegatemodel/data/redrawUponColumnChange.qml
      --- a/qtdeclarative/tests/auto/qml/qqmldelegatemodel/data/redrawUponColumnChange.qml	1970-01-01 01:00:00.000000000 +0100
      +++ b/qtdeclarative/tests/auto/qml/qqmldelegatemodel/data/redrawUponColumnChange.qml	2022-01-25 17:24:17.044378265 +0000
      @@ -0,0 +1,11 @@
      +import QtQuick 2.8
      +
      +ListView {
      +    id: root
      +    width: 200
      +    height: 200
      +
      +    delegate: Text {
      +        text: display
      +    }
      +}
      diff -Naur a/qtdeclarative/tests/auto/qml/qqmldelegatemodel/qqmldelegatemodel.pro b/qtdeclarative/tests/auto/qml/qqmldelegatemodel/qqmldelegatemodel.pro
      --- a/qtdeclarative/tests/auto/qml/qqmldelegatemodel/qqmldelegatemodel.pro	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/tests/auto/qml/qqmldelegatemodel/qqmldelegatemodel.pro	2022-01-25 17:24:17.044378265 +0000
      @@ -2,7 +2,7 @@
       TARGET = tst_qqmldelegatemodel
       macos:CONFIG -= app_bundle
       
      -QT += qml testlib core-private qml-private qmlmodels-private
      +QT += qml quick testlib core-private qml-private qmlmodels-private
       
       SOURCES += tst_qqmldelegatemodel.cpp
       
      diff -Naur a/qtdeclarative/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp b/qtdeclarative/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp
      --- a/qtdeclarative/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp	2022-01-25 17:24:17.044378265 +0000
      @@ -27,8 +27,12 @@
       ****************************************************************************/
       
       #include 
      +#include 
      +#include 
       #include 
       #include 
      +#include 
      +#include 
       
       #include "../../shared/util.h"
       
      @@ -42,6 +46,7 @@
       private slots:
           void valueWithoutCallingObjectFirst_data();
           void valueWithoutCallingObjectFirst();
      +    void redrawUponColumnChange();
       };
       
       class AbstractItemModel : public QAbstractItemModel
      @@ -134,6 +139,30 @@
           QCOMPARE(model->variantValue(index, role), expectedValue);
       }
       
      +void tst_QQmlDelegateModel::redrawUponColumnChange()
      +{
      +    QStandardItemModel m1;
      +    m1.appendRow({
      +            new QStandardItem("Banana"),
      +            new QStandardItem("Coconut"),
      +    });
      +
      +    QQuickView view(testFileUrl("redrawUponColumnChange.qml"));
      +    QCOMPARE(view.status(), QQuickView::Ready);
      +    view.show();
      +    QQuickItem *root = view.rootObject();
      +    root->setProperty("model", QVariant::fromValue(&m1));
      +
      +    QObject *item = root->property("currentItem").value();
      +    QVERIFY(item);
      +    QCOMPARE(item->property("text").toString(), "Banana");
      +
      +    QVERIFY(root);
      +    m1.removeColumn(0);
      +
      +    QCOMPARE(item->property("text").toString(), "Coconut");
      +}
      +
       QTEST_MAIN(tst_QQmlDelegateModel)
       
       #include "tst_qqmldelegatemodel.moc"
      diff -Naur a/qtdeclarative/tests/auto/qml/qqmlecmascript/data/proxyIteration.qml b/qtdeclarative/tests/auto/qml/qqmlecmascript/data/proxyIteration.qml
      --- a/qtdeclarative/tests/auto/qml/qqmlecmascript/data/proxyIteration.qml	1970-01-01 01:00:00.000000000 +0100
      +++ b/qtdeclarative/tests/auto/qml/qqmlecmascript/data/proxyIteration.qml	2022-01-25 17:24:17.037378291 +0000
      @@ -0,0 +1,29 @@
      +import QtQml 2
      +
      +QtObject {
      +  id: root
      +  property int sum
      +  Component.onCompleted: {
      +    const target = { prop1: 1, prop2: 2, prop3: 3 };
      +    const handler = {
      +      get: function(target, key) {
      +        return target[key]+1;
      +      },
      +      ownKeys: function() {
      +        return ["prop1", "prop3"];
      +      },
      +      getOwnPropertyDescriptor: function(target, key) {
      +        return {
      +          value: this.get(target, key),
      +          enumerable: true,
      +          configurable: true
      +        };
      +      }
      +    };
      +    const proxy = new Proxy(target, handler);
      +    for (var prop in proxy) {
      +      root.sum += proxy[prop] // prop2 gets skipped, the values of 1 and 3 get incremented
      +    }
      +    // so root.sum should be 6 now
      +  }
      +}
      diff -Naur a/qtdeclarative/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp b/qtdeclarative/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp
      --- a/qtdeclarative/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/tests/auto/qml/qqmlecmascript/tst_qqmlecmascript.cpp	2022-01-25 17:24:17.038378287 +0000
      @@ -382,7 +382,8 @@
           void semicolonAfterProperty();
           void hugeStack();
           void variantConversionMethod();
      -
      +    void proxyIteration();
      +    void proxyHandlerTraps();
           void gcCrashRegressionTest();
       
       private:
      @@ -9306,6 +9307,44 @@
           QCOMPARE(obj.funcCalled, QLatin1String("QModelIndex"));
       }
       
      +void tst_qqmlecmascript::proxyIteration()
      +{
      +    QQmlEngine engine;
      +    QQmlComponent component(&engine, testFileUrl("proxyIteration.qml"));
      +    QScopedPointer root(component.create());
      +    QVERIFY2(root != nullptr, qPrintable(component.errorString()));
      +    QCOMPARE(root->property("sum").toInt(), 6);
      +}
      +
      +void tst_qqmlecmascript::proxyHandlerTraps()
      +{
      +    const QString expression = QStringLiteral(R"SNIPPET(
      +        (function(){
      +            const target = {
      +                prop: 47
      +            };
      +            const handler = {
      +                getOwnPropertyDescriptor(target, prop) {
      +                    return { configurable: true, enumerable: true, value: 47 };
      +                }
      +            };
      +            const proxy = new Proxy(target, handler);
      +
      +            // QTBUG-88786
      +            if (!proxy.propertyIsEnumerable("prop"))
      +                throw Error("FAIL: propertyisEnumerable");
      +            if (!proxy.hasOwnProperty("prop"))
      +                throw Error("FAIL: hasOwnProperty");
      +
      +            return "SUCCESS";
      +        })()
      +    )SNIPPET");
      +
      +    QJSEngine engine;
      +    QJSValue value = engine.evaluate(expression);
      +    QVERIFY(value.isString() && value.toString() == QStringLiteral("SUCCESS"));
      +}
      +
       QTEST_MAIN(tst_qqmlecmascript)
       
       #include "tst_qqmlecmascript.moc"
      diff -Naur a/qtdeclarative/tests/auto/qml/qqmllanguage/data/inlineComponentsSameFile.qml b/qtdeclarative/tests/auto/qml/qqmllanguage/data/inlineComponentsSameFile.qml
      --- a/qtdeclarative/tests/auto/qml/qqmllanguage/data/inlineComponentsSameFile.qml	1970-01-01 01:00:00.000000000 +0100
      +++ b/qtdeclarative/tests/auto/qml/qqmllanguage/data/inlineComponentsSameFile.qml	2022-01-25 17:24:17.039378283 +0000
      @@ -0,0 +1,11 @@
      +import QtQml 2.15
      +
      +QtObject {
      +    component IC : QtObject {
      +        property string name
      +        property int age
      +    }
      +
      +    property IC other: IC { name: "Toby"; age: 30 }
      +    property list listProp: [IC { name: "Alfred Ill"; age: 65 }, IC { name: "Claire Zachanassian"; age: 62}]
      +}
      diff -Naur a/qtdeclarative/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp b/qtdeclarative/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp
      --- a/qtdeclarative/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/tests/auto/qml/qqmllanguage/tst_qqmllanguage.cpp	2022-01-25 17:24:17.039378283 +0000
      @@ -5604,6 +5604,7 @@
           QTest::newRow("Alias resolves correctly") << testFileUrl("inlineComponentWithAlias.qml") << QColorConstants::Svg::lime << 42 << true;
       
           QTest::newRow("Two inline components in same do not crash (QTBUG-86989)") << testFileUrl("twoInlineComponents.qml") << QColor() << 0 << false;
      +    QTest::newRow("Inline components used in same file (QTBUG-89173)") << testFileUrl("inlineComponentsSameFile.qml") << QColor() << 0 << false;
       }
       
       void tst_qqmllanguage::inlineComponentReferenceCycle_data()
      diff -Naur a/qtdeclarative/tests/auto/qml/qqmllistmodel/tst_qqmllistmodel.cpp b/qtdeclarative/tests/auto/qml/qqmllistmodel/tst_qqmllistmodel.cpp
      --- a/qtdeclarative/tests/auto/qml/qqmllistmodel/tst_qqmllistmodel.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/tests/auto/qml/qqmllistmodel/tst_qqmllistmodel.cpp	2022-01-25 17:24:17.030378316 +0000
      @@ -130,6 +130,7 @@
           void dynamic_roles_crash_QTBUG_38907();
           void nestedListModelIteration();
           void undefinedAppendShouldCauseError();
      +    void nullPropertyCrash();
       };
       
       bool tst_qqmllistmodel::compareVariantList(const QVariantList &testList, QVariant object)
      @@ -1723,6 +1724,27 @@
           QScopedPointer(component.create());
       }
       
      +// QTBUG-89173
      +void tst_qqmllistmodel::nullPropertyCrash()
      +{
      +    QQmlEngine engine;
      +    QQmlComponent component(&engine);
      +    component.setData(
      +            R"(import QtQuick 2.15
      +            ListView {
      +                model: ListModel { id: listModel }
      +
      +                delegate: Item {}
      +
      +                Component.onCompleted: {
      +                    listModel.append({"a": "value1", "b":[{"c":"value2"}]})
      +                    listModel.append({"a": "value2", "b":[{"c":null}]})
      +                }
      +            })",
      +            QUrl());
      +    QTest::ignoreMessage(QtMsgType::QtWarningMsg, ": c is null. Adding an object with a null member does not create a role for it.");
      +    QScopedPointer(component.create());
      +}
       
       QTEST_MAIN(tst_qqmllistmodel)
       
      diff -Naur a/qtdeclarative/tests/auto/qml/qv4mm/tst_qv4mm.cpp b/qtdeclarative/tests/auto/qml/qv4mm/tst_qv4mm.cpp
      --- a/qtdeclarative/tests/auto/qml/qv4mm/tst_qv4mm.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/tests/auto/qml/qv4mm/tst_qv4mm.cpp	2022-01-25 17:24:17.045378262 +0000
      @@ -76,10 +76,10 @@
               QCOMPARE(engine1.memoryManager->m_pendingFreedObjectWrapperValue.size(), 1);
               QCOMPARE(engine2.memoryManager->m_pendingFreedObjectWrapperValue.size(), 0);
       
      -        // Moves the additional WeakValue from m_multiplyWrappedQObjects to
      -        // m_pendingFreedObjectWrapperValue. It's still alive after all.
      +        // The additional WeakValue from m_multiplyWrappedQObjects hasn't been moved
      +        // to m_pendingFreedObjectWrapperValue yet. It's still alive after all.
               engine1.memoryManager->runGC();
      -        QCOMPARE(engine1.memoryManager->m_pendingFreedObjectWrapperValue.size(), 2);
      +        QCOMPARE(engine1.memoryManager->m_pendingFreedObjectWrapperValue.size(), 1);
       
               // engine2 doesn't own the object as engine1 was the first to wrap it above.
               // Therefore, no effect here.
      diff -Naur a/qtdeclarative/tests/auto/quick/qquickloader/data/loader-async-race.qml b/qtdeclarative/tests/auto/quick/qquickloader/data/loader-async-race.qml
      --- a/qtdeclarative/tests/auto/quick/qquickloader/data/loader-async-race.qml	1970-01-01 01:00:00.000000000 +0100
      +++ b/qtdeclarative/tests/auto/quick/qquickloader/data/loader-async-race.qml	2022-01-25 17:24:17.044378265 +0000
      @@ -0,0 +1,14 @@
      +import QtQuick 2.15
      +
      +Item {
      +    id: root
      +    Component.onCompleted: {
      +        myloader.active = false
      +    }
      +    Loader {
      +        id: myloader
      +        anchors.fill: parent
      +        asynchronous: true
      +        source: "loader-async-race-rect.qml"
      +    }
      +}
      diff -Naur a/qtdeclarative/tests/auto/quick/qquickloader/data/loader-async-race-rect.qml b/qtdeclarative/tests/auto/quick/qquickloader/data/loader-async-race-rect.qml
      --- a/qtdeclarative/tests/auto/quick/qquickloader/data/loader-async-race-rect.qml	1970-01-01 01:00:00.000000000 +0100
      +++ b/qtdeclarative/tests/auto/quick/qquickloader/data/loader-async-race-rect.qml	2022-01-25 17:24:17.044378265 +0000
      @@ -0,0 +1,10 @@
      +import QtQuick 2.15
      +
      +Rectangle {
      +    anchors.fill: parent
      +    color: "blue"
      +    Item {
      +        Item {
      +        }
      +    }
      +}
      diff -Naur a/qtdeclarative/tests/auto/quick/qquickloader/tst_qquickloader.cpp b/qtdeclarative/tests/auto/quick/qquickloader/tst_qquickloader.cpp
      --- a/qtdeclarative/tests/auto/quick/qquickloader/tst_qquickloader.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/tests/auto/quick/qquickloader/tst_qquickloader.cpp	2022-01-25 17:24:17.044378265 +0000
      @@ -132,6 +132,7 @@
           void statusChangeOnlyEmittedOnce();
       
           void setSourceAndCheckStatus();
      +    void asyncLoaderRace();
       };
       
       Q_DECLARE_METATYPE(QList)
      @@ -1491,6 +1492,24 @@
           QCOMPARE(loader->status(), QQuickLoader::Null);
       }
       
      +void tst_QQuickLoader::asyncLoaderRace()
      +{
      +    QQmlApplicationEngine engine;
      +    auto url = testFileUrl("loader-async-race.qml");
      +    engine.load(url);
      +    auto root = engine.rootObjects().at(0);
      +    QVERIFY(root);
      +
      +    QQuickLoader *loader = root->findChild();
      +    QCOMPARE(loader->active(), false);
      +    QCOMPARE(loader->status(), QQuickLoader::Null);
      +    QCOMPARE(loader->item(), nullptr);
      +
      +    QSignalSpy spy(loader, &QQuickLoader::itemChanged);
      +    QVERIFY(!spy.wait(100));
      +    QCOMPARE(loader->item(), nullptr);
      +}
      +
       QTEST_MAIN(tst_QQuickLoader)
       
       #include "tst_qquickloader.moc"
      diff -Naur a/qtdeclarative/tests/auto/quick/qquickstates/data/revertNullObjectBinding.qml b/qtdeclarative/tests/auto/quick/qquickstates/data/revertNullObjectBinding.qml
      --- a/qtdeclarative/tests/auto/quick/qquickstates/data/revertNullObjectBinding.qml	1970-01-01 01:00:00.000000000 +0100
      +++ b/qtdeclarative/tests/auto/quick/qquickstates/data/revertNullObjectBinding.qml	2022-01-25 17:24:17.046378258 +0000
      @@ -0,0 +1,48 @@
      +import QtQuick 2.12
      +import Qt.test 1.0
      +
      +Item {
      +    id: root
      +    readonly property int someProp: 1234
      +
      +    property bool state1Active: false
      +    property bool state2Active: false
      +    StateGroup {
      +        states: [
      +            State {
      +                id: state1
      +                name: "state1"
      +                when: state1Active
      +                changes: [
      +                    PropertyChanges {
      +                        objectName: "propertyChanges1"
      +                        target: ContainingObj.obj
      +                        prop: root.someProp
      +                    }
      +                ]
      +            }
      +    ]}
      +    StateGroup {
      +        states: [
      +            State {
      +                id: state2
      +                name: "state2"
      +                when: state2Active
      +                changes: [
      +                    PropertyChanges {
      +                        objectName: "propertyChanges2"
      +                        target: ContainingObj.obj
      +                        prop: 11111
      +                    }
      +                ]
      +            }
      +        ]
      +    }
      +
      +    Component.onCompleted: {
      +        state1Active = true;
      +        state2Active = true;
      +
      +        ContainingObj.reset()
      +    }
      +}
      diff -Naur a/qtdeclarative/tests/auto/quick/qquickstates/tst_qquickstates.cpp b/qtdeclarative/tests/auto/quick/qquickstates/tst_qquickstates.cpp
      --- a/qtdeclarative/tests/auto/quick/qquickstates/tst_qquickstates.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/tests/auto/quick/qquickstates/tst_qquickstates.cpp	2022-01-25 17:24:17.046378258 +0000
      @@ -79,6 +79,55 @@
       QML_DECLARE_TYPE(MyRect)
       QML_DECLARE_TYPEINFO(MyRect, QML_HAS_ATTACHED_PROPERTIES)
       
      +class RemovableObj : public QObject
      +{
      +    Q_OBJECT
      +    Q_PROPERTY(int prop READ prop WRITE setProp NOTIFY propChanged)
      +
      +public:
      +    RemovableObj(QObject *parent) : QObject(parent), m_prop(4321) { }
      +    int prop() const { return m_prop; }
      +
      +public slots:
      +    void setProp(int prop)
      +    {
      +        if (m_prop == prop)
      +            return;
      +
      +        m_prop = prop;
      +        emit propChanged(m_prop);
      +    }
      +
      +signals:
      +    void propChanged(int prop);
      +
      +private:
      +    int m_prop;
      +};
      +
      +class ContainingObj : public QObject
      +{
      +    Q_OBJECT
      +    Q_PROPERTY(RemovableObj *obj READ obj NOTIFY objChanged)
      +    RemovableObj *m_obj;
      +
      +public:
      +    ContainingObj() : m_obj(new RemovableObj(this)) { }
      +    RemovableObj *obj() const { return m_obj; }
      +
      +    Q_INVOKABLE void reset()
      +    {
      +        if (m_obj) {
      +            m_obj->deleteLater();
      +        }
      +
      +        m_obj = new RemovableObj(this);
      +        emit objChanged();
      +    }
      +signals:
      +    void objChanged();
      +};
      +
       class tst_qquickstates : public QQmlDataTest
       {
           Q_OBJECT
      @@ -140,12 +189,20 @@
           void duplicateStateName();
           void trivialWhen();
           void parentChangeCorrectReversal();
      +    void revertNullObjectBinding();
       };
       
       void tst_qquickstates::initTestCase()
       {
           QQmlDataTest::initTestCase();
           qmlRegisterType("Qt.test", 1, 0, "MyRectangle");
      +    qmlRegisterSingletonType(
      +            "Qt.test", 1, 0, "ContainingObj", [](QQmlEngine *engine, QJSEngine *) {
      +                static ContainingObj instance;
      +                engine->setObjectOwnership(&instance, QQmlEngine::CppOwnership);
      +                return &instance;
      +            });
      +    qmlRegisterUncreatableType("Qt.test", 1, 0, "RemovableObj", "Uncreatable");
       }
       
       QByteArray tst_qquickstates::fullDataPath(const QString &path) const
      @@ -1692,6 +1749,17 @@
           QCOMPARE(oldX, stayingRectX.read().toDouble());
       }
       
      +void tst_qquickstates::revertNullObjectBinding()
      +{
      +    QQmlEngine engine;
      +
      +    QQmlComponent c(&engine, testFileUrl("revertNullObjectBinding.qml"));
      +    QScopedPointer root { c.create() };
      +    QVERIFY(root);
      +    QTest::qWait(10);
      +    QQmlProperty state2Active(root.get(), "state2Active");
      +    state2Active.write(false);
      +}
       
       QTEST_MAIN(tst_qquickstates)
       
      diff -Naur a/qtdeclarative/tests/auto/quick/qquicktableview/tst_qquicktableview.cpp b/qtdeclarative/tests/auto/quick/qquicktableview/tst_qquicktableview.cpp
      --- a/qtdeclarative/tests/auto/quick/qquicktableview/tst_qquicktableview.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/tests/auto/quick/qquicktableview/tst_qquicktableview.cpp	2022-01-25 17:24:17.030378316 +0000
      @@ -176,6 +176,7 @@
           void checkSyncView_connect_late_data();
           void checkSyncView_connect_late();
           void checkSyncView_pageFlicking();
      +    void checkSyncView_emptyModel();
           void delegateWithRequiredProperties();
           void checkThatFetchMoreIsCalledWhenScrolledToTheEndOfTable();
           void replaceModel();
      @@ -2731,6 +2732,48 @@
           QVERIFY(tableViewPrivate->scheduledRebuildOptions & QQuickTableViewPrivate::RebuildOption::CalculateNewTopLeftRow);
       }
       
      +void tst_QQuickTableView::checkSyncView_emptyModel()
      +{
      +    // When a tableview has a syncview with an empty model then it should still be
      +    // showing the tableview without depending on the syncview. This is particularly
      +    // important for headerviews for example
      +    LOAD_TABLEVIEW("syncviewsimple.qml");
      +    GET_QML_TABLEVIEW(tableViewH);
      +    GET_QML_TABLEVIEW(tableViewV);
      +    GET_QML_TABLEVIEW(tableViewHV);
      +    QQuickTableView *views[] = {tableViewH, tableViewV, tableViewHV};
      +
      +    auto model = TestModelAsVariant(100, 100);
      +
      +    for (auto view : views)
      +        view->setModel(model);
      +
      +    WAIT_UNTIL_POLISHED_ARG(tableViewHV);
      +
      +    // Check that geometry properties are mirrored
      +    QCOMPARE(tableViewH->columnSpacing(), tableView->columnSpacing());
      +    QCOMPARE(tableViewH->rowSpacing(), 0);
      +    QCOMPARE(tableViewH->contentWidth(), tableView->contentWidth());
      +    QVERIFY(tableViewH->contentHeight() > 0);
      +    QCOMPARE(tableViewV->columnSpacing(), 0);
      +    QCOMPARE(tableViewV->rowSpacing(), tableView->rowSpacing());
      +    QCOMPARE(tableViewV->contentHeight(), tableView->contentHeight());
      +    QVERIFY(tableViewV->contentWidth() > 0);
      +
      +    QCOMPARE(tableViewH->contentX(), tableView->contentX());
      +    QCOMPARE(tableViewH->contentY(), 0);
      +    QCOMPARE(tableViewV->contentX(), 0);
      +    QCOMPARE(tableViewV->contentY(), tableView->contentY());
      +    QCOMPARE(tableViewHV->contentX(), tableView->contentX());
      +    QCOMPARE(tableViewHV->contentY(), tableView->contentY());
      +
      +    QCOMPARE(tableViewHPrivate->loadedTableOuterRect.left(), tableViewPrivate->loadedTableOuterRect.left());
      +    QCOMPARE(tableViewHPrivate->loadedTableOuterRect.top(), 0);
      +
      +    QCOMPARE(tableViewVPrivate->loadedTableOuterRect.top(), tableViewPrivate->loadedTableOuterRect.top());
      +    QCOMPARE(tableViewVPrivate->loadedTableOuterRect.left(), 0);
      +}
      +
       void tst_QQuickTableView::checkThatFetchMoreIsCalledWhenScrolledToTheEndOfTable()
       {
           LOAD_TABLEVIEW("plaintableview.qml");
      diff -Naur a/qtdeclarative/tests/auto/quick/qquicktext/tst_qquicktext.cpp b/qtdeclarative/tests/auto/quick/qquicktext/tst_qquicktext.cpp
      --- a/qtdeclarative/tests/auto/quick/qquicktext/tst_qquicktext.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/tests/auto/quick/qquicktext/tst_qquicktext.cpp	2022-01-25 17:24:17.026378330 +0000
      @@ -2243,6 +2243,43 @@
           QCOMPARE(myText->lineCount(), 2);
           QCOMPARE(myText->truncated(), true);
           QCOMPARE(myText->maximumLineCount(), 2);
      +
      +    // QTBUG-84458
      +    myText->resetMaximumLineCount();
      +    myText->setText("qqqqq\nqqqqq");
      +    QCOMPARE(myText->lineCount(), 2);
      +    myText->setText("qqqqq\nqqqqq\nqqqqq");
      +    QCOMPARE(myText->lineCount(), 3);
      +    myText->setText("");
      +    QCOMPARE(myText->lineCount(), 1);
      +
      +    myText->setText("qqqqq\nqqqqq\nqqqqq");
      +    QCOMPARE(myText->lineCount(), 3);
      +    myText->setFontSizeMode(QQuickText::HorizontalFit);
      +    myText->setText("");
      +    QCOMPARE(myText->lineCount(), 1);
      +
      +    myText->setText("qqqqq\nqqqqq\nqqqqq");
      +    QCOMPARE(myText->lineCount(), 3);
      +    myText->setFontSizeMode(QQuickText::VerticalFit);
      +    myText->setText("");
      +    QCOMPARE(myText->lineCount(), 1);
      +
      +    myText->setText("qqqqq\nqqqqq\nqqqqq");
      +    QCOMPARE(myText->lineCount(), 3);
      +    myText->setFontSizeMode(QQuickText::Fit);
      +    myText->setText("");
      +    QCOMPARE(myText->lineCount(), 1);
      +
      +    QScopedPointer layoutWindow(createView(testFile("lineLayoutHAlign.qml")));
      +    QQuickText *lineLaidOut = layoutWindow->rootObject()->findChild("myText");
      +    QVERIFY(lineLaidOut != nullptr);
      +
      +    lineLaidOut->setText("qqqqq\nqqqqq\nqqqqq");
      +    QCOMPARE(lineLaidOut->lineCount(), 3);
      +    lineLaidOut->setFontSizeMode(QQuickText::FixedSize);
      +    lineLaidOut->setText("");
      +    QCOMPARE(lineLaidOut->lineCount(), 1);
       }
       
       void tst_qquicktext::lineHeight()
      diff -Naur a/qtdeclarative/tests/auto/quick/qquickview_extra/data/qtbug_87228.qml b/qtdeclarative/tests/auto/quick/qquickview_extra/data/qtbug_87228.qml
      --- a/qtdeclarative/tests/auto/quick/qquickview_extra/data/qtbug_87228.qml	1970-01-01 01:00:00.000000000 +0100
      +++ b/qtdeclarative/tests/auto/quick/qquickview_extra/data/qtbug_87228.qml	2022-01-25 17:24:17.027378326 +0000
      @@ -0,0 +1,30 @@
      +import QtQml 2.12
      +import QtQml.Models 2.12
      +import QtQuick 2.12
      +
      +Item {
      +    height: 480
      +    width: 320
      +    Rectangle {
      +        id: rootRect
      +
      +        function addItem(desc) {
      +            myModel.append({"desc": desc});
      +        }
      +
      +        Rectangle {
      +            ListView {
      +                objectName: "listView"
      +                delegate: Text {
      +                    required property string desc
      +                    text: desc
      +                }
      +                model: ListModel { id: myModel }
      +            }
      +        }
      +
      +        Component.onCompleted: {
      +            addItem("Test creation of a delegate with a property");
      +        }
      +    }
      +}
      diff -Naur a/qtdeclarative/tests/auto/quick/qquickview_extra/qquickview_extra.pro b/qtdeclarative/tests/auto/quick/qquickview_extra/qquickview_extra.pro
      --- a/qtdeclarative/tests/auto/quick/qquickview_extra/qquickview_extra.pro	1970-01-01 01:00:00.000000000 +0100
      +++ b/qtdeclarative/tests/auto/quick/qquickview_extra/qquickview_extra.pro	2022-01-25 17:24:17.027378326 +0000
      @@ -0,0 +1,12 @@
      +CONFIG += testcase
      +TARGET = tst_qquickview_extra
      +macx:CONFIG -= app_bundle
      +
      +SOURCES += tst_qquickview_extra.cpp
      +
      +include (../../shared/util.pri)
      +include (../shared/util.pri)
      +
      +TESTDATA = data/*
      +
      +QT += core-private gui-private qml-private quick-private testlib
      diff -Naur a/qtdeclarative/tests/auto/quick/qquickview_extra/tst_qquickview_extra.cpp b/qtdeclarative/tests/auto/quick/qquickview_extra/tst_qquickview_extra.cpp
      --- a/qtdeclarative/tests/auto/quick/qquickview_extra/tst_qquickview_extra.cpp	1970-01-01 01:00:00.000000000 +0100
      +++ b/qtdeclarative/tests/auto/quick/qquickview_extra/tst_qquickview_extra.cpp	2022-01-25 17:24:17.027378326 +0000
      @@ -0,0 +1,77 @@
      +/****************************************************************************
      +**
      +** Copyright (C) 2020 The Qt Company Ltd.
      +** Contact: https://www.qt.io/licensing/
      +**
      +** This file is part of the test suite of the Qt Toolkit.
      +**
      +** $QT_BEGIN_LICENSE:GPL-EXCEPT$
      +** Commercial License Usage
      +** Licensees holding valid commercial Qt licenses may use this file in
      +** accordance with the commercial license agreement provided with the
      +** Software or, alternatively, in accordance with the terms contained in
      +** a written agreement between you and The Qt Company. For licensing terms
      +** and conditions see https://www.qt.io/terms-conditions. For further
      +** information use the contact form at https://www.qt.io/contact-us.
      +**
      +** GNU General Public License Usage
      +** Alternatively, this file may be used under the terms of the GNU
      +** General Public License version 3 as published by the Free Software
      +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
      +** included in the packaging of this file. Please review the following
      +** information to ensure the GNU General Public License requirements will
      +** be met: https://www.gnu.org/licenses/gpl-3.0.html.
      +**
      +** $QT_END_LICENSE$
      +**
      +****************************************************************************/
      +#include 
      +#include 
      +#include 
      +#include 
      +#include 
      +#include "../../shared/util.h"
      +#include 
      +#include 
      +
      +// Extra app-less tests
      +class tst_QQuickViewExtra : public QQmlDataTest
      +{
      +    Q_OBJECT
      +public:
      +    tst_QQuickViewExtra();
      +
      +private slots:
      +    void qtbug_87228();
      +};
      +
      +tst_QQuickViewExtra::tst_QQuickViewExtra() { }
      +
      +void tst_QQuickViewExtra::qtbug_87228()
      +{
      +    QScopedPointer deletionSpy;
      +    {
      +        int argc = 0;
      +        QGuiApplication app(argc, nullptr);
      +        QQuickView view;
      +
      +        view.setSource(testFileUrl("qtbug_87228.qml"));
      +        view.show();
      +        QTimer::singleShot(500, &app, QCoreApplication::quit);
      +        app.exec();
      +
      +        QObject *listView = view.findChild("listView");
      +        QVERIFY(listView);
      +        QQuickItem *contentItem = listView->property("contentItem").value();
      +        QVERIFY(contentItem);
      +        auto children = contentItem->childItems();
      +        QVERIFY(children.size() > 0);
      +        // for the sake of this test, any child would be suitable, so pick first
      +        deletionSpy.reset(new QSignalSpy(children[0], SIGNAL(destroyed(QObject *))));
      +    }
      +    QCOMPARE(deletionSpy->count(), 1);
      +}
      +
      +QTEST_APPLESS_MAIN(tst_QQuickViewExtra)
      +
      +#include "tst_qquickview_extra.moc"
      diff -Naur a/qtdeclarative/tests/auto/quick/quick.pro b/qtdeclarative/tests/auto/quick/quick.pro
      --- a/qtdeclarative/tests/auto/quick/quick.pro	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/tests/auto/quick/quick.pro	2022-01-25 17:24:17.027378326 +0000
      @@ -85,6 +85,7 @@
           qquicktextinput \
           qquickvisualdatamodel \
           qquickview \
      +    qquickview_extra \
           qquickcanvasitem \
           qquickdesignersupport \
           qquickscreen \
      diff -Naur a/qtdeclarative/tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml b/qtdeclarative/tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml
      --- a/qtdeclarative/tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml	1970-01-01 01:00:00.000000000 +0100
      +++ b/qtdeclarative/tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml	2022-01-25 17:24:17.046378258 +0000
      @@ -0,0 +1,91 @@
      +import QtQuick 2.0
      +
      +//vary font style, native rendering at non-integer offsets
      +
      +Item {
      +    id: topLevel
      +    width: 320
      +    height: 580
      +
      +    Repeater {
      +        model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken]
      +        Text {
      +            y: 20 * index
      +            clip: true
      +            renderType: Text.NativeRendering
      +            width: parent.width
      +            wrapMode: Text.Wrap
      +            font.pointSize: 10
      +            style: modelData
      +            styleColor: "green"
      +            text: "The quick fox jumps in style " + modelData
      +        }
      +    }
      +
      +    Repeater {
      +        model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken]
      +        Text {
      +            y: 100.5 + 20 * index
      +            clip: true
      +            renderType: Text.NativeRendering
      +            width: parent.width
      +            wrapMode: Text.Wrap
      +            font.pointSize: 10
      +            style: modelData
      +            styleColor: "green"
      +            text: "The quick fox jumps in style " + modelData
      +        }
      +    }
      +
      +    Repeater {
      +        model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken]
      +        Text {
      +            y: 200.5 + 20 * index
      +            x: 0.5
      +            clip: true
      +            renderType: Text.NativeRendering
      +            width: parent.width
      +            wrapMode: Text.Wrap
      +            font.pointSize: 10
      +            style: modelData
      +            styleColor: "green"
      +            text: "The quick fox jumps in style " + modelData
      +        }
      +    }
      +
      +    Repeater {
      +        model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken]
      +        Text {
      +            y: 300.5 + 20 * index
      +            x: 0.5
      +            clip: true
      +            renderType: Text.NativeRendering
      +            width: parent.width
      +            wrapMode: Text.Wrap
      +            font.pointSize: 10
      +            style: modelData
      +            styleColor: "green"
      +            text: "The quick fox jumps in style " + modelData
      +        }
      +    }
      +
      +    Repeater {
      +        model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken]
      +        Rectangle {
      +            y: 400.5 + 20 * index
      +            x: 0.5
      +            width: topLevel.width
      +            height: topLevel.height
      +            clip: true
      +            Text {
      +                renderType: Text.NativeRendering
      +                width: parent.width
      +                wrapMode: Text.Wrap
      +                font.pointSize: 10
      +                style: modelData
      +                styleColor: "green"
      +                text: "The quick fox jumps in style " + modelData
      +            }
      +        }
      +    }
      +}
      diff -Naur a/qtdeclarative/tools/qmltime/qmltime.pro b/qtdeclarative/tools/qmltime/qmltime.pro
      --- a/qtdeclarative/tools/qmltime/qmltime.pro	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtdeclarative/tools/qmltime/qmltime.pro	2022-01-25 17:24:17.029378319 +0000
      @@ -1,4 +1,3 @@
      -TEMPLATE = app
       TARGET = qmltime
       QT += qml quick
       QT += quick-private
      @@ -12,3 +11,5 @@
       
       SOURCES += qmltime.cpp
       HEADERS += qmltime.h
      +
      +load(qt_tool)
      diff -Naur a/qtdoc/doc/src/platforms/android/android-building.qdoc b/qtdoc/doc/src/platforms/android/android-building.qdoc
      --- a/qtdoc/doc/src/platforms/android/android-building.qdoc	2020-11-06 11:56:42.000000000 +0000
      +++ b/qtdoc/doc/src/platforms/android/android-building.qdoc	2022-01-25 17:24:41.897289111 +0000
      @@ -120,7 +120,7 @@
           mkdir /build-qt
           cd /build-qt
       
      -    /configure -xplatform android-clang -prefix  -disable-rpath -nomake tests -nomake examples -android-ndk /ndk/ -android-sdk  -no-warnings-are-errors
      +    /configure -xplatform android-clang -prefix  -android-ndk /ndk/ -android-sdk 
           \endcode
       
           \l{Qt Configure Options} contains more information about the configure options.
      @@ -219,7 +219,7 @@
           mkdir C:\Qt\Build\build-qt
           cd C:\Qt\Build\build-qt
       
      -    ..\Src_%VERSION%\configure.bat -platform win32-g++ -xplatform android-clang -prefix <\path\to\install> -nomake tests -nomake examples -android-sdk  -android-ndk \ndk\ -android-ndk-host windows-x86_64 -no-warnings-are-errors
      +    ..\Src_%VERSION%\configure.bat -platform win32-g++ -xplatform android-clang -prefix <\path\to\install> -android-sdk  -android-ndk \ndk\ -android-ndk-host windows-x86_64
           \endcode
       
           \l{Qt Configure Options} contains more information about the configure options.
      diff -Naur a/qtdoc/doc/src/platforms/android/android.qdoc b/qtdoc/doc/src/platforms/android/android.qdoc
      --- a/qtdoc/doc/src/platforms/android/android.qdoc	2020-11-06 11:56:42.000000000 +0000
      +++ b/qtdoc/doc/src/platforms/android/android.qdoc	2022-01-25 17:24:41.897289111 +0000
      @@ -146,16 +146,16 @@
                   Qt 5.13.2 or later
                   Qt 5.12.6 or later
               \li NDK r20b or r21
      -        \li \e android-clang
      +        \li android-clang
           \row
               \li Qt 5.12.0 to 5.12.5
                   Qt 5.13.0 to 5.13.1
               \li NDK r19c
      -        \li \e android-clang
      +        \li android-clang
           \row
               \li Qt 5.11 and earlier
               \li NDK r10e
      -        \li \e GCC toolchain
      +        \li GCC toolchain
       \endtable
       
       \li \note Qt 5.14.0 and 5.14.1 with NDK r21 have a bug fixed at \l {QTBUG-81461}.
      @@ -203,21 +203,20 @@
       \l{Android: adb}{adb} commands now and check whether your Android device
       responds to them.
       
      -\section2 Linux 64-bit
      +\section2 Linux
       
      -If you're developing on a 64-bit Linux machine, you must install the
      -following dependencies in order to run 32-bit executables like \c adb, which
      -allows Qt Creator to find devices to deploy to:
      +The following dependencies are needed for using tools such as \c adb or \c gdb which
      +can be used by Qt Creator:
       
       \badcode
      -sudo apt-get install libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386
      +sudo apt-get install libstdc++6 libncurses5
       \endcode
       
       \target emulator dependencies
       To run the Android emulator, the following dependencies are also necessary:
       
       \badcode
      -sudo apt-get install libsdl1.2debian:i386
      +sudo apt-get install libsdl1.2debian
       \endcode
       
       \section2 Qt Creator IDE
      diff -Naur a/qtdoc/doc/src/platforms/emb-linux.qdoc b/qtdoc/doc/src/platforms/emb-linux.qdoc
      --- a/qtdoc/doc/src/platforms/emb-linux.qdoc	2020-11-06 11:56:42.000000000 +0000
      +++ b/qtdoc/doc/src/platforms/emb-linux.qdoc	2022-01-25 17:24:41.896289115 +0000
      @@ -89,6 +89,9 @@
         such windows with QWidget-based content isn't supported; Qt terminates the
         application with an error message.
       
      +  Furthermore, APIs designed for desktop platforms or environments with a
      +  windowing system, such as \l{Drag and Drop}, are not supported on EGLFS.
      +
         If necessary, \c eglfs can be configured using the following environment
         variables:
       
      diff -Naur a/qtdoc/doc/src/platforms/linux.qdoc b/qtdoc/doc/src/platforms/linux.qdoc
      --- a/qtdoc/doc/src/platforms/linux.qdoc	2020-11-06 11:56:42.000000000 +0000
      +++ b/qtdoc/doc/src/platforms/linux.qdoc	2022-01-25 17:24:41.897289111 +0000
      @@ -149,43 +149,49 @@
           \li libxcb-render
           \li X C Bindings for Render extension
           \li auto-detected
      -    \li 1.9
      +    \li 1.11
           \row {id="OptionalColor"}
           \li xcb-render-util
           \li libxcb-render-util
           \li Utility library for XCB for Render extension
           \li auto-detected
      -    \li 0.3.8
      +    \li 0.3.9
           \row {id="OptionalColor"}
           \li xcb-shape
           \li libxcb-shape
           \li X C Bindings for Shape extension
           \li auto-detected
      -    \li 1.9
      +    \li 1.11
           \row {id="DefaultColor"}
           \li xcb-randr
           \li libxcb-randr
           \li X C Bindings for Resize and Rotate Extension
           \li auto-detected
      -    \li 1.9
      +    \li 1.11
           \row {id="DefaultColor"}
           \li xcb-xfixes
           \li libxcb-xfixes
           \li X C Bindings for Fixes Extension
           \li auto-detected
      -    \li 1.9
      +    \li 1.11
      +    \row {id="DefaultColor"}
      +    \li xcb-xkb
      +    \li libxcb-xkb
      +    \li X C Bindings for XKeyboard Extension
      +    \li auto-detected
      +    \li 1.11
           \row {id="DefaultColor"}
           \li xcb-sync
           \li libxcb-sync
           \li X C Bindings for Sync Extension
           \li auto-detected
      -    \li 1.9
      +    \li 1.11
           \row {id="DefaultColor"}
           \li xcb-shm
           \li libxcb-shm
           \li X C Bindings for Shared Memory Extension
           \li auto-detected
      -    \li 1.9
      +    \li 1.11
           \row {id="DefaultColor"}
           \li xcb-icccm
           \li libxcb-icccm
      @@ -204,6 +210,12 @@
           \li Utility library for XCB for XImage and XShmImage, used for QBackingStore and cursor support
           \li auto-detected
           \li 0.3.9
      +    \row {id="DefaultColor"}
      +    \li xcb-util
      +    \li libxcb-util
      +    \li Utility library for XCB for atom, aux and event
      +    \li auto-detected
      +    \li 0.3.9
       
           \row {id="OptionalColor"}
           \li xkbcommon
      @@ -247,7 +259,7 @@
           \li libxcb
           \li X C Binding library
           \li
      -    \li 1.9
      +    \li 1.11
           \row {id="DefaultColor"}
           \li X11-xcb
           \li libX11-xcb
      @@ -302,12 +314,14 @@
           \li libxcb-image0-dev
           \li libxcb-shm0-dev
           \li libxcb-icccm4-dev
      -    \li libxcb-sync0-dev
      +    \li libxcb-sync-dev
           \li libxcb-xfixes0-dev
           \li libxcb-shape0-dev
           \li libxcb-randr0-dev
           \li libxcb-render-util0-dev
      -    \li libxcd-xinerama-dev
      +    \li libxcb-util-dev
      +    \li libxcb-xinerama0-dev
      +    \li libxcb-xkb-dev
           \li libxkbcommon-dev
           \li libxkbcommon-x11-dev
           \endlist
      diff -Naur a/qtdoc/doc/src/platforms/supported-platforms.qdocinc b/qtdoc/doc/src/platforms/supported-platforms.qdocinc
      --- a/qtdoc/doc/src/platforms/supported-platforms.qdocinc	2020-11-06 11:56:42.000000000 +0000
      +++ b/qtdoc/doc/src/platforms/supported-platforms.qdocinc	2022-01-25 17:24:41.898289107 +0000
      @@ -62,9 +62,9 @@
       //! [macos]
       \table 80%
           \header \li Target Platform \li Architecture \li Build Environment
      -    \row \li \macos 10.13, 10.14, \b 10.15
      +    \row \li \macos 10.13, 10.14, \b 10.15, 11.0
               \li \c x86_64 and \c x86_64h
      -        \li Xcode 11 or \b 12 (10.15 SDK)
      +        \li Xcode \b{11 (10.15 SDK)}, 12 (11.0 SDK)
       \endtable
       //! [macos]
       
      @@ -108,9 +108,9 @@
       //! [ios]
       \table 80%
           \header \li Target Platform \li Architecture \li Build Environment \li Notes
      -    \row \li iOS 12, \b{iOS 13}
      +    \row \li iOS 12, \b{iOS 13}, iOS 14
               \li \c armv8 (\c arm64)
      -        \li \b {Xcode 11} (iOS 13.2 SDK)
      +        \li Xcode \b{11 (iOS 13.2 SDK)}, Xcode 12 (iOS 14 SDK)
               \li
           \row \li tvOS 12, tvOS 13
               \li \c armv8 (\c arm64)
      diff -Naur a/qtdoc/doc/src/platforms/webasm.qdoc b/qtdoc/doc/src/platforms/webasm.qdoc
      --- a/qtdoc/doc/src/platforms/webasm.qdoc	2020-11-06 11:56:42.000000000 +0000
      +++ b/qtdoc/doc/src/platforms/webasm.qdoc	2022-01-25 17:24:41.897289111 +0000
      @@ -114,7 +114,8 @@
           make module-qtbase module-qtdeclarative [other modules]
       \endcode
       
      -The Qt build is a static build, and does not support threads.
      +The Qt build is a static build, and does not support threads by default. Configure with  \c{-feature-thread}
      +to enable thread support.
       
       \section3 Build and run your application
       
      @@ -173,10 +174,9 @@
       
       \section1 Limitations
       
      -The most important limitation is that the Qt build is static,
      -and does not support threads.
      +The most important limitation is that the Qt build is static.
       
      -For further info, refer to \l { https://wiki.qt.io/Qt_for_WebAssembly#Known_issues_and_platform_notes}{Known_issues_and_platform_notes}.
      +For further info, refer to \l{qtwebassembly-platform-notes}
       
       \section1 External resources
       
      diff -Naur a/qtdoc/doc/src/qtmodules.qdoc b/qtdoc/doc/src/qtmodules.qdoc
      --- a/qtdoc/doc/src/qtmodules.qdoc	2020-11-06 11:56:42.000000000 +0000
      +++ b/qtdoc/doc/src/qtmodules.qdoc	2022-01-25 17:24:41.897289111 +0000
      @@ -363,11 +363,6 @@
               \li All
               \li Support for XPath, XQuery, XSLT and XML schema validation.
           \row
      -        \li \l{Qt Wayland Compositor}
      -        \li \l{Qt for Linux/X11}{Linux}
      -        \li \l{Qt for Linux/X11}{Linux} and \l{Boot2Qt}{Boot to Qt} targets.
      -        \li Provides a framework to develop a Wayland compositor.
      -    \row
           \header
               \li {4,1} \target gpl-licensed-addons
                         Add-ons available under Commercial Licenses, or GNU General
      @@ -403,6 +398,11 @@
                   well as a QML virtual keyboard. Supports localized keyboard
                   layouts and custom visual themes.
           \row
      +        \li \l{Qt Wayland Compositor}
      +        \li \l{Qt for Linux/X11}{Linux}
      +        \li \l{Qt for Linux/X11}{Linux} and \l{Boot2Qt}{Boot to Qt} targets.
      +        \li Provides a framework to develop a Wayland compositor.
      +    \row
               \li \l{Qt for WebAssembly}
               \li All
               \li Web browsers with WebAssembly support
      diff -Naur a/qtlocation/src/location/labs/qsg/qgeomapobjectqsgsupport.cpp b/qtlocation/src/location/labs/qsg/qgeomapobjectqsgsupport.cpp
      --- a/qtlocation/src/location/labs/qsg/qgeomapobjectqsgsupport.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtlocation/src/location/labs/qsg/qgeomapobjectqsgsupport.cpp	2022-01-25 17:26:28.793905614 +0000
      @@ -157,9 +157,14 @@
       {
           if (!root)
               return;
      +
      +    if (m_mapObjectsRootNode && m_mapObjectsRootNode->parent())
      +        root->appendChildNode(m_mapObjectsRootNode.get());
      +
           if (!m_mapObjectsRootNode) {
      -        m_mapObjectsRootNode = new QDeclarativePolygonMapItemPrivateOpenGL::RootNode();
      -        root->appendChildNode(m_mapObjectsRootNode);
      +        m_mapObjectsRootNode = std::make_unique();
      +        root->appendChildNode(m_mapObjectsRootNode.get());
      +        m_mapObjectsRootNode->setFlag(QSGNode::OwnedByParent, false);
           }
       
           m_mapObjectsRootNode->removeAllChildNodes();
      @@ -184,7 +189,7 @@
               MapObject &mo = m_mapObjects[i];
               QQSGMapObject *sgo = mo.sgObject;
               QSGNode *oldNode = mo.qsgNode;
      -        mo.qsgNode = sgo->updateMapObjectNode(oldNode, &mo.visibleNode, m_mapObjectsRootNode, window);
      +        mo.qsgNode = sgo->updateMapObjectNode(oldNode, &mo.visibleNode, m_mapObjectsRootNode.get(), window);
               if (Q_UNLIKELY(!mo.qsgNode)) {
                   qWarning() << "updateMapObjectNode for "<type() << " returned NULL";
               } else if (mo.visibleNode && (mo.visibleNode->visible() != mo.object->visible())) {
      @@ -200,7 +205,7 @@
               QQSGMapObject *sgo = mo.sgObject;
               QSGNode *oldNode = mo.qsgNode;
               sgo->updateGeometry(); // or subtree will be blocked
      -        mo.qsgNode = sgo->updateMapObjectNode(oldNode, &mo.visibleNode, m_mapObjectsRootNode, window);
      +        mo.qsgNode = sgo->updateMapObjectNode(oldNode, &mo.visibleNode, m_mapObjectsRootNode.get(), window);
               if (mo.qsgNode) {
                   if (mo.visibleNode && (mo.visibleNode->visible() != mo.object->visible())) {
                       mo.visibleNode->setVisible(mo.object->visible());
      diff -Naur a/qtlocation/src/location/labs/qsg/qgeomapobjectqsgsupport_p.h b/qtlocation/src/location/labs/qsg/qgeomapobjectqsgsupport_p.h
      --- a/qtlocation/src/location/labs/qsg/qgeomapobjectqsgsupport_p.h	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtlocation/src/location/labs/qsg/qgeomapobjectqsgsupport_p.h	2022-01-25 17:26:28.793905614 +0000
      @@ -59,6 +59,7 @@
       #include 
       #include 
       #include 
      +#include 
       
       QT_BEGIN_NAMESPACE
       struct Q_LOCATION_PRIVATE_EXPORT MapObject {
      @@ -85,7 +86,7 @@
           QList m_pendingMapObjects;
           QList m_removedMapObjects;
           QGeoMap *m_map = nullptr;
      -    QDeclarativePolygonMapItemPrivateOpenGL::RootNode *m_mapObjectsRootNode = nullptr;
      +    std::unique_ptr m_mapObjectsRootNode;
       };
       
       QT_END_NAMESPACE
      diff -Naur a/qtlocation/src/plugins/position/android/src/jnipositioning.cpp b/qtlocation/src/plugins/position/android/src/jnipositioning.cpp
      --- a/qtlocation/src/plugins/position/android/src/jnipositioning.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtlocation/src/plugins/position/android/src/jnipositioning.cpp	2022-01-25 17:26:28.792905618 +0000
      @@ -223,7 +223,10 @@
               if (attributeExists) {
                   mid = getCachedMethodID(jniEnv, thisClass, "getAltitude", "()D");
                   jdouble value = jniEnv->CallDoubleMethod(location, mid);
      -            coordinate.setAltitude(value);
      +            if (value != 0.0)
      +            {
      +                coordinate.setAltitude(value);
      +            }
               }
       
               info.setCoordinate(coordinate);
      @@ -239,7 +242,10 @@
               if (attributeExists) {
                   mid = getCachedMethodID(jniEnv, thisClass, "getAccuracy", "()F");
                   jfloat accuracy = jniEnv->CallFloatMethod(location, mid);
      -            info.setAttribute(QGeoPositionInfo::HorizontalAccuracy, qreal(accuracy));
      +            if (accuracy != 0.0)
      +            {
      +                info.setAttribute(QGeoPositionInfo::HorizontalAccuracy, qreal(accuracy));
      +            }
               }
       
               //vertical accuracy
      @@ -250,7 +256,10 @@
                       mid = getCachedMethodID(jniEnv, thisClass, "getVerticalAccuracyMeters", "()F");
                       if (mid) {
                           jfloat accuracy = jniEnv->CallFloatMethod(location, mid);
      -                    info.setAttribute(QGeoPositionInfo::VerticalAccuracy, qreal(accuracy));
      +                    if (accuracy != 0.0)
      +                    {
      +                        info.setAttribute(QGeoPositionInfo::VerticalAccuracy, qreal(accuracy));
      +                    }
                       }
                   }
               }
      @@ -264,7 +273,10 @@
               if (attributeExists) {
                   mid = getCachedMethodID(jniEnv, thisClass, "getSpeed", "()F");
                   jfloat speed = jniEnv->CallFloatMethod(location, mid);
      -            info.setAttribute(QGeoPositionInfo::GroundSpeed, qreal(speed));
      +            if (speed != 0)
      +            {
      +                info.setAttribute(QGeoPositionInfo::GroundSpeed, qreal(speed));
      +            }
               }
       
               //bearing
      @@ -273,7 +285,10 @@
               if (attributeExists) {
                   mid = getCachedMethodID(jniEnv, thisClass, "getBearing", "()F");
                   jfloat bearing = jniEnv->CallFloatMethod(location, mid);
      -            info.setAttribute(QGeoPositionInfo::Direction, qreal(bearing));
      +            if (bearing != 0.0)
      +            {
      +                info.setAttribute(QGeoPositionInfo::Direction, qreal(bearing));
      +            }
               }
       
               jniEnv->DeleteLocalRef(thisClass);
      diff -Naur a/qtlocation/tests/auto/qplacemanager/tst_qplacemanager.cpp b/qtlocation/tests/auto/qplacemanager/tst_qplacemanager.cpp
      --- a/qtlocation/tests/auto/qplacemanager/tst_qplacemanager.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtlocation/tests/auto/qplacemanager/tst_qplacemanager.cpp	2022-01-25 17:26:28.793905614 +0000
      @@ -108,7 +108,7 @@
           QCOMPARE(placeManager->locales().count(), 1);
           QCOMPARE(placeManager->locales().at(0), QLocale());
       
      -    QLocale locale(QLocale::Norwegian, QLocale::Norway);
      +    QLocale locale(QLocale::NorwegianBokmal, QLocale::Norway);
           placeManager->setLocale(locale);
       
           QCOMPARE(placeManager->locales().at(0), locale);
      diff -Naur a/qtlocation/tests/auto/qplacemanager_unsupported/tst_qplacemanager_unsupported.cpp b/qtlocation/tests/auto/qplacemanager_unsupported/tst_qplacemanager_unsupported.cpp
      --- a/qtlocation/tests/auto/qplacemanager_unsupported/tst_qplacemanager_unsupported.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtlocation/tests/auto/qplacemanager_unsupported/tst_qplacemanager_unsupported.cpp	2022-01-25 17:26:28.793905614 +0000
      @@ -120,7 +120,7 @@
       {
           QVERIFY(m_manager->locales().isEmpty());
       
      -    QLocale locale(QLocale::Norwegian, QLocale::Norway);
      +    QLocale locale(QLocale::NorwegianBokmal, QLocale::Norway);
           m_manager->setLocale(locale);
       
           QVERIFY(m_manager->locales().isEmpty());
      diff -Naur a/qtmultimedia/src/multimedia/video/qvideoframe.cpp b/qtmultimedia/src/multimedia/video/qvideoframe.cpp
      --- a/qtmultimedia/src/multimedia/video/qvideoframe.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtmultimedia/src/multimedia/video/qvideoframe.cpp	2022-01-25 17:27:03.441781315 +0000
      @@ -964,8 +964,6 @@
               return Format_RGB555;
           case QImage::Format_RGB888:
               return Format_RGB24;
      -    case QImage::Format_Grayscale8:
      -        return Format_Y8;
           default:
               return Format_Invalid;
           }
      @@ -1019,13 +1017,12 @@
           case Format_IMC2:
           case Format_IMC3:
           case Format_IMC4:
      +    case Format_Y8:
           case Format_Y16:
           case Format_Jpeg:
           case Format_CameraRaw:
           case Format_AdobeDng:
               return QImage::Format_Invalid;
      -    case Format_Y8:
      -        return QImage::Format_Grayscale8;
           case Format_User:
           default:
               return QImage::Format_Invalid;
      diff -Naur a/qtmultimedia/src/multimediawidgets/qpaintervideosurface.cpp b/qtmultimedia/src/multimediawidgets/qpaintervideosurface.cpp
      --- a/qtmultimedia/src/multimediawidgets/qpaintervideosurface.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtmultimedia/src/multimediawidgets/qpaintervideosurface.cpp	2022-01-25 17:27:03.441781315 +0000
      @@ -109,8 +109,7 @@
               m_imagePixelFormats << QVideoFrame::Format_RGB24;
       
            m_imagePixelFormats << QVideoFrame::Format_ARGB32
      -                         << QVideoFrame::Format_RGB565
      -                         << QVideoFrame::Format_Y8;
      +                         << QVideoFrame::Format_RGB565;
       }
       
       QList QVideoSurfaceGenericPainter::supportedPixelFormats(
      diff -Naur a/qtmultimedia/tests/auto/unit/qpaintervideosurface/tst_qpaintervideosurface.cpp b/qtmultimedia/tests/auto/unit/qpaintervideosurface/tst_qpaintervideosurface.cpp
      --- a/qtmultimedia/tests/auto/unit/qpaintervideosurface/tst_qpaintervideosurface.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtmultimedia/tests/auto/unit/qpaintervideosurface/tst_qpaintervideosurface.cpp	2022-01-25 17:27:03.441781315 +0000
      @@ -253,8 +253,8 @@
                   << QAbstractVideoBuffer::NoHandle
                   << QVideoFrame::Format_Y8
                   << QSize(640, 480)
      -            << true
      -            << true;
      +            << false
      +            << false;
           QTest::newRow("Texture: rgb32 640x480")
                   << QAbstractVideoBuffer::GLTextureHandle
                   << QVideoFrame::Format_RGB32
      diff -Naur a/qtmultimedia/tests/auto/unit/qvideoframe/tst_qvideoframe.cpp b/qtmultimedia/tests/auto/unit/qvideoframe/tst_qvideoframe.cpp
      --- a/qtmultimedia/tests/auto/unit/qvideoframe/tst_qvideoframe.cpp	2020-10-27 08:02:12.000000000 +0000
      +++ b/qtmultimedia/tests/auto/unit/qvideoframe/tst_qvideoframe.cpp	2022-01-25 17:27:03.441781315 +0000
      @@ -978,7 +978,7 @@
                   << QImage::Format_Invalid
                   << QVideoFrame::Format_IMC4;
           QTest::newRow("QVideoFrame::Format_Y8")
      -            << QImage::Format_Grayscale8
      +            << QImage::Format_Invalid
                   << QVideoFrame::Format_Y8;
           QTest::newRow("QVideoFrame::Format_Y16")
                   << QImage::Format_Invalid
      diff -Naur a/qtquickcontrols/src/dialogs/DefaultFileDialog.qml b/qtquickcontrols/src/dialogs/DefaultFileDialog.qml
      --- a/qtquickcontrols/src/dialogs/DefaultFileDialog.qml	2020-10-27 08:02:11.000000000 +0000
      +++ b/qtquickcontrols/src/dialogs/DefaultFileDialog.qml	2022-01-25 17:27:59.752579305 +0000
      @@ -115,7 +115,7 @@
       
           function dirDown(path) {
               view.selection.clear()
      -        root.folder = "file://" + path
      +        root.folder = root.pathToUrl(path)
           }
           function dirUp() {
               view.selection.clear()
      diff -Naur a/qtquickcontrols2/src/imports/controls/designer/AbstractButtonSection.qml b/qtquickcontrols2/src/imports/controls/designer/AbstractButtonSection.qml
      --- a/qtquickcontrols2/src/imports/controls/designer/AbstractButtonSection.qml	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/src/imports/controls/designer/AbstractButtonSection.qml	2022-01-25 17:27:40.289649126 +0000
      @@ -104,8 +104,8 @@
               }
       
               Label {
      -            text: qsTr("Repeat")
      -            tooltip: qsTr("Whether the button repeats while pressed and held down.")
      +            text: qsTr("Auto-Repeat")
      +            tooltip: qsTr("Whether the button repeats pressed(), released() and clicked() signals while the button is pressed and held down.")
               }
               SecondColumnLayout {
                   CheckBox {
      diff -Naur a/qtquickcontrols2/src/imports/controls/designer/ButtonSection.qml b/qtquickcontrols2/src/imports/controls/designer/ButtonSection.qml
      --- a/qtquickcontrols2/src/imports/controls/designer/ButtonSection.qml	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/src/imports/controls/designer/ButtonSection.qml	2022-01-25 17:27:40.290649122 +0000
      @@ -43,17 +43,7 @@
           caption: qsTr("Button")
       
           SectionLayout {
      -        Label {
      -            text: qsTr("AutoRepeat")
      -            tooltip: qsTr("Whether the button repeats pressed(), released() and clicked() signals while the button is pressed and held down.")
      -        }
      -        SecondColumnLayout {
      -            CheckBox {
      -                text: backendValues.autoRepeat.valueToString
      -                backendValue: backendValues.autoRepeat
      -                Layout.fillWidth: true
      -            }
      -        }
      +
               Label {
                   text: qsTr("Flat")
                   tooltip: qsTr("Whether the button is flat.")
      diff -Naur a/qtquickcontrols2/src/imports/platform/qquickplatformfiledialog.cpp b/qtquickcontrols2/src/imports/platform/qquickplatformfiledialog.cpp
      --- a/qtquickcontrols2/src/imports/platform/qquickplatformfiledialog.cpp	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/src/imports/platform/qquickplatformfiledialog.cpp	2022-01-25 17:27:40.288649129 +0000
      @@ -353,7 +353,6 @@
       }
       
       /*!
      -    \qmlpropertygroup Qt.labs.platform::FileDialog::selectedNameFilter
           \qmlproperty int Qt.labs.platform::FileDialog::selectedNameFilter.index
           \qmlproperty string Qt.labs.platform::FileDialog::selectedNameFilter.name
           \qmlproperty list Qt.labs.platform::FileDialog::selectedNameFilter.extensions
      diff -Naur a/qtquickcontrols2/src/imports/platform/qquickplatformmenu.cpp b/qtquickcontrols2/src/imports/platform/qquickplatformmenu.cpp
      --- a/qtquickcontrols2/src/imports/platform/qquickplatformmenu.cpp	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/src/imports/platform/qquickplatformmenu.cpp	2022-01-25 17:27:40.288649129 +0000
      @@ -610,10 +610,9 @@
       
       /*!
           \since Qt.labs.platform 1.1 (Qt 5.12)
      -    \qmlpropertygroup Qt.labs.platform::MenuItem::icon
      -    \qmlproperty url Qt.labs.platform::MenuItem::icon.source
      -    \qmlproperty string Qt.labs.platform::MenuItem::icon.name
      -    \qmlproperty bool Qt.labs.platform::MenuItem::icon.mask
      +    \qmlproperty url Qt.labs.platform::Menu::icon.source
      +    \qmlproperty string Qt.labs.platform::Menu::icon.name
      +    \qmlproperty bool Qt.labs.platform::Menu::icon.mask
       
           This property holds the menu item's icon.
       */
      diff -Naur a/qtquickcontrols2/src/imports/platform/qquickplatformmenuitem.cpp b/qtquickcontrols2/src/imports/platform/qquickplatformmenuitem.cpp
      --- a/qtquickcontrols2/src/imports/platform/qquickplatformmenuitem.cpp	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/src/imports/platform/qquickplatformmenuitem.cpp	2022-01-25 17:27:40.289649126 +0000
      @@ -592,7 +592,6 @@
       
       /*!
           \since Qt.labs.platform 1.1 (Qt 5.12)
      -    \qmlpropertygroup Qt.labs.platform::MenuItem::icon
           \qmlproperty url Qt.labs.platform::MenuItem::icon.source
           \qmlproperty string Qt.labs.platform::MenuItem::icon.name
           \qmlproperty bool Qt.labs.platform::MenuItem::icon.mask
      diff -Naur a/qtquickcontrols2/src/imports/platform/qquickplatformsystemtrayicon.cpp b/qtquickcontrols2/src/imports/platform/qquickplatformsystemtrayicon.cpp
      --- a/qtquickcontrols2/src/imports/platform/qquickplatformsystemtrayicon.cpp	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/src/imports/platform/qquickplatformsystemtrayicon.cpp	2022-01-25 17:27:40.289649126 +0000
      @@ -356,7 +356,6 @@
       
       /*!
           \since Qt.labs.platform 1.1 (Qt 5.12)
      -    \qmlpropertygroup Qt.labs.platform::SystemTrayIcon::icon
           \qmlproperty url Qt.labs.platform::SystemTrayIcon::icon.source
           \qmlproperty string Qt.labs.platform::SystemTrayIcon::icon.name
           \qmlproperty bool Qt.labs.platform::SystemTrayIcon::icon.mask
      diff -Naur a/qtquickcontrols2/src/quicktemplates2/qquickabstractbutton.cpp b/qtquickcontrols2/src/quicktemplates2/qquickabstractbutton.cpp
      --- a/qtquickcontrols2/src/quicktemplates2/qquickabstractbutton.cpp	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/src/quicktemplates2/qquickabstractbutton.cpp	2022-01-25 17:27:40.289649126 +0000
      @@ -736,7 +736,6 @@
       }
       
       /*!
      -    \qmlpropertygroup QtQuick.Controls::AbstractButton::icon
           \qmlproperty string QtQuick.Controls::AbstractButton::icon.name
           \qmlproperty url QtQuick.Controls::AbstractButton::icon.source
           \qmlproperty int QtQuick.Controls::AbstractButton::icon.width
      diff -Naur a/qtquickcontrols2/src/quicktemplates2/qquickaction.cpp b/qtquickcontrols2/src/quicktemplates2/qquickaction.cpp
      --- a/qtquickcontrols2/src/quicktemplates2/qquickaction.cpp	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/src/quicktemplates2/qquickaction.cpp	2022-01-25 17:27:40.291649119 +0000
      @@ -145,7 +145,7 @@
       
       void QQuickActionPrivate::ShortcutEntry::grab(const QKeySequence &shortcut, bool enabled)
       {
      -    if (shortcut.isEmpty())
      +    if (shortcut.isEmpty() || m_shortcutId)
               return;
       
           Qt::ShortcutContext context = Qt::WindowShortcut; // TODO
      @@ -381,7 +381,6 @@
       }
       
       /*!
      -    \qmlpropertygroup QtQuick.Controls::Action::icon
           \qmlproperty string QtQuick.Controls::Action::icon.name
           \qmlproperty url QtQuick.Controls::Action::icon.source
           \qmlproperty int QtQuick.Controls::Action::icon.width
      diff -Naur a/qtquickcontrols2/src/quicktemplates2/qquickcontainer.cpp b/qtquickcontrols2/src/quicktemplates2/qquickcontainer.cpp
      --- a/qtquickcontrols2/src/quicktemplates2/qquickcontainer.cpp	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/src/quicktemplates2/qquickcontainer.cpp	2022-01-25 17:27:40.290649122 +0000
      @@ -225,6 +225,7 @@
           QObject::disconnect(contentModel, &QQmlObjectModel::countChanged, q, &QQuickContainer::countChanged);
           QObject::disconnect(contentModel, &QQmlObjectModel::childrenChanged, q, &QQuickContainer::contentChildrenChanged);
           delete contentModel;
      +    contentModel = nullptr;
       }
       
       QQuickItem *QQuickContainerPrivate::itemAt(int index) const
      @@ -436,7 +437,7 @@
       void QQuickContainerPrivate::updateContentWidth()
       {
           Q_Q(QQuickContainer);
      -    if (hasContentWidth || qFuzzyCompare(contentWidth, implicitContentWidth))
      +    if (hasContentWidth || qFuzzyCompare(contentWidth, implicitContentWidth) || !contentModel)
               return;
       
           contentWidth = implicitContentWidth;
      @@ -446,7 +447,7 @@
       void QQuickContainerPrivate::updateContentHeight()
       {
           Q_Q(QQuickContainer);
      -    if (hasContentHeight || qFuzzyCompare(contentHeight, implicitContentHeight))
      +    if (hasContentHeight || qFuzzyCompare(contentHeight, implicitContentHeight) || !contentModel)
               return;
       
           contentHeight = implicitContentHeight;
      diff -Naur a/qtquickcontrols2/src/quicktemplates2/qquickdialogbuttonbox.cpp b/qtquickcontrols2/src/quicktemplates2/qquickdialogbuttonbox.cpp
      --- a/qtquickcontrols2/src/quicktemplates2/qquickdialogbuttonbox.cpp	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/src/quicktemplates2/qquickdialogbuttonbox.cpp	2022-01-25 17:27:40.290649122 +0000
      @@ -237,7 +237,7 @@
       void QQuickDialogButtonBoxPrivate::resizeContent()
       {
           Q_Q(QQuickDialogButtonBox);
      -    if (!contentItem)
      +    if (!contentItem || !contentModel)
               return;
       
           QRectF geometry = q->boundingRect().adjusted(q->leftPadding(), q->topPadding(), -q->rightPadding(), -q->bottomPadding());
      @@ -322,6 +322,9 @@
       qreal QQuickDialogButtonBoxPrivate::getContentWidth() const
       {
           Q_Q(const QQuickDialogButtonBox);
      +    if (!contentModel)
      +        return 0;
      +
           const int count = contentModel->count();
           const qreal totalSpacing = qMax(0, count - 1) * spacing;
           qreal totalWidth = totalSpacing;
      @@ -341,6 +344,9 @@
       qreal QQuickDialogButtonBoxPrivate::getContentHeight() const
       {
           Q_Q(const QQuickDialogButtonBox);
      +    if (!contentModel)
      +        return 0;
      +
           const int count = contentModel->count();
           qreal maxHeight = 0;
           for (int i = 0; i < count; ++i) {
      diff -Naur a/qtquickcontrols2/src/quicktemplates2/qquickheaderview.cpp b/qtquickcontrols2/src/quicktemplates2/qquickheaderview.cpp
      --- a/qtquickcontrols2/src/quicktemplates2/qquickheaderview.cpp	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/src/quicktemplates2/qquickheaderview.cpp	2022-01-25 17:27:40.288649129 +0000
      @@ -364,18 +364,22 @@
           return QModelIndex();
       }
       
      -QModelIndex QHeaderDataProxyModel::sibling(int row, int column, const QModelIndex &idx) const
      +QModelIndex QHeaderDataProxyModel::sibling(int row, int column, const QModelIndex &) const
       {
      -    return index(row, column, idx);
      +    return index(row, column);
       }
       
       int QHeaderDataProxyModel::rowCount(const QModelIndex &parent) const
       {
      +    if (parent.isValid())
      +        return 0;
           return m_model.isNull() ? -1 : (m_orientation == Qt::Horizontal ? 1 : m_model->rowCount(parent));
       }
       
       int QHeaderDataProxyModel::columnCount(const QModelIndex &parent) const
       {
      +    if (parent.isValid())
      +        return 0;
           return m_model.isNull() ? -1 : (m_orientation == Qt::Vertical ? 1 : m_model->columnCount(parent));
       }
       
      @@ -401,7 +405,8 @@
       
       bool QHeaderDataProxyModel::hasChildren(const QModelIndex &parent) const
       {
      -    Q_UNUSED(parent)
      +    if (!parent.isValid())
      +        return rowCount(parent) > 0 && columnCount(parent) > 0;
           return false;
       }
       
      diff -Naur a/qtquickcontrols2/src/quicktemplates2/qquickoverlay.cpp b/qtquickcontrols2/src/quicktemplates2/qquickoverlay.cpp
      --- a/qtquickcontrols2/src/quicktemplates2/qquickoverlay.cpp	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/src/quicktemplates2/qquickoverlay.cpp	2022-01-25 17:27:40.290649122 +0000
      @@ -399,8 +399,11 @@
           Q_D(QQuickOverlay);
           QQuickItem::itemChange(change, data);
       
      -    if (change == ItemChildAddedChange || change == ItemChildRemovedChange)
      +    if (change == ItemChildAddedChange || change == ItemChildRemovedChange) {
               setVisible(!d->allDrawers.isEmpty() || !childItems().isEmpty());
      +        if (data.item->parent() == d->mouseGrabberPopup)
      +            d->setMouseGrabberPopup(nullptr);
      +    }
       }
       
       void QQuickOverlay::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
      diff -Naur a/qtquickcontrols2/src/quicktemplates2/qquickpopup.cpp b/qtquickcontrols2/src/quicktemplates2/qquickpopup.cpp
      --- a/qtquickcontrols2/src/quicktemplates2/qquickpopup.cpp	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/src/quicktemplates2/qquickpopup.cpp	2022-01-25 17:27:40.289649126 +0000
      @@ -575,7 +575,6 @@
       
       /*!
           \since QtQuick.Controls 2.5 (Qt 5.12)
      -    \qmlpropertygroup QtQuick.Controls::Popup::anchors
           \qmlproperty Object QtQuick.Controls::Popup::anchors.centerIn
       
           Anchors provide a way to position an item by specifying its
      diff -Naur a/qtquickcontrols2/src/quicktemplates2/qquickrangeslider.cpp b/qtquickcontrols2/src/quicktemplates2/qquickrangeslider.cpp
      --- a/qtquickcontrols2/src/quicktemplates2/qquickrangeslider.cpp	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/src/quicktemplates2/qquickrangeslider.cpp	2022-01-25 17:27:40.289649126 +0000
      @@ -746,7 +746,6 @@
       }
       
       /*!
      -    \qmlpropertygroup QtQuick.Controls::RangeSlider::first
           \qmlproperty real QtQuick.Controls::RangeSlider::first.value
           \qmlproperty real QtQuick.Controls::RangeSlider::first.position
           \qmlproperty real QtQuick.Controls::RangeSlider::first.visualPosition
      @@ -825,7 +824,6 @@
       */
       
       /*!
      -    \qmlpropertygroup QtQuick.Controls::RangeSlider::second
           \qmlproperty real QtQuick.Controls::RangeSlider::second.value
           \qmlproperty real QtQuick.Controls::RangeSlider::second.position
           \qmlproperty real QtQuick.Controls::RangeSlider::second.visualPosition
      diff -Naur a/qtquickcontrols2/src/quicktemplates2/qquickspinbox.cpp b/qtquickcontrols2/src/quicktemplates2/qquickspinbox.cpp
      --- a/qtquickcontrols2/src/quicktemplates2/qquickspinbox.cpp	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/src/quicktemplates2/qquickspinbox.cpp	2022-01-25 17:27:40.289649126 +0000
      @@ -726,7 +726,6 @@
       }
       
       /*!
      -    \qmlpropertygroup QtQuick.Controls::SpinBox::up
           \qmlproperty bool QtQuick.Controls::SpinBox::up.pressed
           \qmlproperty Item QtQuick.Controls::SpinBox::up.indicator
           \qmlproperty bool QtQuick.Controls::SpinBox::up.hovered
      @@ -747,7 +746,6 @@
       }
       
       /*!
      -    \qmlpropertygroup QtQuick.Controls::SpinBox::down
           \qmlproperty bool QtQuick.Controls::SpinBox::down.pressed
           \qmlproperty Item QtQuick.Controls::SpinBox::down.indicator
           \qmlproperty bool QtQuick.Controls::SpinBox::down.hovered
      diff -Naur a/qtquickcontrols2/src/quicktemplates2/qquicksplitview.cpp b/qtquickcontrols2/src/quicktemplates2/qquicksplitview.cpp
      --- a/qtquickcontrols2/src/quicktemplates2/qquicksplitview.cpp	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/src/quicktemplates2/qquicksplitview.cpp	2022-01-25 17:27:40.288649129 +0000
      @@ -49,7 +49,7 @@
       
       /*!
           \qmltype SplitView
      -    \inherits Control
      +    \inherits Container
       //!     \instantiates QQuickSplitView
           \inqmlmodule QtQuick.Controls
           \since 5.13
      diff -Naur a/qtquickcontrols2/src/quicktemplates2/qquickswipedelegate.cpp b/qtquickcontrols2/src/quicktemplates2/qquickswipedelegate.cpp
      --- a/qtquickcontrols2/src/quicktemplates2/qquickswipedelegate.cpp	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/src/quicktemplates2/qquickswipedelegate.cpp	2022-01-25 17:27:40.289649126 +0000
      @@ -1025,7 +1025,6 @@
       */
       
       /*!
      -    \qmlpropertygroup QtQuick.Controls::SwipeDelegate::swipe
           \qmlproperty real QtQuick.Controls::SwipeDelegate::swipe.position
           \qmlproperty bool QtQuick.Controls::SwipeDelegate::swipe.complete
           \qmlproperty bool QtQuick.Controls::SwipeDelegate::swipe.enabled
      diff -Naur a/qtquickcontrols2/tests/auto/qquickheaderview/tst_qquickheaderview.cpp b/qtquickcontrols2/tests/auto/qquickheaderview/tst_qquickheaderview.cpp
      --- a/qtquickcontrols2/tests/auto/qquickheaderview/tst_qquickheaderview.cpp	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/tests/auto/qquickheaderview/tst_qquickheaderview.cpp	2022-01-25 17:27:40.288649129 +0000
      @@ -58,8 +58,10 @@
           {
           }
       
      -    int rowCount(const QModelIndex & = QModelIndex()) const override
      +    int rowCount(const QModelIndex &index = QModelIndex()) const override
           {
      +        if (index.isValid())
      +            return 0;
               return m_rows;
           }
           virtual void setRowCount(int count)
      @@ -70,8 +72,10 @@
               endResetModel();
           }
       
      -    int columnCount(const QModelIndex & = QModelIndex()) const override
      +    int columnCount(const QModelIndex &index = QModelIndex()) const override
           {
      +        if (index.isValid())
      +            return 0;
               return m_cols;
           }
           virtual void setColumnCount(int count)
      diff -Naur a/qtquickcontrols2/tests/auto/qquickpopup/data/releaseAfterExitTransition.qml b/qtquickcontrols2/tests/auto/qquickpopup/data/releaseAfterExitTransition.qml
      --- a/qtquickcontrols2/tests/auto/qquickpopup/data/releaseAfterExitTransition.qml	1970-01-01 01:00:00.000000000 +0100
      +++ b/qtquickcontrols2/tests/auto/qquickpopup/data/releaseAfterExitTransition.qml	2022-01-25 17:27:40.290649122 +0000
      @@ -0,0 +1,78 @@
      +/****************************************************************************
      +**
      +** Copyright (C) 2021 The Qt Company Ltd.
      +** Contact: https://www.qt.io/licensing/
      +**
      +** This file is part of the test suite of the Qt Toolkit.
      +**
      +** $QT_BEGIN_LICENSE:BSD$
      +** Commercial License Usage
      +** Licensees holding valid commercial Qt licenses may use this file in
      +** accordance with the commercial license agreement provided with the
      +** Software or, alternatively, in accordance with the terms contained in
      +** a written agreement between you and The Qt Company. For licensing terms
      +** and conditions see https://www.qt.io/terms-conditions. For further
      +** information use the contact form at https://www.qt.io/contact-us.
      +**
      +** BSD License Usage
      +** Alternatively, you may use this file under the terms of the BSD license
      +** as follows:
      +**
      +** "Redistribution and use in source and binary forms, with or without
      +** modification, are permitted provided that the following conditions are
      +** met:
      +**   * Redistributions of source code must retain the above copyright
      +**     notice, this list of conditions and the following disclaimer.
      +**   * Redistributions in binary form must reproduce the above copyright
      +**     notice, this list of conditions and the following disclaimer in
      +**     the documentation and/or other materials provided with the
      +**     distribution.
      +**   * Neither the name of The Qt Company Ltd nor the names of its
      +**     contributors may be used to endorse or promote products derived
      +**     from this software without specific prior written permission.
      +**
      +**
      +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
      +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
      +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
      +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
      +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
      +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
      +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
      +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
      +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
      +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
      +**
      +** $QT_END_LICENSE$
      +**
      +****************************************************************************/
      +
      +import QtQuick 2.15
      +import QtQuick.Controls 2.15
      +
      +ApplicationWindow {
      +    id: window
      +    width: 400
      +    height: 400
      +    title: "releaseAfterExitTransition"
      +
      +    property alias popup: popup
      +    property alias modalPopup: modalPopup
      +
      +    Popup {
      +        id: popup
      +        y: parent.height - height
      +        width: 50
      +        height: 50
      +    }
      +
      +    Popup {
      +        id: modalPopup
      +        modal: true
      +        y: parent.height - height
      +        width: 50
      +        height: 50
      +        exit:  Transition { PauseAnimation { duration: 100 } }
      +    }
      +}
      diff -Naur a/qtquickcontrols2/tests/auto/qquickpopup/tst_qquickpopup.cpp b/qtquickcontrols2/tests/auto/qquickpopup/tst_qquickpopup.cpp
      --- a/qtquickcontrols2/tests/auto/qquickpopup/tst_qquickpopup.cpp	2020-10-27 08:02:10.000000000 +0000
      +++ b/qtquickcontrols2/tests/auto/qquickpopup/tst_qquickpopup.cpp	2022-01-25 17:27:40.290649122 +0000
      @@ -96,6 +96,7 @@
           void tabFence();
           void invisibleToolTipOpen();
           void centerInOverlayWithinStackViewItem();
      +    void releaseAfterExitTransition();
       };
       
       void tst_QQuickPopup::initTestCase()
      @@ -1429,6 +1430,34 @@
           // Shouldn't crash on exit.
       }
       
      +
      +void tst_QQuickPopup::releaseAfterExitTransition()
      +{
      +    QQuickApplicationHelper helper(this, "releaseAfterExitTransition.qml");
      +    QVERIFY2(helper.ready, helper.failureMessage());
      +
      +    QQuickWindow *window = helper.window;
      +    window->show();
      +    QVERIFY(QTest::qWaitForWindowActive(window));
      +
      +    QQuickOverlay *overlay = QQuickOverlay::overlay(window);
      +    QQuickPopup *modalPopup = window->property("modalPopup").value();
      +    QQuickPopup *popup = window->property("popup").value();
      +
      +    modalPopup->open();
      +    QTRY_VERIFY(modalPopup->isOpened());
      +
      +    QTest::mousePress(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1));
      +    // wait until the transition is finished and the overlay hides itself
      +    QTRY_VERIFY(!overlay->isVisible());
      +    QTest::mouseRelease(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1));
      +
      +    popup->open();
      +    QTRY_VERIFY(popup->isOpened());
      +    QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1));
      +    QTRY_VERIFY(!popup->isOpened());
      +}
      +
       QTEST_QUICKCONTROLS_MAIN(tst_QQuickPopup)
       
       #include "tst_qquickpopup.moc"
      diff -Naur a/qtsvg/src/plugins/imageformats/svg/qsvgiohandler.cpp b/qtsvg/src/plugins/imageformats/svg/qsvgiohandler.cpp
      --- a/qtsvg/src/plugins/imageformats/svg/qsvgiohandler.cpp	2020-10-27 08:02:11.000000000 +0000
      +++ b/qtsvg/src/plugins/imageformats/svg/qsvgiohandler.cpp	2022-01-25 17:28:54.994381129 +0000
      @@ -118,6 +118,24 @@
           delete d;
       }
       
      +static bool isPossiblySvg(QIODevice *device, bool *isCompressed = nullptr)
      +{
      +    constexpr int bufSize = 64;
      +    char buf[bufSize];
      +    const qint64 readLen = device->peek(buf, bufSize);
      +    if (readLen < 8)
      +        return false;
      +#    ifndef QT_NO_COMPRESS
      +    if (quint8(buf[0]) == 0x1f && quint8(buf[1]) == 0x8b) {
      +        if (isCompressed)
      +            *isCompressed = true;
      +        return true;
      +    }
      +#    endif
      +    QTextStream str(QByteArray::fromRawData(buf, readLen));
      +    QByteArray ba = str.read(16).trimmed().toLatin1();
      +    return ba.startsWith("loaded && !d->readDone)
               return true;        // Will happen if we have been asked for the size
       
      -    QByteArray buf = device()->peek(16);
      -#ifndef QT_NO_COMPRESS
      -    if (buf.startsWith("\x1f\x8b")) {
      -        setFormat("svgz");
      -        return true;
      -    } else
      -#endif
      -    if (buf.contains(" 0xffff)
      +                return false; // Assume corrupted file
                   image->fill(d->backColor.rgba());
                   QPainter p(image);
                   d->r.render(&p, bounds);
      @@ -260,12 +274,7 @@
       
       bool QSvgIOHandler::canRead(QIODevice *device)
       {
      -    QByteArray buf = device->peek(16);
      -    return
      -#ifndef QT_NO_COMPRESS
      -            buf.startsWith("\x1f\x8b") ||
      -#endif
      -            buf.contains("
       
       QT_BEGIN_NAMESPACE
       
      @@ -672,6 +673,9 @@
                   val = -val;
           } else {
               val = QByteArray::fromRawData(temp, pos).toDouble();
      +        // Do not tolerate values too wild to be represented normally by floats
      +        if (qFpClassify(float(val)) != FP_NORMAL)
      +            val = 0;
           }
           return val;
       
      @@ -724,15 +728,25 @@
           return points;
       }
       
      -static inline void parseNumbersArray(const QChar *&str, QVarLengthArray &points)
      +static inline void parseNumbersArray(const QChar *&str, QVarLengthArray &points,
      +                                     const char *pattern = nullptr)
       {
      +    const size_t patternLen = qstrlen(pattern);
           while (str->isSpace())
               ++str;
           while (isDigit(str->unicode()) ||
                  *str == QLatin1Char('-') || *str == QLatin1Char('+') ||
                  *str == QLatin1Char('.')) {
       
      -        points.append(toDouble(str));
      +        if (patternLen && pattern[points.size() % patternLen] == 'f') {
      +            // flag expected, may only be 0 or 1
      +            if (*str != QLatin1Char('0') && *str != QLatin1Char('1'))
      +                return;
      +            points.append(*str == QLatin1Char('0') ? 0.0 : 1.0);
      +            ++str;
      +        } else {
      +            points.append(toDouble(str));
      +        }
       
               while (str->isSpace())
                   ++str;
      @@ -1379,8 +1393,10 @@
               case FontSizeNone:
                   break;
               case FontSizeValue: {
      -            QSvgHandler::LengthType dummy; // should always be pixel size
      -            fontStyle->setSize(parseLength(attributes.fontSize, dummy, handler));
      +            QSvgHandler::LengthType type;
      +            qreal fs = parseLength(attributes.fontSize, type, handler);
      +            fs = convertToPixels(fs, true, type);
      +            fontStyle->setSize(qMin(fs, qreal(0xffff)));
               }
                   break;
               default:
      @@ -1611,6 +1627,7 @@
       
       static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
       {
      +    const int maxElementCount = 0x7fff; // Assume file corruption if more path elements than this
           qreal x0 = 0, y0 = 0;              // starting point
           qreal x = 0, y = 0;                // current point
           char lastMode = 0;
      @@ -1618,28 +1635,31 @@
           const QChar *str = dataStr.constData();
           const QChar *end = str + dataStr.size();
       
      -    while (str != end) {
      +    bool ok = true;
      +    while (ok && str != end) {
               while (str->isSpace() && (str + 1) != end)
                   ++str;
               QChar pathElem = *str;
               ++str;
               QChar endc = *end;
               *const_cast(end) = 0; // parseNumbersArray requires 0-termination that QStringRef cannot guarantee
      +        const char *pattern = nullptr;
      +        if (pathElem == QLatin1Char('a') || pathElem == QLatin1Char('A'))
      +            pattern = "rrrffrr";
               QVarLengthArray arg;
      -        parseNumbersArray(str, arg);
      +        parseNumbersArray(str, arg, pattern);
               *const_cast(end) = endc;
               if (pathElem == QLatin1Char('z') || pathElem == QLatin1Char('Z'))
                   arg.append(0);//dummy
               const qreal *num = arg.constData();
               int count = arg.count();
      -        while (count > 0) {
      +        while (ok && count > 0) {
                   qreal offsetX = x;        // correction offsets
                   qreal offsetY = y;        // for relative commands
                   switch (pathElem.unicode()) {
                   case 'm': {
                       if (count < 2) {
      -                    num++;
      -                    count--;
      +                    ok = false;
                           break;
                       }
                       x = x0 = num[0] + offsetX;
      @@ -1656,8 +1676,7 @@
                       break;
                   case 'M': {
                       if (count < 2) {
      -                    num++;
      -                    count--;
      +                    ok = false;
                           break;
                       }
                       x = x0 = num[0];
      @@ -1683,8 +1702,7 @@
                       break;
                   case 'l': {
                       if (count < 2) {
      -                    num++;
      -                    count--;
      +                    ok = false;
                           break;
                       }
                       x = num[0] + offsetX;
      @@ -1697,8 +1715,7 @@
                       break;
                   case 'L': {
                       if (count < 2) {
      -                    num++;
      -                    count--;
      +                    ok = false;
                           break;
                       }
                       x = num[0];
      @@ -1738,8 +1755,7 @@
                       break;
                   case 'c': {
                       if (count < 6) {
      -                    num += count;
      -                    count = 0;
      +                    ok = false;
                           break;
                       }
                       QPointF c1(num[0] + offsetX, num[1] + offsetY);
      @@ -1755,8 +1771,7 @@
                   }
                   case 'C': {
                       if (count < 6) {
      -                    num += count;
      -                    count = 0;
      +                    ok = false;
                           break;
                       }
                       QPointF c1(num[0], num[1]);
      @@ -1772,8 +1787,7 @@
                   }
                   case 's': {
                       if (count < 4) {
      -                    num += count;
      -                    count = 0;
      +                    ok = false;
                           break;
                       }
                       QPointF c1;
      @@ -1794,8 +1808,7 @@
                   }
                   case 'S': {
                       if (count < 4) {
      -                    num += count;
      -                    count = 0;
      +                    ok = false;
                           break;
                       }
                       QPointF c1;
      @@ -1816,8 +1829,7 @@
                   }
                   case 'q': {
                       if (count < 4) {
      -                    num += count;
      -                    count = 0;
      +                    ok = false;
                           break;
                       }
                       QPointF c(num[0] + offsetX, num[1] + offsetY);
      @@ -1832,8 +1844,7 @@
                   }
                   case 'Q': {
                       if (count < 4) {
      -                    num += count;
      -                    count = 0;
      +                    ok = false;
                           break;
                       }
                       QPointF c(num[0], num[1]);
      @@ -1848,8 +1859,7 @@
                   }
                   case 't': {
                       if (count < 2) {
      -                    num += count;
      -                    count = 0;
      +                    ok = false;
                           break;
                       }
                       QPointF e(num[0] + offsetX, num[1] + offsetY);
      @@ -1869,8 +1879,7 @@
                   }
                   case 'T': {
                       if (count < 2) {
      -                    num += count;
      -                    count = 0;
      +                    ok = false;
                           break;
                       }
                       QPointF e(num[0], num[1]);
      @@ -1890,8 +1899,7 @@
                   }
                   case 'a': {
                       if (count < 7) {
      -                    num += count;
      -                    count = 0;
      +                    ok = false;
                           break;
                       }
                       qreal rx = (*num++);
      @@ -1913,8 +1921,7 @@
                       break;
                   case 'A': {
                       if (count < 7) {
      -                    num += count;
      -                    count = 0;
      +                    ok = false;
                           break;
                       }
                       qreal rx = (*num++);
      @@ -1935,12 +1942,15 @@
                   }
                       break;
                   default:
      -                return false;
      +                ok = false;
      +                break;
                   }
                   lastMode = pathElem.toLatin1();
      +            if (path.elementCount() > maxElementCount)
      +                ok = false;
               }
           }
      -    return true;
      +    return ok;
       }
       
       static bool parseStyle(QSvgNode *node,
      @@ -2354,6 +2364,27 @@
           return true;
       }
       
      +static int parseClockValue(QString str, bool *ok)
      +{
      +    int res = 0;
      +    int ms = 1000;
      +    str = str.trimmed();
      +    if (str.endsWith(QLatin1String("ms"))) {
      +        str.chop(2);
      +        ms = 1;
      +    } else if (str.endsWith(QLatin1String("s"))) {
      +        str.chop(1);
      +    }
      +    double val = ms * toDouble(str, ok);
      +    if (ok) {
      +        if (val > std::numeric_limits::min() && val < std::numeric_limits::max())
      +            res = static_cast(val);
      +        else
      +            *ok = false;
      +    }
      +    return res;
      +}
      +
       static bool parseAnimateColorNode(QSvgNode *parent,
                                         const QXmlStreamAttributes &attributes,
                                         QSvgHandler *handler)
      @@ -2387,23 +2418,13 @@
               }
           }
       
      -    int ms = 1000;
      -    beginStr = beginStr.trimmed();
      -    if (beginStr.endsWith(QLatin1String("ms"))) {
      -        beginStr.chop(2);
      -        ms = 1;
      -    } else if (beginStr.endsWith(QLatin1String("s"))) {
      -        beginStr.chop(1);
      -    }
      -    durStr = durStr.trimmed();
      -    if (durStr.endsWith(QLatin1String("ms"))) {
      -        durStr.chop(2);
      -        ms = 1;
      -    } else if (durStr.endsWith(QLatin1String("s"))) {
      -        durStr.chop(1);
      -    }
      -    int begin = static_cast(toDouble(beginStr) * ms);
      -    int end   = static_cast((toDouble(durStr) + begin) * ms);
      +    bool ok = true;
      +    int begin = parseClockValue(beginStr, &ok);
      +    if (!ok)
      +        return false;
      +    int end = begin + parseClockValue(durStr, &ok);
      +    if (!ok || end <= begin)
      +        return false;
       
           QSvgAnimateColor *anim = new QSvgAnimateColor(begin, end, 0);
           anim->setArgs((targetStr == QLatin1String("fill")), colors);
      @@ -2493,24 +2514,13 @@
               }
           }
       
      -    int ms = 1000;
      -    beginStr = beginStr.trimmed();
      -    if (beginStr.endsWith(QLatin1String("ms"))) {
      -        beginStr.chop(2);
      -        ms = 1;
      -    } else if (beginStr.endsWith(QLatin1String("s"))) {
      -        beginStr.chop(1);
      -    }
      -    int begin = static_cast(toDouble(beginStr) * ms);
      -    durStr = durStr.trimmed();
      -    if (durStr.endsWith(QLatin1String("ms"))) {
      -        durStr.chop(2);
      -        ms = 1;
      -    } else if (durStr.endsWith(QLatin1String("s"))) {
      -        durStr.chop(1);
      -        ms = 1000;
      -    }
      -    int end = static_cast(toDouble(durStr)*ms) + begin;
      +    bool ok = true;
      +    int begin = parseClockValue(beginStr, &ok);
      +    if (!ok)
      +        return false;
      +    int end = begin + parseClockValue(durStr, &ok);
      +    if (!ok || end <= begin)
      +        return false;
       
           QSvgAnimateTransform::TransformType type = QSvgAnimateTransform::Empty;
           if (typeStr == QLatin1String("translate")) {
      @@ -2566,6 +2576,8 @@
           qreal ncx = toDouble(cx);
           qreal ncy = toDouble(cy);
           qreal nr  = toDouble(r);
      +    if (nr < 0.0)
      +        return nullptr;
       
           QRectF rect(ncx-nr, ncy-nr, nr*2, nr*2);
           QSvgNode *circle = new QSvgCircle(parent, rect);
      @@ -2976,8 +2988,8 @@
       
           QPainterPath qpath;
           qpath.setFillRule(Qt::WindingFill);
      -    //XXX do error handling
      -    parsePathDataFast(data, qpath);
      +    if (!parsePathDataFast(data, qpath))
      +        qCWarning(lcSvgHandler, "Invalid path data; path truncated.");
       
           QSvgNode *path = new QSvgPath(parent, qpath);
           return path;
      @@ -3036,13 +3048,16 @@
       
           qreal ncx = 0.5;
           qreal ncy = 0.5;
      -    qreal nr  = 0.5;
           if (!cx.isEmpty())
               ncx = toDouble(cx);
           if (!cy.isEmpty())
               ncy = toDouble(cy);
      +
      +    qreal nr = 0.0;
           if (!r.isEmpty())
               nr = toDouble(r);
      +    if (nr <= 0.0)
      +        return nullptr;
       
           qreal nfx = ncx;
           if (!fx.isEmpty())
      @@ -3338,7 +3353,9 @@
           //### editable and rotate not handled
           QSvgHandler::LengthType type;
           qreal nx = parseLength(x, type, handler);
      +    nx = convertToPixels(nx, true, type);
           qreal ny = parseLength(y, type, handler);
      +    ny = convertToPixels(ny, true, type);
       
           QSvgNode *text = new QSvgText(parent, QPointF(nx, ny));
           return text;
      @@ -3679,9 +3696,7 @@
               case QXmlStreamReader::EndElement:
                   endElement(xml->name());
                   ++remainingUnfinishedElements;
      -            // if we are using somebody else's qxmlstreamreader
      -            // we should not read until the end of the stream
      -            done = !m_ownsReader && (xml->name() == QLatin1String("svg"));
      +            done = (xml->name() == QLatin1String("svg"));
                   break;
               case QXmlStreamReader::Characters:
                   characters(xml->text());
      diff -Naur a/qtsvg/src/svg/qsvgstructure.cpp b/qtsvg/src/svg/qsvgstructure.cpp
      --- a/qtsvg/src/svg/qsvgstructure.cpp	2020-10-27 08:02:11.000000000 +0000
      +++ b/qtsvg/src/svg/qsvgstructure.cpp	2022-01-25 17:28:54.985381161 +0000
      @@ -255,9 +255,13 @@
           };
       
           if (str.length() <= MAX_WORD_LENGTH && str.length() >= MIN_WORD_LENGTH) {
      +        const char16_t unicode44 = str.at(44).unicode();
      +        const char16_t unicode45 = str.at(45).unicode();
      +        if (unicode44 >= sizeof(asso_values) || unicode45 >= sizeof(asso_values))
      +            return false;
               const int key = str.length()
      -                        + asso_values[str.at(45).unicode()]
      -                        + asso_values[str.at(44).unicode()];
      +                        + asso_values[unicode45]
      +                        + asso_values[unicode44];
               if (key <= MAX_HASH_VALUE && key >= 0)
                   return str == QLatin1String(wordlist[key]);
           }
      diff -Naur a/qtsvg/tests/auto/qsvgplugin/simple_Utf8.svg b/qtsvg/tests/auto/qsvgplugin/simple_Utf8.svg
      --- a/qtsvg/tests/auto/qsvgplugin/simple_Utf8.svg	1970-01-01 01:00:00.000000000 +0100
      +++ b/qtsvg/tests/auto/qsvgplugin/simple_Utf8.svg	2022-01-25 17:28:54.986381157 +0000
      @@ -0,0 +1,3 @@
      +
      +  
      +
      diff -Naur a/qtsvg/tests/auto/qsvgplugin/tst_qsvgplugin.cpp b/qtsvg/tests/auto/qsvgplugin/tst_qsvgplugin.cpp
      --- a/qtsvg/tests/auto/qsvgplugin/tst_qsvgplugin.cpp	2020-10-27 08:02:11.000000000 +0000
      +++ b/qtsvg/tests/auto/qsvgplugin/tst_qsvgplugin.cpp	2022-01-25 17:28:54.986381157 +0000
      @@ -61,6 +61,8 @@
           void checkSize_data();
           void checkSize();
           void checkImageInclude();
      +    void encodings_data();
      +    void encodings();
       };
       
       
      @@ -145,6 +147,36 @@
           logMessages.clear();
       }
       
      +void tst_QSvgPlugin::encodings_data()
      +{
      +    QTest::addColumn("filename");
      +
      +    QTest::newRow("utf-8") << QFINDTESTDATA("simple_Utf8.svg");
      +    QTest::newRow("utf-16LE") << QFINDTESTDATA("simple_Utf16LE.svg");
      +    QTest::newRow("utf-16BE") << QFINDTESTDATA("simple_Utf16BE.svg");
      +    QTest::newRow("utf-32LE") << QFINDTESTDATA("simple_Utf32LE.svg");
      +    QTest::newRow("utf-32BE") << QFINDTESTDATA("simple_Utf32BE.svg");
      +}
      +
      +void tst_QSvgPlugin::encodings()
      +{
      +    QFETCH(QString, filename);
      +
      +    {
      +        QFile file(filename);
      +        file.open(QIODevice::ReadOnly);
      +        QVERIFY(QSvgIOHandler::canRead(&file));
      +    }
      +
      +    QFile file(filename);
      +    file.open(QIODevice::ReadOnly);
      +    QSvgIOHandler plugin;
      +    plugin.setDevice(&file);
      +    QVERIFY(plugin.canRead());
      +    QImage img;
      +    QVERIFY(plugin.read(&img));
      +    QCOMPARE(img.size(), QSize(50, 50));
      +}
       
       QTEST_MAIN(tst_QSvgPlugin)
       #include "tst_qsvgplugin.moc"
      diff -Naur a/qtsvg/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp b/qtsvg/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
      --- a/qtsvg/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp	2020-10-27 08:02:11.000000000 +0000
      +++ b/qtsvg/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp	2022-01-25 17:28:54.993381132 +0000
      @@ -74,6 +74,7 @@
           void fillRule();
           void opacity();
           void paths();
      +    void paths2();
           void displayMode();
           void strokeInherit();
           void testFillInheritance();
      @@ -1047,6 +1048,19 @@
           }
       }
       
      +void tst_QSvgRenderer::paths2()
      +{
      +    const char *svg =
      +        ""
      +            ""
      +        "";
      +
      +    QByteArray data(svg);
      +    QSvgRenderer renderer(data);
      +    QVERIFY(renderer.isValid());
      +    QCOMPARE(renderer.boundsOnElement(QLatin1String("path1")).toRect(), QRect(3, 8, 10, 5));
      +}
      +
       void tst_QSvgRenderer::displayMode()
       {
           static const char *svgs[] = {
      diff -Naur a/qttools/src/assistant/help/qhelpcollectionhandler.cpp b/qttools/src/assistant/help/qhelpcollectionhandler.cpp
      --- a/qttools/src/assistant/help/qhelpcollectionhandler.cpp	2020-10-22 18:11:38.000000000 +0100
      +++ b/qttools/src/assistant/help/qhelpcollectionhandler.cpp	2022-01-25 17:29:23.288279628 +0000
      @@ -2197,7 +2197,15 @@
           m_query->addBindValue(fileName);
           const QFileInfo fi(absoluteDocPath(fileName));
           m_query->addBindValue(fi.size());
      -    m_query->addBindValue(fi.lastModified().toString(Qt::ISODate));
      +    QDateTime lastModified = fi.lastModified();
      +    if (qEnvironmentVariableIsSet("SOURCE_DATE_EPOCH")) {
      +        const QString sourceDateEpochStr = qEnvironmentVariable("SOURCE_DATE_EPOCH");
      +        bool ok;
      +        const qlonglong sourceDateEpoch = sourceDateEpochStr.toLongLong(&ok);
      +        if (ok && sourceDateEpoch < lastModified.toSecsSinceEpoch())
      +            lastModified.setSecsSinceEpoch(sourceDateEpoch);
      +    }
      +    m_query->addBindValue(lastModified.toString(Qt::ISODate));
           if (!m_query->exec())
               return false;
       
      diff -Naur a/qttools/src/linguist/Qt5LinguistToolsMacros.cmake b/qttools/src/linguist/Qt5LinguistToolsMacros.cmake
      --- a/qttools/src/linguist/Qt5LinguistToolsMacros.cmake	2020-10-22 18:11:38.000000000 +0100
      +++ b/qttools/src/linguist/Qt5LinguistToolsMacros.cmake	2022-01-25 17:29:23.288279628 +0000
      @@ -41,6 +41,17 @@
           set(_lupdate_files ${_LUPDATE_UNPARSED_ARGUMENTS})
           set(_lupdate_options ${_LUPDATE_OPTIONS})
       
      +    list(FIND _lupdate_options "-extensions" _extensions_index)
      +    if(_extensions_index GREATER -1)
      +        math(EXPR _extensions_index "${_extensions_index} + 1")
      +        list(GET _lupdate_options ${_extensions_index} _extensions_list)
      +        string(REPLACE "," ";" _extensions_list "${_extensions_list}")
      +        list(TRANSFORM _extensions_list STRIP)
      +        list(TRANSFORM _extensions_list REPLACE "^\." "")
      +        list(TRANSFORM _extensions_list PREPEND "*.")
      +    else()
      +        set(_extensions_list "*.java;*.jui;*.ui;*.c;*.c++;*.cc;*.cpp;*.cxx;*.ch;*.h;*.h++;*.hh;*.hpp;*.hxx;*.js;*.qs;*.qml;*.qrc")
      +    endif()
           set(_my_sources)
           set(_my_tsfiles)
           foreach(_file ${_lupdate_files})
      @@ -59,8 +70,16 @@
                 get_filename_component(_ts_name ${_ts_file} NAME)
                 set(_ts_lst_file "${CMAKE_CURRENT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${_ts_name}_lst_file")
                 set(_lst_file_srcs)
      +          set(_dependencies)
                 foreach(_lst_file_src ${_my_sources})
                     set(_lst_file_srcs "${_lst_file_src}\n${_lst_file_srcs}")
      +              if(IS_DIRECTORY ${_lst_file_src})
      +                  list(TRANSFORM _extensions_list PREPEND "${_lst_file_src}/" OUTPUT_VARIABLE _directory_glob)
      +                  file(GLOB_RECURSE _directory_contents CONFIGURE_DEPENDS ${_directory_glob})
      +                  list(APPEND _dependencies ${_directory_contents})
      +              else()
      +                  list(APPEND _dependencies "${_lst_file_src}")
      +              endif()
                 endforeach()
       
                 get_directory_property(_inc_DIRS INCLUDE_DIRECTORIES)
      @@ -74,8 +93,8 @@
               add_custom_command(OUTPUT ${_ts_file}
                   COMMAND ${Qt5_LUPDATE_EXECUTABLE}
                   ARGS ${_lupdate_options} "@${_ts_lst_file}" -ts ${_ts_file}
      -            DEPENDS ${_my_sources}
      -            BYPRODUCTS ${_ts_lst_file} VERBATIM)
      +            DEPENDS ${_dependencies}
      +            VERBATIM)
           endforeach()
           qt5_add_translation(${_qm_files} ${_my_tsfiles})
           set(${_qm_files} ${${_qm_files}} PARENT_SCOPE)
      diff -Naur a/qttools/src/qdbus/qdbusviewer/qdbusviewer.pro b/qttools/src/qdbus/qdbusviewer/qdbusviewer.pro
      --- a/qttools/src/qdbus/qdbusviewer/qdbusviewer.pro	2020-10-22 18:11:38.000000000 +0100
      +++ b/qttools/src/qdbus/qdbusviewer/qdbusviewer.pro	2022-01-25 17:29:23.283279646 +0000
      @@ -23,7 +23,7 @@
       }
       
       win32 {
      -    RC_FILE = qdbusviewer.rc
      +    RC_ICONS = images/qdbusviewer.ico
       }
       
       load(qt_app)
      diff -Naur a/qttools/src/qdbus/qdbusviewer/qdbusviewer.rc b/qttools/src/qdbus/qdbusviewer/qdbusviewer.rc
      --- a/qttools/src/qdbus/qdbusviewer/qdbusviewer.rc	2020-10-22 18:11:38.000000000 +0100
      +++ b/qttools/src/qdbus/qdbusviewer/qdbusviewer.rc	1970-01-01 01:00:00.000000000 +0100
      @@ -1 +0,0 @@
      -IDI_ICON1		ICON		DISCARDABLE	"images/qdbusviewer.ico"
      diff -Naur a/qttools/src/qdoc/doc/qdoc-manual-topiccmds.qdoc b/qttools/src/qdoc/doc/qdoc-manual-topiccmds.qdoc
      --- a/qttools/src/qdoc/doc/qdoc-manual-topiccmds.qdoc	2020-10-22 18:11:38.000000000 +0100
      +++ b/qttools/src/qdoc/doc/qdoc-manual-topiccmds.qdoc	2022-01-25 17:29:23.281279653 +0000
      @@ -930,22 +930,24 @@
       
           \list
       
      +    \li api - This is the type of page used for C++ class references and
      +    QML type references. You should never use this one for the pages
      +    you write, because this one is reserved for QDoc.
      +
      +    \li attribution - A page describing (code) attributions.
      +
      +    \li example - A page that describes a working example.
      +
           \li faq - A frequently asked question.
       
           \li howto - A user guide on how to use some components of the
           software.
       
      -    \li example - A page that describes a working example.
      -
           \li overview - For text pages that provide an overview of some
           important subject.
       
           \li tutorial - For text pages that are part of a tutorial.
       
      -    \li api - This is the type of page used for C++ class references and
      -    QML type references. You should never use this one for the pages
      -    you write, because this one is reserved for QDoc.
      -
           \endlist
       
           The page title is set using the \l {title-command} {\\title}
      diff -Naur a/qttools/src/qdoc/docbookgenerator.cpp b/qttools/src/qdoc/docbookgenerator.cpp
      --- a/qttools/src/qdoc/docbookgenerator.cpp	2020-10-22 18:11:38.000000000 +0100
      +++ b/qttools/src/qdoc/docbookgenerator.cpp	2022-01-25 17:29:23.282279650 +0000
      @@ -2436,12 +2436,10 @@
           QString title;
           QString rawTitle;
           QString fullTitle;
      -    const NamespaceNode *ns = nullptr;
           if (aggregate->isNamespace()) {
               rawTitle = aggregate->plainName();
               fullTitle = aggregate->plainFullName();
               title = rawTitle + " Namespace";
      -        ns = static_cast(aggregate);
           } else if (aggregate->isClass()) {
               rawTitle = aggregate->plainName();
               QString templateDecl = node->templateDecl();
      @@ -2449,6 +2447,8 @@
                   fullTitle = QString("%1 %2 ").arg(templateDecl, aggregate->typeWord(false));
               fullTitle += aggregate->plainFullName();
               title = rawTitle + QLatin1Char(' ') + aggregate->typeWord(true);
      +    } else if (aggregate->isHeader()) {
      +        title = fullTitle = rawTitle = aggregate->fullTitle();
           }
       
           QString subtitleText;
      @@ -2479,8 +2479,10 @@
           }
       
           Sections sections(const_cast(aggregate));
      -    SectionVector *sectionVector =
      -            ns ? §ions.stdDetailsSections() : §ions.stdCppClassDetailsSections();
      +    auto *sectionVector =
      +            (aggregate->isNamespace() || aggregate->isHeader()) ?
      +                    §ions.stdDetailsSections() :
      +                    §ions.stdCppClassDetailsSections();
           SectionVector::ConstIterator section = sectionVector->constBegin();
           while (section != sectionVector->constEnd()) {
               bool headerGenerated = false;
      diff -Naur a/qttools/src/qdoc/helpprojectwriter.cpp b/qttools/src/qdoc/helpprojectwriter.cpp
      --- a/qttools/src/qdoc/helpprojectwriter.cpp	2020-10-22 18:11:38.000000000 +0100
      +++ b/qttools/src/qdoc/helpprojectwriter.cpp	2022-01-25 17:29:23.282279650 +0000
      @@ -234,7 +234,7 @@
           if (!node->url().isEmpty() && !(project.includeIndexNodes && !node->url().startsWith("http")))
               return false;
       
      -    if (node->isPrivate() || node->isInternal())
      +    if (node->isPrivate() || node->isInternal() || node->isDontDocument())
               return false;
       
           if (node->name().isEmpty())
      diff -Naur a/qttools/src/qdoc/htmlgenerator.cpp b/qttools/src/qdoc/htmlgenerator.cpp
      --- a/qttools/src/qdoc/htmlgenerator.cpp	2020-10-22 18:11:38.000000000 +0100
      +++ b/qttools/src/qdoc/htmlgenerator.cpp	2022-01-25 17:29:23.283279646 +0000
      @@ -1286,8 +1286,12 @@
               QString command = "documentation";
               if (aggregate->isClassNode())
                   command = "\'\\class\' comment";
      -        aggregate->location().warning(
      -                tr("No %1 for '%2'").arg(command).arg(aggregate->plainSignature()));
      +        if (!ns || ns->isDocumentedHere()) {
      +            aggregate->location().warning(
      +                    tr("No %1 for '%2'")
      +                        .arg(command)
      +                        .arg(aggregate->plainSignature()));
      +        }
           } else {
               generateExtractionMark(aggregate, DetailedDescriptionMark);
               out() << "
      \n" // QTBUG-9504 diff -Naur a/qttools/src/qdoc/jscodemarker.cpp b/qttools/src/qdoc/jscodemarker.cpp --- a/qttools/src/qdoc/jscodemarker.cpp 2020-10-22 18:11:38.000000000 +0100 +++ b/qttools/src/qdoc/jscodemarker.cpp 2022-01-25 17:29:23.281279653 +0000 @@ -78,16 +78,16 @@ */ bool JsCodeMarker::recognizeExtension(const QString &ext) { - return ext == "js" || ext == "json"; + return ext == "js"; } /*! - Returns \c true if the \a language is recognized. We recognize JavaScript, - ECMAScript and JSON. + Returns \c true if the \a language is recognized. We recognize JavaScript and + ECMAScript. */ bool JsCodeMarker::recognizeLanguage(const QString &language) { - return language == "JavaScript" || language == "ECMAScript" || language == "JSON"; + return language == "JavaScript" || language == "ECMAScript"; } /*! diff -Naur a/qttools/src/qdoc/node.cpp b/qttools/src/qdoc/node.cpp --- a/qttools/src/qdoc/node.cpp 2020-10-22 18:11:38.000000000 +0100 +++ b/qttools/src/qdoc/node.cpp 2022-01-25 17:29:23.281279653 +0000 @@ -2749,6 +2749,8 @@ void Aggregate::findAllSince() { for (auto *node : qAsConst(children_)) { + if (node->isRelatedNonmember() && node->parent() != this) + continue; QString sinceString = node->since(); // Insert a new entry into each map for each new since string found. if (!node->isPrivate() && !sinceString.isEmpty()) { diff -Naur a/qttools/src/qtpaths/qtpaths.cpp b/qttools/src/qtpaths/qtpaths.cpp --- a/qttools/src/qtpaths/qtpaths.cpp 2020-10-22 18:11:38.000000000 +0100 +++ b/qttools/src/qtpaths/qtpaths.cpp 2022-01-25 17:29:23.281279653 +0000 @@ -79,30 +79,44 @@ ::exit(EXIT_FAILURE); } - -/* - * NOTE: that DataLocation and CacheLocation are missing as - * they don't really make sense for a utility like this because - * they include the application name. - */ -static const struct StringEnum { +class StringEnum { +public: const char *stringvalue; QStandardPaths::StandardLocation enumvalue; -} lookupTableData[] = { - { "ApplicationsLocation", QStandardPaths::ApplicationsLocation }, - { "DesktopLocation", QStandardPaths::DesktopLocation }, - { "DocumentsLocation", QStandardPaths::DocumentsLocation }, - { "FontsLocation", QStandardPaths::FontsLocation }, - { "MusicLocation", QStandardPaths::MusicLocation }, - { "MoviesLocation", QStandardPaths::MoviesLocation }, - { "PicturesLocation", QStandardPaths::PicturesLocation }, - { "HomeLocation", QStandardPaths::HomeLocation }, - { "GenericCacheLocation", QStandardPaths::GenericCacheLocation }, - { "GenericDataLocation", QStandardPaths::GenericDataLocation }, - { "RuntimeLocation", QStandardPaths::RuntimeLocation }, - { "ConfigLocation", QStandardPaths::ConfigLocation }, - { "GenericConfigLocation", QStandardPaths::GenericConfigLocation }, - { "DownloadLocation", QStandardPaths::DownloadLocation } + bool hasappname; + + /** + * Replace application name by generic name if requested + */ + QString mapName(const QString &s) const + { + return hasappname ? QString(s).replace("qtpaths", "") : s; + } +}; + +static const StringEnum lookupTableData[] = { + { "AppConfigLocation", QStandardPaths::AppConfigLocation, true }, + { "AppDataLocation", QStandardPaths::AppDataLocation, true }, + { "AppLocalDataLocation", QStandardPaths::AppLocalDataLocation, true }, + { "ApplicationsLocation", QStandardPaths::ApplicationsLocation, false }, + { "CacheLocation", QStandardPaths::CacheLocation, true }, + { "ConfigLocation", QStandardPaths::ConfigLocation, false }, +#if QT_VERSION < QT_VERSION_CHECK(6,0,0) + { "DataLocation", QStandardPaths::DataLocation, true }, +#endif + { "DesktopLocation", QStandardPaths::DesktopLocation, false }, + { "DocumentsLocation", QStandardPaths::DocumentsLocation, false }, + { "DownloadLocation", QStandardPaths::DownloadLocation, false }, + { "FontsLocation", QStandardPaths::FontsLocation, false }, + { "GenericCacheLocation", QStandardPaths::GenericCacheLocation, false }, + { "GenericConfigLocation", QStandardPaths::GenericConfigLocation, false }, + { "GenericDataLocation", QStandardPaths::GenericDataLocation, false }, + { "HomeLocation", QStandardPaths::HomeLocation, false }, + { "MoviesLocation", QStandardPaths::MoviesLocation, false }, + { "MusicLocation", QStandardPaths::MusicLocation, false }, + { "PicturesLocation", QStandardPaths::PicturesLocation, false }, + { "RuntimeLocation", QStandardPaths::RuntimeLocation, false }, + { "TempLocation", QStandardPaths::TempLocation, false } }; /** @@ -118,14 +132,14 @@ } /** - * Tries to parse the location string into a StandardLocation or alternatively + * Tries to arse the location string into a reference to a StringEnum entry or alternatively * calls \ref error with a error message */ -static QStandardPaths::StandardLocation parseLocationOrError(const QString &locationString) +static const StringEnum &parseLocationOrError(const QString &locationString) { for (const StringEnum &se : lookupTableData) if (locationString == QLatin1String(se.stringvalue)) - return se.enumvalue; + return se; QString message = QCoreApplication::translate("qtpaths", "Unknown location: %1"); error(message.arg(locationString)); @@ -246,21 +260,21 @@ } if (parser.isSet(display)) { - QStandardPaths::StandardLocation location = parseLocationOrError(parser.value(display)); - QString text = QStandardPaths::displayName(location); - results << text; + const StringEnum &location = parseLocationOrError(parser.value(display)); + QString text = QStandardPaths::displayName(location.enumvalue); + results << location.mapName(text); } if (parser.isSet(paths)) { - QStandardPaths::StandardLocation location = parseLocationOrError(parser.value(paths)); - QStringList paths = QStandardPaths::standardLocations(location); - results << paths.join(pathsep); + const StringEnum &location = parseLocationOrError(parser.value(paths)); + QStringList paths = QStandardPaths::standardLocations(location.enumvalue); + results << location.mapName(paths.join(pathsep)); } if (parser.isSet(writablePath)) { - QStandardPaths::StandardLocation location = parseLocationOrError(parser.value(writablePath)); - QString path = QStandardPaths::writableLocation(location); - results << path; + const StringEnum &location = parseLocationOrError(parser.value(writablePath)); + QString path = QStandardPaths::writableLocation(location.enumvalue); + results << location.mapName(path); } if (parser.isSet(findExe)) { @@ -270,31 +284,31 @@ } if (parser.isSet(locateDir)) { - QStandardPaths::StandardLocation location = parseLocationOrError(parser.value(locateDir)); + const StringEnum &location = parseLocationOrError(parser.value(locateDir)); QString searchitem = searchStringOrError(&parser); - QString path = QStandardPaths::locate(location, searchitem, QStandardPaths::LocateDirectory); - results << path; + QString path = QStandardPaths::locate(location.enumvalue, searchitem, QStandardPaths::LocateDirectory); + results << location.mapName(path); } if (parser.isSet(locateFile)) { - QStandardPaths::StandardLocation location = parseLocationOrError(parser.value(locateFile)); + const StringEnum &location = parseLocationOrError(parser.value(locateFile)); QString searchitem = searchStringOrError(&parser); - QString path = QStandardPaths::locate(location, searchitem, QStandardPaths::LocateFile); - results << path; + QString path = QStandardPaths::locate(location.enumvalue, searchitem, QStandardPaths::LocateFile); + results << location.mapName(path); } if (parser.isSet(locateDirs)) { - QStandardPaths::StandardLocation location = parseLocationOrError(parser.value(locateDirs)); + const StringEnum &location = parseLocationOrError(parser.value(locateDirs)); QString searchitem = searchStringOrError(&parser); - QStringList paths = QStandardPaths::locateAll(location, searchitem, QStandardPaths::LocateDirectory); - results << paths.join(pathsep); + QStringList paths = QStandardPaths::locateAll(location.enumvalue, searchitem, QStandardPaths::LocateDirectory); + results << location.mapName(paths.join(pathsep)); } if (parser.isSet(locateFiles)) { - QStandardPaths::StandardLocation location = parseLocationOrError(parser.value(locateFiles)); + const StringEnum &location = parseLocationOrError(parser.value(locateFiles)); QString searchitem = searchStringOrError(&parser); - QStringList paths = QStandardPaths::locateAll(location, searchitem, QStandardPaths::LocateFile); - results << paths.join(pathsep); + QStringList paths = QStandardPaths::locateAll(location.enumvalue, searchitem, QStandardPaths::LocateFile); + results << location.mapName(paths.join(pathsep)); } if (results.isEmpty()) { parser.showHelp(); diff -Naur a/qttools/tests/auto/qdoc/generatedoutput/expected_output/dontdocument/dontdocument.qhp b/qttools/tests/auto/qdoc/generatedoutput/expected_output/dontdocument/dontdocument.qhp --- a/qttools/tests/auto/qdoc/generatedoutput/expected_output/dontdocument/dontdocument.qhp 1970-01-01 01:00:00.000000000 +0100 +++ b/qttools/tests/auto/qdoc/generatedoutput/expected_output/dontdocument/dontdocument.qhp 2022-01-25 17:29:23.282279650 +0000 @@ -0,0 +1,55 @@ + + + org.qt-project.dontdocument.001 + test + + + +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + + + classes.html + seenclass.html + testcpp-module.html + testqdoc-test-members.html + testqdoc-test-obsolete.html + testqdoc-test.html + testqdoc-testderived-members.html + testqdoc-testderived.html + testqdoc.html + + + diff -Naur a/qttools/tests/auto/qdoc/generatedoutput/expected_output/headerfile-docbook/testheader.xml b/qttools/tests/auto/qdoc/generatedoutput/expected_output/headerfile-docbook/testheader.xml --- a/qttools/tests/auto/qdoc/generatedoutput/expected_output/headerfile-docbook/testheader.xml 2020-10-22 18:11:38.000000000 +0100 +++ b/qttools/tests/auto/qdoc/generatedoutput/expected_output/headerfile-docbook/testheader.xml 2022-01-25 17:29:23.282279650 +0000 @@ -1,7 +1,7 @@ - +<TestHeader> - Test Header HeaderFile HeaderFile Reference Documentation @@ -19,4 +19,72 @@ Detailed Description + +Type Documentation + +enum Globals + +Globals +public +active +unspecified +HeaderFile + + + + + + +Constant +Description + + + + +Glo + +0 + + + +Bal + +1 + + + + + +Variable Documentation + +const int globalVar + +const int +globalVar +public +active +unspecified +HeaderFile + +Global variable. + + + +Function Documentation + +void globalFunc() + + +globalFunc + +plain +void globalFunc() +public +active +unspecified +HeaderFile + +Global function. + + diff -Naur a/qttools/tests/auto/qdoc/generatedoutput/testdata/dontdocument/dontdocument.qdocconf b/qttools/tests/auto/qdoc/generatedoutput/testdata/dontdocument/dontdocument.qdocconf --- a/qttools/tests/auto/qdoc/generatedoutput/testdata/dontdocument/dontdocument.qdocconf 2020-10-22 18:11:38.000000000 +0100 +++ b/qttools/tests/auto/qdoc/generatedoutput/testdata/dontdocument/dontdocument.qdocconf 2022-01-25 17:29:23.282279650 +0000 @@ -3,5 +3,19 @@ headers += dont.h sources += dont.cpp test.qdoc +qhp.projects = DontDocument + +qhp.DontDocument.file = dontdocument.qhp +qhp.DontDocument.namespace = org.qt-project.dontdocument.001 +qhp.DontDocument.virtualFolder = test +qhp.DontDocument.indexTitle = QDoc Test C++ Classes +qhp.DontDocument.indexRoot = + +qhp.DontDocument.subprojects = classes +qhp.DontDocument.subprojects.classes.title = Classes +qhp.DontDocument.subprojects.classes.indexTitle = QDoc Test C++ Classes +qhp.DontDocument.subprojects.classes.selectors = class +qhp.DontDocument.subprojects.classes.sortPages = true + HTML.nosubdirs = true HTML.outputsubdir = dontdocument diff -Naur a/qttools/tests/auto/qdoc/generatedoutput/tst_generatedoutput.cpp b/qttools/tests/auto/qdoc/generatedoutput/tst_generatedoutput.cpp --- a/qttools/tests/auto/qdoc/generatedoutput/tst_generatedoutput.cpp 2020-10-22 18:11:38.000000000 +0100 +++ b/qttools/tests/auto/qdoc/generatedoutput/tst_generatedoutput.cpp 2022-01-25 17:29:23.282279650 +0000 @@ -349,7 +349,8 @@ { testAndCompare("testdata/dontdocument/dontdocument.qdocconf", "dontdocument/classes.html " - "dontdocument/seenclass.html"); + "dontdocument/seenclass.html " + "dontdocument/dontdocument.qhp"); } void tst_generatedOutput::inheritedQmlPropertyGroups() diff -Naur a/qtwayland/src/client/global/qwaylandclientextension.cpp b/qtwayland/src/client/global/qwaylandclientextension.cpp --- a/qtwayland/src/client/global/qwaylandclientextension.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/global/qwaylandclientextension.cpp 2022-01-25 17:30:02.334139555 +0000 @@ -74,7 +74,10 @@ void QWaylandClientExtension::addRegistryListener() { Q_D(QWaylandClientExtension); - d->waylandIntegration->display()->addRegistryListener(&QWaylandClientExtensionPrivate::handleRegistryGlobal, this); + if (!d->registered) { + d->waylandIntegration->display()->addRegistryListener(&QWaylandClientExtensionPrivate::handleRegistryGlobal, this); + d->registered = true; + } } QWaylandClientExtension::QWaylandClientExtension(const int ver) @@ -88,6 +91,13 @@ QMetaObject::invokeMethod(this, "addRegistryListener", Qt::QueuedConnection); } +QWaylandClientExtension::~QWaylandClientExtension() +{ + Q_D(QWaylandClientExtension); + if (d->registered && !QCoreApplication::closingDown()) + d->waylandIntegration->display()->removeListener(&QWaylandClientExtensionPrivate::handleRegistryGlobal, this); +} + QtWaylandClient::QWaylandIntegration *QWaylandClientExtension::integration() const { Q_D(const QWaylandClientExtension); diff -Naur a/qtwayland/src/client/global/qwaylandclientextension.h b/qtwayland/src/client/global/qwaylandclientextension.h --- a/qtwayland/src/client/global/qwaylandclientextension.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/global/qwaylandclientextension.h 2022-01-25 17:30:02.333139558 +0000 @@ -63,6 +63,7 @@ Q_PROPERTY(bool active READ isActive NOTIFY activeChanged) public: QWaylandClientExtension(const int version); + ~QWaylandClientExtension(); QtWaylandClient::QWaylandIntegration *integration() const; int version() const; diff -Naur a/qtwayland/src/client/global/qwaylandclientextension_p.h b/qtwayland/src/client/global/qwaylandclientextension_p.h --- a/qtwayland/src/client/global/qwaylandclientextension_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/global/qwaylandclientextension_p.h 2022-01-25 17:30:02.334139555 +0000 @@ -68,6 +68,7 @@ QtWaylandClient::QWaylandIntegration *waylandIntegration = nullptr; int version = -1; bool active = false; + bool registered = false; }; class Q_WAYLAND_CLIENT_EXPORT QWaylandClientExtensionTemplatePrivate : public QWaylandClientExtensionPrivate diff -Naur a/qtwayland/src/client/qwaylandabstractdecoration.cpp b/qtwayland/src/client/qwaylandabstractdecoration.cpp --- a/qtwayland/src/client/qwaylandabstractdecoration.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylandabstractdecoration.cpp 2022-01-25 17:30:02.331139565 +0000 @@ -108,11 +108,11 @@ static QRegion marginsRegion(const QSize &size, const QMargins &margins) { QRegion r; - const int widthWithMargins = margins.left() + size.width() + margins.right(); - r += QRect(0, 0, widthWithMargins, margins.top()); // top - r += QRect(0, size.height()+margins.top(), widthWithMargins, margins.bottom()); //bottom + + r += QRect(0, 0, size.width(), margins.top()); // top + r += QRect(0, size.height()-margins.bottom(), size.width(), margins.bottom()); //bottom r += QRect(0, margins.top(), margins.left(), size.height()); //left - r += QRect(size.width()+margins.left(), margins.top(), margins.right(), size.height()); // right + r += QRect(size.width()-margins.left(), margins.top(), margins.right(), size.height()-margins.top()); // right return r; } diff -Naur a/qtwayland/src/client/qwaylanddatadevice.cpp b/qtwayland/src/client/qwaylanddatadevice.cpp --- a/qtwayland/src/client/qwaylanddatadevice.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylanddatadevice.cpp 2022-01-25 17:30:02.337139544 +0000 @@ -72,6 +72,8 @@ QWaylandDataDevice::~QWaylandDataDevice() { + if (wl_data_device_get_version(object()) >= WL_DATA_DEVICE_RELEASE_SINCE_VERSION) + release(); } QWaylandDataOffer *QWaylandDataDevice::selectionOffer() const @@ -110,7 +112,7 @@ return m_dragOffer.data(); } -bool QWaylandDataDevice::startDrag(QMimeData *mimeData, QWaylandWindow *icon) +bool QWaylandDataDevice::startDrag(QMimeData *mimeData, Qt::DropActions supportedActions, QWaylandWindow *icon) { auto *seat = m_display->currentInputDevice(); auto *origin = seat->pointerFocus(); @@ -123,7 +125,28 @@ } m_dragSource.reset(new QWaylandDataSource(m_display->dndSelectionHandler(), mimeData)); + + if (wl_data_device_get_version(object()) >= 3) + m_dragSource->set_actions(dropActionsToWl(supportedActions)); + connect(m_dragSource.data(), &QWaylandDataSource::cancelled, this, &QWaylandDataDevice::dragSourceCancelled); + connect(m_dragSource.data(), &QWaylandDataSource::dndResponseUpdated, this, [this](bool accepted, Qt::DropAction action) { + auto drag = static_cast(QGuiApplicationPrivate::platformIntegration()->drag()); + // in old versions drop action is not set, so we guess + if (wl_data_source_get_version(m_dragSource->object()) < 3) { + drag->setResponse(accepted); + } else { + QPlatformDropQtResponse response(accepted, action); + drag->setResponse(response); + } + }); + connect(m_dragSource.data(), &QWaylandDataSource::dndDropped, this, [](bool accepted, Qt::DropAction action) { + QPlatformDropQtResponse response(accepted, action); + static_cast(QGuiApplicationPrivate::platformIntegration()->drag())->setDropResponse(response); + }); + connect(m_dragSource.data(), &QWaylandDataSource::finished, this, []() { + static_cast(QGuiApplicationPrivate::platformIntegration()->drag())->finishDrag(); + }); start_drag(m_dragSource->object(), origin->wlSurface(), icon->wlSurface(), m_display->currentInputDevice()->serial()); return true; @@ -152,7 +175,7 @@ supportedActions = drag->supportedActions(); } else if (m_dragOffer) { dragData = m_dragOffer->mimeData(); - supportedActions = Qt::CopyAction | Qt::MoveAction | Qt::LinkAction; + supportedActions = m_dragOffer->supportedActions(); } else { return; } @@ -162,13 +185,17 @@ QGuiApplication::keyboardModifiers()); if (drag) { - static_cast(QGuiApplicationPrivate::platformIntegration()->drag())->finishDrag(response); + auto drag = static_cast(QGuiApplicationPrivate::platformIntegration()->drag()); + drag->setDropResponse(response); + drag->finishDrag(); + } else if (m_dragOffer) { + m_dragOffer->finish(); } } void QWaylandDataDevice::data_device_enter(uint32_t serial, wl_surface *surface, wl_fixed_t x, wl_fixed_t y, wl_data_offer *id) { - auto *dragWaylandWindow = QWaylandWindow::fromWlSurface(surface); + auto *dragWaylandWindow = surface ? QWaylandWindow::fromWlSurface(surface) : nullptr; if (!dragWaylandWindow) return; // Ignore foreign surfaces @@ -186,7 +213,7 @@ supportedActions = drag->supportedActions(); } else if (m_dragOffer) { dragData = m_dragOffer->mimeData(); - supportedActions = Qt::CopyAction | Qt::MoveAction | Qt::LinkAction; + supportedActions = m_dragOffer->supportedActions(); } const QPlatformDragQtResponse &response = QWindowSystemInterface::handleDrag(m_dragWindow, dragData, m_dragPoint, supportedActions, @@ -197,11 +224,7 @@ static_cast(QGuiApplicationPrivate::platformIntegration()->drag())->setResponse(response); } - if (response.isAccepted()) { - wl_data_offer_accept(m_dragOffer->object(), m_enterSerial, m_dragOffer->firstFormat().toUtf8().constData()); - } else { - wl_data_offer_accept(m_dragOffer->object(), m_enterSerial, nullptr); - } + sendResponse(supportedActions, response); } void QWaylandDataDevice::data_device_leave() @@ -235,10 +258,10 @@ supportedActions = drag->supportedActions(); } else { dragData = m_dragOffer->mimeData(); - supportedActions = Qt::CopyAction | Qt::MoveAction | Qt::LinkAction; + supportedActions = m_dragOffer->supportedActions(); } - QPlatformDragQtResponse response = QWindowSystemInterface::handleDrag(m_dragWindow, dragData, m_dragPoint, supportedActions, + const QPlatformDragQtResponse response = QWindowSystemInterface::handleDrag(m_dragWindow, dragData, m_dragPoint, supportedActions, QGuiApplication::mouseButtons(), QGuiApplication::keyboardModifiers()); @@ -246,11 +269,7 @@ static_cast(QGuiApplicationPrivate::platformIntegration()->drag())->setResponse(response); } - if (response.isAccepted()) { - wl_data_offer_accept(m_dragOffer->object(), m_enterSerial, m_dragOffer->firstFormat().toUtf8().constData()); - } else { - wl_data_offer_accept(m_dragOffer->object(), m_enterSerial, nullptr); - } + sendResponse(supportedActions, response); } #endif // QT_CONFIG(draganddrop) @@ -280,11 +299,6 @@ m_dragSource.reset(); } -void QWaylandDataDevice::dragSourceTargetChanged(const QString &mimeType) -{ - static_cast(QGuiApplicationPrivate::platformIntegration()->drag())->updateTarget(mimeType); -} - QPoint QWaylandDataDevice::calculateDragPosition(int x, int y, QWindow *wnd) const { QPoint pnt(wl_fixed_to_int(x), wl_fixed_to_int(y)); @@ -297,6 +311,33 @@ } return pnt; } + +void QWaylandDataDevice::sendResponse(Qt::DropActions supportedActions, const QPlatformDragQtResponse &response) +{ + if (response.isAccepted()) { + if (wl_data_device_get_version(object()) >= 3) + m_dragOffer->set_actions(dropActionsToWl(supportedActions), dropActionsToWl(response.acceptedAction())); + + m_dragOffer->accept(m_enterSerial, m_dragOffer->firstFormat()); + } else { + m_dragOffer->accept(m_enterSerial, QString()); + } +} + +int QWaylandDataDevice::dropActionsToWl(Qt::DropActions actions) +{ + + int wlActions = WL_DATA_DEVICE_MANAGER_DND_ACTION_NONE; + if (actions & Qt::CopyAction) + wlActions |= WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY; + if (actions & (Qt::MoveAction | Qt::TargetMoveAction)) + wlActions |= WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE; + + // wayland does not support LinkAction at the time of writing + return wlActions; +} + + #endif // QT_CONFIG(draganddrop) } diff -Naur a/qtwayland/src/client/qwaylanddatadevicemanager.cpp b/qtwayland/src/client/qwaylanddatadevicemanager.cpp --- a/qtwayland/src/client/qwaylanddatadevicemanager.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylanddatadevicemanager.cpp 2022-01-25 17:30:02.337139544 +0000 @@ -50,8 +50,8 @@ namespace QtWaylandClient { -QWaylandDataDeviceManager::QWaylandDataDeviceManager(QWaylandDisplay *display, uint32_t id) - : wl_data_device_manager(display->wl_registry(), id, 1) +QWaylandDataDeviceManager::QWaylandDataDeviceManager(QWaylandDisplay *display, int version, uint32_t id) + : wl_data_device_manager(display->wl_registry(), id, qMin(version, 3)) , m_display(display) { // Create transfer devices for all input devices. diff -Naur a/qtwayland/src/client/qwaylanddatadevicemanager_p.h b/qtwayland/src/client/qwaylanddatadevicemanager_p.h --- a/qtwayland/src/client/qwaylanddatadevicemanager_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylanddatadevicemanager_p.h 2022-01-25 17:30:02.337139544 +0000 @@ -68,7 +68,7 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandDataDeviceManager : public QtWayland::wl_data_device_manager { public: - QWaylandDataDeviceManager(QWaylandDisplay *display, uint32_t id); + QWaylandDataDeviceManager(QWaylandDisplay *display, int version, uint32_t id); ~QWaylandDataDeviceManager() override; QWaylandDataDevice *getDataDevice(QWaylandInputDevice *inputDevice); diff -Naur a/qtwayland/src/client/qwaylanddatadevice_p.h b/qtwayland/src/client/qwaylanddatadevice_p.h --- a/qtwayland/src/client/qwaylanddatadevice_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylanddatadevice_p.h 2022-01-25 17:30:02.337139544 +0000 @@ -64,6 +64,7 @@ QT_BEGIN_NAMESPACE class QMimeData; +class QPlatformDragQtResponse; class QWindow; namespace QtWaylandClient { @@ -89,7 +90,7 @@ #if QT_CONFIG(draganddrop) QWaylandDataOffer *dragOffer() const; - bool startDrag(QMimeData *mimeData, QWaylandWindow *icon); + bool startDrag(QMimeData *mimeData, Qt::DropActions supportedActions, QWaylandWindow *icon); void cancelDrag(); #endif @@ -109,13 +110,16 @@ #if QT_CONFIG(draganddrop) void dragSourceCancelled(); - void dragSourceTargetChanged(const QString &mimeType); #endif private: #if QT_CONFIG(draganddrop) QPoint calculateDragPosition(int x, int y, QWindow *wnd) const; #endif + void sendResponse(Qt::DropActions supportedActions, const QPlatformDragQtResponse &response); + + static int dropActionsToWl(Qt::DropActions dropActions); + QWaylandDisplay *m_display = nullptr; QWaylandInputDevice *m_inputDevice = nullptr; diff -Naur a/qtwayland/src/client/qwaylanddataoffer.cpp b/qtwayland/src/client/qwaylanddataoffer.cpp --- a/qtwayland/src/client/qwaylanddataoffer.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylanddataoffer.cpp 2022-01-25 17:30:02.337139544 +0000 @@ -82,6 +82,15 @@ return m_mimeData.data(); } +Qt::DropActions QWaylandDataOffer::supportedActions() const +{ + if (wl_data_offer_get_version(const_cast<::wl_data_offer*>(object())) < 3) { + return Qt::MoveAction | Qt::CopyAction; + } + + return m_supportedActions; +} + void QWaylandDataOffer::startReceiving(const QString &mimeType, int fd) { receive(mimeType, fd); @@ -93,6 +102,22 @@ m_mimeData->appendFormat(mime_type); } +void QWaylandDataOffer::data_offer_action(uint32_t dnd_action) +{ + Q_UNUSED(dnd_action); + // This is the compositor telling the drag target what action it should perform + // It does not map nicely into Qt final drop semantics, other than pretending there is only one supported action? +} + +void QWaylandDataOffer::data_offer_source_actions(uint32_t source_actions) +{ + m_supportedActions = Qt::DropActions(); + if (source_actions & WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE) + m_supportedActions |= Qt::MoveAction; + if (source_actions & WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY) + m_supportedActions |= Qt::CopyAction; +} + QWaylandMimeData::QWaylandMimeData(QWaylandAbstractDataOffer *dataOffer) : m_dataOffer(dataOffer) { diff -Naur a/qtwayland/src/client/qwaylanddataoffer_p.h b/qtwayland/src/client/qwaylanddataoffer_p.h --- a/qtwayland/src/client/qwaylanddataoffer_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylanddataoffer_p.h 2022-01-25 17:30:02.338139540 +0000 @@ -82,6 +82,7 @@ explicit QWaylandDataOffer(QWaylandDisplay *display, struct ::wl_data_offer *offer); ~QWaylandDataOffer() override; QMimeData *mimeData() override; + Qt::DropActions supportedActions() const; QString firstFormat() const; @@ -89,10 +90,13 @@ protected: void data_offer_offer(const QString &mime_type) override; + void data_offer_source_actions(uint32_t source_actions) override; + void data_offer_action(uint32_t dnd_action) override; private: QWaylandDisplay *m_display = nullptr; QScopedPointer m_mimeData; + Qt::DropActions m_supportedActions; }; diff -Naur a/qtwayland/src/client/qwaylanddatasource.cpp b/qtwayland/src/client/qwaylanddatasource.cpp --- a/qtwayland/src/client/qwaylanddatasource.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylanddatasource.cpp 2022-01-25 17:30:02.338139540 +0000 @@ -101,7 +101,32 @@ void QWaylandDataSource::data_source_target(const QString &mime_type) { - Q_EMIT targetChanged(mime_type); + m_accepted = !mime_type.isEmpty(); + Q_EMIT dndResponseUpdated(m_accepted, m_dropAction); +} + +void QWaylandDataSource::data_source_action(uint32_t action) +{ + Qt::DropAction qtAction = Qt::IgnoreAction; + + if (action == WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE) + qtAction = Qt::MoveAction; + else if (action == WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY) + qtAction = Qt::CopyAction; + + m_dropAction = qtAction; + Q_EMIT dndResponseUpdated(m_accepted, m_dropAction); +} + +void QWaylandDataSource::data_source_dnd_finished() +{ + Q_EMIT finished(); +} + +void QWaylandDataSource::data_source_dnd_drop_performed() +{ + + Q_EMIT dndDropped(m_accepted, m_dropAction); } } diff -Naur a/qtwayland/src/client/qwaylanddatasource_p.h b/qtwayland/src/client/qwaylanddatasource_p.h --- a/qtwayland/src/client/qwaylanddatasource_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylanddatasource_p.h 2022-01-25 17:30:02.338139540 +0000 @@ -77,17 +77,25 @@ QMimeData *mimeData() const; Q_SIGNALS: - void targetChanged(const QString &mime_type); void cancelled(); + void finished(); + + void dndResponseUpdated(bool accepted, Qt::DropAction action); + void dndDropped(bool accepted, Qt::DropAction action); protected: void data_source_cancelled() override; void data_source_send(const QString &mime_type, int32_t fd) override; void data_source_target(const QString &mime_type) override; + void data_source_dnd_drop_performed() override; + void data_source_dnd_finished() override; + void data_source_action(uint32_t action) override; private: QWaylandDisplay *m_display = nullptr; QMimeData *m_mime_data = nullptr; + bool m_accepted = false; + Qt::DropAction m_dropAction = Qt::IgnoreAction; }; } diff -Naur a/qtwayland/src/client/qwaylanddisplay.cpp b/qtwayland/src/client/qwaylanddisplay.cpp --- a/qtwayland/src/client/qwaylanddisplay.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylanddisplay.cpp 2022-01-25 17:30:02.339139537 +0000 @@ -85,10 +85,203 @@ #include +#include // for std::tie + +static void checkWaylandError(struct wl_display *display) +{ + int ecode = wl_display_get_error(display); + if ((ecode == EPIPE || ecode == ECONNRESET)) { + // special case this to provide a nicer error + qWarning("The Wayland connection broke. Did the Wayland compositor die?"); + } else { + qWarning("The Wayland connection experienced a fatal error: %s", strerror(ecode)); + } + _exit(1); +} + QT_BEGIN_NAMESPACE namespace QtWaylandClient { +class EventThread : public QThread +{ + Q_OBJECT +public: + enum OperatingMode { + EmitToDispatch, // Emit the signal, allow dispatching in a differnt thread. + SelfDispatch, // Dispatch the events inside this thread. + }; + + EventThread(struct wl_display * wl, struct wl_event_queue * ev_queue, + OperatingMode mode) + : m_fd(wl_display_get_fd(wl)) + , m_pipefd{ -1, -1 } + , m_wldisplay(wl) + , m_wlevqueue(ev_queue) + , m_mode(mode) + , m_reading(true) + , m_quitting(false) + { + setObjectName(QStringLiteral("WaylandEventThread")); + } + + void readAndDispatchEvents() + { + /* + * Dispatch pending events and flush the requests at least once. If the event thread + * is not reading, try to call _prepare_read() to allow the event thread to poll(). + * If that fails, re-try dispatch & flush again until _prepare_read() is successful. + * + * This allow any call to readAndDispatchEvents() to start event thread's polling, + * not only the one issued from event thread's waitForReading(), which means functions + * called from dispatch_pending() can safely spin an event loop. + */ + for (;;) { + if (dispatchQueuePending() < 0) { + checkWaylandError(m_wldisplay); + return; + } + + wl_display_flush(m_wldisplay); + + // We have to check if event thread is reading every time we dispatch + // something, as that may recursively call this function. + if (m_reading.loadAcquire()) + break; + + if (prepareReadQueue() == 0) { + QMutexLocker l(&m_mutex); + m_reading.storeRelease(true); + m_cond.wakeOne(); + break; + } + } + } + + void stop() + { + // We have to both write to the pipe and set the flag, as the thread may be + // either in the poll() or waiting for _prepare_read(). + if (m_pipefd[1] != -1 && write(m_pipefd[1], "\0", 1) == -1) + qWarning("Failed to write to the pipe: %s.", strerror(errno)); + + { + QMutexLocker l(&m_mutex); + m_quitting = true; + m_cond.wakeOne(); + } + + wait(); + } + +Q_SIGNALS: + void needReadAndDispatch(); + +protected: + void run() override + { + // we use this pipe to make the loop exit otherwise if we simply used a flag on the loop condition, if stop() gets + // called while poll() is blocking the thread will never quit since there are no wayland messages coming anymore. + struct Pipe + { + Pipe(int *fds) + : fds(fds) + { + if (qt_safe_pipe(fds) != 0) + qWarning("Pipe creation failed. Quitting may hang."); + } + ~Pipe() + { + if (fds[0] != -1) { + close(fds[0]); + close(fds[1]); + } + } + + int *fds; + } pipe(m_pipefd); + + // Make the main thread call wl_prepare_read(), dispatch the pending messages and flush the + // outbound ones. Wait until it's done before proceeding, unless we're told to quit. + while (waitForReading()) { + pollfd fds[2] = { { m_fd, POLLIN, 0 }, { m_pipefd[0], POLLIN, 0 } }; + poll(fds, 2, -1); + + if (fds[1].revents & POLLIN) { + // we don't really care to read the byte that was written here since we're closing down + wl_display_cancel_read(m_wldisplay); + break; + } + + if (fds[0].revents & POLLIN) + wl_display_read_events(m_wldisplay); + // The polll was succesfull and the event thread did the wl_display_read_events(). On the next iteration of the loop + // the event sent to the main thread will cause it to dispatch the messages just read, unless the loop exits in which + // case we don't care anymore about them. + else + wl_display_cancel_read(m_wldisplay); + } + } + +private: + bool waitForReading() + { + Q_ASSERT(QThread::currentThread() == this); + + m_reading.storeRelease(false); + + if (m_mode == SelfDispatch) { + readAndDispatchEvents(); + } else { + Q_EMIT needReadAndDispatch(); + + QMutexLocker lock(&m_mutex); + // m_reading might be set from our emit or some other invocation of + // readAndDispatchEvents(). + while (!m_reading.loadRelaxed() && !m_quitting) + m_cond.wait(&m_mutex); + } + + return !m_quitting; + } + + int dispatchQueuePending() + { + if (m_wlevqueue) + return wl_display_dispatch_queue_pending(m_wldisplay, m_wlevqueue); + else + return wl_display_dispatch_pending(m_wldisplay); + } + + int prepareReadQueue() + { + if (m_wlevqueue) + return wl_display_prepare_read_queue(m_wldisplay, m_wlevqueue); + else + return wl_display_prepare_read(m_wldisplay); + } + + int m_fd; + int m_pipefd[2]; + wl_display *m_wldisplay; + wl_event_queue *m_wlevqueue; + OperatingMode m_mode; + + /* Concurrency note when operating in EmitToDispatch mode: + * m_reading is set to false inside event thread's waitForReading(), and is + * set to true inside main thread's readAndDispatchEvents(). + * The lock is not taken when setting m_reading to false, as the main thread + * is not actively waiting for it to turn false. However, the lock is taken + * inside readAndDispatchEvents() before setting m_reading to true, + * as the event thread is actively waiting for it under the wait condition. + */ + + QAtomicInteger m_reading; + bool m_quitting; + QMutex m_mutex; + QWaitCondition m_cond; +}; + Q_LOGGING_CATEGORY(lcQpaWayland, "qt.qpa.wayland"); // for general (uncategorized) Wayland platform logging struct wl_surface *QWaylandDisplay::createSurface(void *handle) @@ -158,17 +351,16 @@ if (!mXkbContext) qCWarning(lcQpaWayland, "failed to create xkb context"); #endif - - forceRoundTrip(); - - if (!mWaitingScreens.isEmpty()) { - // Give wl_output.done and zxdg_output_v1.done events a chance to arrive - forceRoundTrip(); - } } QWaylandDisplay::~QWaylandDisplay(void) { + if (m_eventThread) + m_eventThread->stop(); + + if (m_frameEventQueueThread) + m_frameEventQueueThread->stop(); + if (mSyncCallback) wl_callback_destroy(mSyncCallback); @@ -189,6 +381,18 @@ wl_display_disconnect(mDisplay); } +// Steps which is called just after constructor. This separates registry_global() out of the constructor +// so that factory functions in integration can be overridden. +void QWaylandDisplay::initialize() +{ + forceRoundTrip(); + + if (!mWaitingScreens.isEmpty()) { + // Give wl_output.done and zxdg_output_v1.done events a chance to arrive + forceRoundTrip(); + } +} + void QWaylandDisplay::ensureScreen() { if (!mScreens.empty() || mPlaceholderScreen) @@ -203,97 +407,37 @@ void QWaylandDisplay::checkError() const { - int ecode = wl_display_get_error(mDisplay); - if ((ecode == EPIPE || ecode == ECONNRESET)) { - // special case this to provide a nicer error - qFatal("The Wayland connection broke. Did the Wayland compositor die?"); - } else { - qFatal("The Wayland connection experienced a fatal error: %s", strerror(ecode)); - } + checkWaylandError(mDisplay); } +// Called in main thread, either from queued signal or directly. void QWaylandDisplay::flushRequests() { - if (wl_display_prepare_read(mDisplay) == 0) { - wl_display_read_events(mDisplay); - } - - if (wl_display_dispatch_pending(mDisplay) < 0) - checkError(); - - { - QReadLocker locker(&m_frameQueueLock); - for (const FrameQueue &q : mExternalQueues) { - QMutexLocker locker(q.mutex); - while (wl_display_prepare_read_queue(mDisplay, q.queue) != 0) - wl_display_dispatch_queue_pending(mDisplay, q.queue); - wl_display_read_events(mDisplay); - wl_display_dispatch_queue_pending(mDisplay, q.queue); - } - } + m_eventThread->readAndDispatchEvents(); +} - wl_display_flush(mDisplay); +// We have to wait until we have an eventDispatcher before creating the eventThread, +// otherwise forceRoundTrip() may block inside _events_read() because eventThread is +// polling. +void QWaylandDisplay::initEventThread() +{ + m_eventThread.reset( + new EventThread(mDisplay, /* default queue */ nullptr, EventThread::EmitToDispatch)); + connect(m_eventThread.get(), &EventThread::needReadAndDispatch, this, + &QWaylandDisplay::flushRequests, Qt::QueuedConnection); + m_eventThread->start(); + + // wl_display_disconnect() free this. + m_frameEventQueue = wl_display_create_queue(mDisplay); + m_frameEventQueueThread.reset( + new EventThread(mDisplay, m_frameEventQueue, EventThread::SelfDispatch)); + m_frameEventQueueThread->start(); } void QWaylandDisplay::blockingReadEvents() { if (wl_display_dispatch(mDisplay) < 0) - checkError(); -} - -void QWaylandDisplay::destroyFrameQueue(const QWaylandDisplay::FrameQueue &q) -{ - QWriteLocker locker(&m_frameQueueLock); - auto it = std::find_if(mExternalQueues.begin(), - mExternalQueues.end(), - [&q] (const QWaylandDisplay::FrameQueue &other){ return other.queue == q.queue; }); - Q_ASSERT(it != mExternalQueues.end()); - mExternalQueues.erase(it); - if (q.queue != nullptr) - wl_event_queue_destroy(q.queue); - delete q.mutex; -} - -QWaylandDisplay::FrameQueue QWaylandDisplay::createFrameQueue() -{ - QWriteLocker locker(&m_frameQueueLock); - FrameQueue q{createEventQueue()}; - mExternalQueues.append(q); - return q; -} - -wl_event_queue *QWaylandDisplay::createEventQueue() -{ - return wl_display_create_queue(mDisplay); -} - -void QWaylandDisplay::dispatchQueueWhile(wl_event_queue *queue, std::function condition, int timeout) -{ - if (!condition()) - return; - - QElapsedTimer timer; - timer.start(); - struct pollfd pFd = qt_make_pollfd(wl_display_get_fd(mDisplay), POLLIN); - while (timeout == -1 || timer.elapsed() < timeout) { - while (wl_display_prepare_read_queue(mDisplay, queue) != 0) - wl_display_dispatch_queue_pending(mDisplay, queue); - - wl_display_flush(mDisplay); - - const int remaining = qMax(timeout - timer.elapsed(), 0ll); - const int pollTimeout = timeout == -1 ? -1 : remaining; - if (qt_poll_msecs(&pFd, 1, pollTimeout) > 0) - wl_display_read_events(mDisplay); - else - wl_display_cancel_read(mDisplay); - - if (wl_display_dispatch_queue_pending(mDisplay, queue) < 0) - checkError(); - - if (!condition()) - break; - } + checkWaylandError(mDisplay); } QWaylandScreen *QWaylandDisplay::screenForOutput(struct wl_output *output) const @@ -353,7 +497,7 @@ mInputDevices.append(inputDevice); #if QT_CONFIG(wayland_datadevice) } else if (interface == QStringLiteral("wl_data_device_manager")) { - mDndSelectionHandler.reset(new QWaylandDataDeviceManager(this, id)); + mDndSelectionHandler.reset(new QWaylandDataDeviceManager(this, version, id)); #endif } else if (interface == QStringLiteral("qt_surface_extension")) { mWindowExtension.reset(new QtWayland::qt_surface_extension(registry, id, 1)); @@ -451,9 +595,10 @@ void QWaylandDisplay::removeListener(RegistryListener listener, void *data) { - std::remove_if(mRegistryListeners.begin(), mRegistryListeners.end(), [=](Listener l){ + auto iter = std::remove_if(mRegistryListeners.begin(), mRegistryListeners.end(), [=](Listener l){ return (l.listener == listener && l.data == data); }); + mRegistryListeners.erase(iter, mRegistryListeners.end()); } uint32_t QWaylandDisplay::currentTimeMillisec() @@ -573,14 +718,10 @@ if (mLastKeyboardFocus == keyboardFocus) return; - if (mWaylandIntegration->mShellIntegration) { - mWaylandIntegration->mShellIntegration->handleKeyboardFocusChanged(keyboardFocus, mLastKeyboardFocus); - } else { - if (keyboardFocus) - handleWindowActivated(keyboardFocus); - if (mLastKeyboardFocus) - handleWindowDeactivated(mLastKeyboardFocus); - } + if (keyboardFocus) + handleWindowActivated(keyboardFocus); + if (mLastKeyboardFocus) + handleWindowDeactivated(mLastKeyboardFocus); mLastKeyboardFocus = keyboardFocus; } @@ -599,6 +740,19 @@ QWindow *activeWindow = mActiveWindows.empty() ? nullptr : mActiveWindows.last()->window(); if (activeWindow != QGuiApplication::focusWindow()) QWindowSystemInterface::handleWindowActivated(activeWindow); + + if (!activeWindow) { + if (lastInputDevice()) { +#if QT_CONFIG(clipboard) + if (auto *dataDevice = lastInputDevice()->dataDevice()) + dataDevice->invalidateSelectionOffer(); +#endif +#if QT_CONFIG(wayland_client_primary_selection) + if (auto *device = lastInputDevice()->primarySelectionDevice()) + device->invalidateSelectionOffer(); +#endif + } + } } const wl_callback_listener QWaylandDisplay::syncCallbackListener = { @@ -625,6 +779,13 @@ return mInputDevices.isEmpty() ? 0 : mInputDevices.first(); } +bool QWaylandDisplay::isKeyboardAvailable() const +{ + return std::any_of( + mInputDevices.constBegin(), mInputDevices.constEnd(), + [this](const QWaylandInputDevice *device) { return device->keyboard() != nullptr; }); +} + #if QT_CONFIG(cursor) QWaylandCursor *QWaylandDisplay::waylandCursor() @@ -651,4 +812,6 @@ } // namespace QtWaylandClient +#include "qwaylanddisplay.moc" + QT_END_NAMESPACE diff -Naur a/qtwayland/src/client/qwaylanddisplay_p.h b/qtwayland/src/client/qwaylanddisplay_p.h --- a/qtwayland/src/client/qwaylanddisplay_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylanddisplay_p.h 2022-01-25 17:30:02.339139537 +0000 @@ -109,6 +109,7 @@ class QWaylandShellIntegration; class QWaylandCursor; class QWaylandCursorTheme; +class EventThread; typedef void (*RegistryListener)(void *data, struct wl_registry *registry, @@ -120,15 +121,11 @@ Q_OBJECT public: - struct FrameQueue { - FrameQueue(wl_event_queue *q = nullptr) : queue(q), mutex(new QMutex) {} - wl_event_queue *queue; - QMutex *mutex; - }; - QWaylandDisplay(QWaylandIntegration *waylandIntegration); ~QWaylandDisplay(void) override; + void initialize(); + #if QT_CONFIG(xkbcommon) struct xkb_context *xkbContext() const { return mXkbContext.get(); } #endif @@ -175,8 +172,6 @@ QWaylandHardwareIntegration *hardwareIntegration() const { return mHardwareIntegration.data(); } QWaylandXdgOutputManagerV1 *xdgOutputManager() const { return mXdgOutputManager.data(); } - bool usingInputContextFromCompositor() const { return mUsingInputContextFromCompositor; } - struct RegistryGlobal { uint32_t id; QString interface; @@ -212,11 +207,11 @@ void handleKeyboardFocusChanged(QWaylandInputDevice *inputDevice); void handleWindowDestroyed(QWaylandWindow *window); - wl_event_queue *createEventQueue(); - FrameQueue createFrameQueue(); - void destroyFrameQueue(const FrameQueue &q); - void dispatchQueueWhile(wl_event_queue *queue, std::function condition, int timeout = -1); + wl_event_queue *frameEventQueue() { return m_frameEventQueue; }; + + bool isKeyboardAvailable() const; + void initEventThread(); public slots: void blockingReadEvents(); void flushRequests(); @@ -239,6 +234,9 @@ }; struct wl_display *mDisplay = nullptr; + QScopedPointer m_eventThread; + wl_event_queue *m_frameEventQueue = nullptr; + QScopedPointer m_frameEventQueueThread; QtWayland::wl_compositor mCompositor; QScopedPointer mShm; QList mWaitingScreens; @@ -275,14 +273,11 @@ QWaylandInputDevice *mLastInputDevice = nullptr; QPointer mLastInputWindow; QPointer mLastKeyboardFocus; - QVector mActiveWindows; - QVector mExternalQueues; + QList mActiveWindows; struct wl_callback *mSyncCallback = nullptr; static const wl_callback_listener syncCallbackListener; - QReadWriteLock m_frameQueueLock; bool mClientSideInputContextRequested = !QPlatformInputContextFactory::requested().isNull(); - bool mUsingInputContextFromCompositor = false; void registry_global(uint32_t id, const QString &interface, uint32_t version) override; void registry_global_remove(uint32_t id) override; diff -Naur a/qtwayland/src/client/qwaylanddnd.cpp b/qtwayland/src/client/qwaylanddnd.cpp --- a/qtwayland/src/client/qwaylanddnd.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylanddnd.cpp 2022-01-25 17:30:02.338139540 +0000 @@ -66,7 +66,7 @@ { QBasicDrag::startDrag(); QWaylandWindow *icon = static_cast(shapedPixmapWindow()->handle()); - if (m_display->currentInputDevice()->dataDevice()->startDrag(drag()->mimeData(), icon)) { + if (m_display->currentInputDevice()->dataDevice()->startDrag(drag()->mimeData(), drag()->supportedActions(), icon)) { icon->addAttachOffset(-drag()->hotSpot()); } else { // Cancelling immediately does not work, since the event loop for QDrag::exec is started @@ -80,6 +80,9 @@ QBasicDrag::cancel(); m_display->currentInputDevice()->dataDevice()->cancelDrag(); + + if (drag()) + drag()->deleteLater(); } void QWaylandDrag::move(const QPoint &globalPos, Qt::MouseButtons b, Qt::KeyboardModifiers mods) @@ -103,33 +106,41 @@ m_display->currentInputDevice()->handleEndDrag(); } -void QWaylandDrag::updateTarget(const QString &mimeType) +void QWaylandDrag::setResponse(bool accepted) { - setCanDrop(!mimeType.isEmpty()); - - if (canDrop()) { - updateCursor(defaultAction(drag()->supportedActions(), m_display->currentInputDevice()->modifiers())); - } else { - updateCursor(Qt::IgnoreAction); - } + // This method is used for old DataDevices where the drag action is not communicated + Qt::DropAction action = defaultAction(drag()->supportedActions(), m_display->currentInputDevice()->modifiers()); + setResponse(QPlatformDropQtResponse(accepted, action)); } -void QWaylandDrag::setResponse(const QPlatformDragQtResponse &response) +void QWaylandDrag::setResponse(const QPlatformDropQtResponse &response) { setCanDrop(response.isAccepted()); if (canDrop()) { - updateCursor(defaultAction(drag()->supportedActions(), m_display->currentInputDevice()->modifiers())); + updateCursor(response.acceptedAction()); } else { updateCursor(Qt::IgnoreAction); } } -void QWaylandDrag::finishDrag(const QPlatformDropQtResponse &response) +void QWaylandDrag::setDropResponse(const QPlatformDropQtResponse &response) { setExecutedDropAction(response.acceptedAction()); +} + +void QWaylandDrag::finishDrag() +{ QKeyEvent event(QEvent::KeyPress, Qt::Key_Escape, Qt::NoModifier); eventFilter(shapedPixmapWindow(), &event); + + if (drag()) + drag()->deleteLater(); +} + +bool QWaylandDrag::ownsDragObject() const +{ + return true; } } diff -Naur a/qtwayland/src/client/qwaylanddnd_p.h b/qtwayland/src/client/qwaylanddnd_p.h --- a/qtwayland/src/client/qwaylanddnd_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylanddnd_p.h 2022-01-25 17:30:02.338139540 +0000 @@ -71,9 +71,10 @@ QWaylandDrag(QWaylandDisplay *display); ~QWaylandDrag() override; - void updateTarget(const QString &mimeType); - void setResponse(const QPlatformDragQtResponse &response); - void finishDrag(const QPlatformDropQtResponse &response); + void setResponse(bool accepted); + void setResponse(const QPlatformDropQtResponse &response); + void setDropResponse(const QPlatformDropQtResponse &response); + void finishDrag(); protected: void startDrag() override; @@ -82,6 +83,7 @@ void drop(const QPoint &globalPos, Qt::MouseButtons b, Qt::KeyboardModifiers mods) override; void endDrag() override; + bool ownsDragObject() const override; private: QWaylandDisplay *m_display = nullptr; diff -Naur a/qtwayland/src/client/qwaylandinputcontext.cpp b/qtwayland/src/client/qwaylandinputcontext.cpp --- a/qtwayland/src/client/qwaylandinputcontext.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylandinputcontext.cpp 2022-01-25 17:30:02.335139551 +0000 @@ -51,6 +51,10 @@ #include "qwaylandinputmethodeventbuilder_p.h" #include "qwaylandwindow_p.h" +#if QT_CONFIG(xkbcommon) +#include +#endif + QT_BEGIN_NAMESPACE Q_LOGGING_CATEGORY(qLcQpaInputMethods, "qt.qpa.input.methods") @@ -383,8 +387,10 @@ Qt::KeyboardModifiers QWaylandTextInput::modifiersToQtModifiers(uint32_t modifiers) { Qt::KeyboardModifiers ret = Qt::NoModifier; - for (int i = 0; modifiers >>= 1; ++i) { - ret |= m_modifiersMap[i]; + for (int i = 0; i < m_modifiersMap.size(); ++i) { + if (modifiers & (1 << i)) { + ret |= m_modifiersMap[i]; + } } return ret; } @@ -406,6 +412,8 @@ void QWaylandInputContext::reset() { qCDebug(qLcQpaInputMethods) << Q_FUNC_INFO; + if (m_composeState) + xkb_compose_state_reset(m_composeState); QPlatformInputContext::reset(); @@ -526,9 +534,14 @@ return textInput()->inputDirection(); } -void QWaylandInputContext::setFocusObject(QObject *) +void QWaylandInputContext::setFocusObject(QObject *object) { qCDebug(qLcQpaInputMethods) << Q_FUNC_INFO; +#if QT_CONFIG(xkbcommon) + m_focusObject = object; +#else + Q_UNUSED(object); +#endif if (!textInput()) return; @@ -561,6 +574,92 @@ return mDisplay->defaultInputDevice()->textInput(); } +#if QT_CONFIG(xkbcommon) + +void QWaylandInputContext::ensureInitialized() +{ + if (m_initialized) + return; + + if (!m_XkbContext) { + qCWarning(qLcQpaInputMethods) << "error: xkb context has not been set on" << metaObject()->className(); + return; + } + + m_initialized = true; + const char *locale = setlocale(LC_CTYPE, ""); + if (!locale) + locale = setlocale(LC_CTYPE, nullptr); + qCDebug(qLcQpaInputMethods) << "detected locale (LC_CTYPE):" << locale; + + m_composeTable = xkb_compose_table_new_from_locale(m_XkbContext, locale, XKB_COMPOSE_COMPILE_NO_FLAGS); + if (m_composeTable) + m_composeState = xkb_compose_state_new(m_composeTable, XKB_COMPOSE_STATE_NO_FLAGS); + + if (!m_composeTable) { + qCWarning(qLcQpaInputMethods, "failed to create compose table"); + return; + } + if (!m_composeState) { + qCWarning(qLcQpaInputMethods, "failed to create compose state"); + return; + } +} + +bool QWaylandInputContext::filterEvent(const QEvent *event) +{ + auto keyEvent = static_cast(event); + if (keyEvent->type() != QEvent::KeyPress) + return false; + + if (!inputMethodAccepted()) + return false; + + // lazy initialization - we don't want to do this on an app startup + ensureInitialized(); + + if (!m_composeTable || !m_composeState) + return false; + + xkb_compose_state_feed(m_composeState, keyEvent->nativeVirtualKey()); + + switch (xkb_compose_state_get_status(m_composeState)) { + case XKB_COMPOSE_COMPOSING: + return true; + case XKB_COMPOSE_CANCELLED: + reset(); + return false; + case XKB_COMPOSE_COMPOSED: + { + const int size = xkb_compose_state_get_utf8(m_composeState, nullptr, 0); + QVarLengthArray buffer(size + 1); + xkb_compose_state_get_utf8(m_composeState, buffer.data(), buffer.size()); + QString composedText = QString::fromUtf8(buffer.constData()); + + QInputMethodEvent event; + event.setCommitString(composedText); + + if (!m_focusObject && qApp) + m_focusObject = qApp->focusObject(); + + if (m_focusObject) + QCoreApplication::sendEvent(m_focusObject, &event); + else + qCWarning(qLcQpaInputMethods, "no focus object"); + + reset(); + return true; + } + case XKB_COMPOSE_NOTHING: + return false; + default: + Q_UNREACHABLE(); + return false; + } +} + +#endif + } QT_END_NAMESPACE diff -Naur a/qtwayland/src/client/qwaylandinputcontext_p.h b/qtwayland/src/client/qwaylandinputcontext_p.h --- a/qtwayland/src/client/qwaylandinputcontext_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylandinputcontext_p.h 2022-01-25 17:30:02.332139562 +0000 @@ -61,6 +61,10 @@ #include #include +#include +#if QT_CONFIG(xkbcommon) +#include +#endif struct wl_callback; struct wl_callback_listener; @@ -155,11 +159,28 @@ void setFocusObject(QObject *object) override; +#if QT_CONFIG(xkbcommon) + bool filterEvent(const QEvent *event) override; + + // This invokable is called from QXkbCommon::setXkbContext(). + Q_INVOKABLE void setXkbContext(struct xkb_context *context) { m_XkbContext = context; } +#endif + private: QWaylandTextInput *textInput() const; QWaylandDisplay *mDisplay = nullptr; QPointer mCurrentWindow; + +#if QT_CONFIG(xkbcommon) + void ensureInitialized(); + + bool m_initialized = false; + QObject *m_focusObject = nullptr; + xkb_compose_table *m_composeTable = nullptr; + xkb_compose_state *m_composeState = nullptr; + struct xkb_context *m_XkbContext = nullptr; +#endif }; } diff -Naur a/qtwayland/src/client/qwaylandinputdevice.cpp b/qtwayland/src/client/qwaylandinputdevice.cpp --- a/qtwayland/src/client/qwaylandinputdevice.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylandinputdevice.cpp 2022-01-25 17:30:02.337139544 +0000 @@ -1201,7 +1201,7 @@ QPlatformInputContext *inputContext = QGuiApplicationPrivate::platformIntegration()->inputContext(); bool filtered = false; - if (inputContext && !mParent->mQDisplay->usingInputContextFromCompositor()) { + if (inputContext) { QKeyEvent event(type, key, modifiers, nativeScanCode, nativeVirtualKey, nativeModifiers, text, autorepeat, count); event.setTimestamp(timestamp); @@ -1300,14 +1300,6 @@ void QWaylandInputDevice::Keyboard::handleFocusLost() { mFocus = nullptr; -#if QT_CONFIG(clipboard) - if (auto *dataDevice = mParent->dataDevice()) - dataDevice->invalidateSelectionOffer(); -#endif -#if QT_CONFIG(wayland_client_primary_selection) - if (auto *device = mParent->primarySelectionDevice()) - device->invalidateSelectionOffer(); -#endif mParent->mQDisplay->handleKeyboardFocusChanged(mParent); mRepeatTimer.stop(); } diff -Naur a/qtwayland/src/client/qwaylandintegration.cpp b/qtwayland/src/client/qwaylandintegration.cpp --- a/qtwayland/src/client/qwaylandintegration.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylandintegration.cpp 2022-01-25 17:30:02.340139533 +0000 @@ -192,14 +192,18 @@ void QWaylandIntegration::initialize() { + mDisplay->initEventThread(); + + // Call after eventDispatcher is fully connected, for QWaylandDisplay::forceRoundTrip() + mDisplay->initialize(); + + // But the aboutToBlock() and awake() should be connected after initializePlatform(). + // Otherwise the connected flushRequests() may consumes up all events before processEvents starts to wait, + // so that processEvents(QEventLoop::WaitForMoreEvents) may be blocked in the forceRoundTrip(). QAbstractEventDispatcher *dispatcher = QGuiApplicationPrivate::eventDispatcher; QObject::connect(dispatcher, SIGNAL(aboutToBlock()), mDisplay.data(), SLOT(flushRequests())); QObject::connect(dispatcher, SIGNAL(awake()), mDisplay.data(), SLOT(flushRequests())); - int fd = wl_display_get_fd(mDisplay->wl_display()); - QSocketNotifier *sn = new QSocketNotifier(fd, QSocketNotifier::Read, mDisplay.data()); - QObject::connect(sn, SIGNAL(activated(QSocketDescriptor)), mDisplay.data(), SLOT(flushRequests())); - // Qt does not support running with no screens mDisplay->ensureScreen(); } @@ -262,6 +266,14 @@ return mDisplay.data(); } +Qt::KeyboardModifiers QWaylandIntegration::queryKeyboardModifiers() const +{ + if (auto *seat = mDisplay->currentInputDevice()) { + return seat->modifiers(); + } + return Qt::NoModifier; +} + QList QWaylandIntegration::possibleKeys(const QKeyEvent *event) const { if (auto *seat = mDisplay->currentInputDevice()) @@ -474,13 +486,11 @@ #if QT_CONFIG(xkbcommon) QXkbCommon::setXkbContext(mInputContext.data(), mDisplay->xkbContext()); + if (QWaylandInputContext* waylandInput = qobject_cast(mInputContext.get())) { + waylandInput->setXkbContext(mDisplay->xkbContext()); + } #endif - // Even if compositor-side input context handling has been requested, we fallback to - // client-side handling if compositor does not provide the text-input extension. This - // is why we need to check here which input context actually is being used. - mDisplay->mUsingInputContextFromCompositor = qobject_cast(mInputContext.data()); - qCDebug(lcQpaWayland) << "using input method:" << inputContext()->metaObject()->className(); } diff -Naur a/qtwayland/src/client/qwaylandintegration_p.h b/qtwayland/src/client/qwaylandintegration_p.h --- a/qtwayland/src/client/qwaylandintegration_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylandintegration_p.h 2022-01-25 17:30:02.334139555 +0000 @@ -107,6 +107,8 @@ QWaylandDisplay *display() const; + Qt::KeyboardModifiers queryKeyboardModifiers() const override; + QList possibleKeys(const QKeyEvent *event) const override; QStringList themeNames() const override; diff -Naur a/qtwayland/src/client/qwaylandscreen.cpp b/qtwayland/src/client/qwaylandscreen.cpp --- a/qtwayland/src/client/qwaylandscreen.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylandscreen.cpp 2022-01-25 17:30:02.332139562 +0000 @@ -72,7 +72,7 @@ qCWarning(lcQpaWayland) << "wl_output done event not supported by compositor," << "QScreen may not work correctly"; mWaylandDisplay->forceRoundTrip(); // Give the compositor a chance to send geometry etc. - mOutputDone = true; // Fake the done event + mProcessedEvents |= OutputDoneEvent; // Fake the done event maybeInitialize(); } } @@ -83,14 +83,25 @@ zxdg_output_v1::destroy(); } +uint QWaylandScreen::requiredEvents() const +{ + uint ret = OutputDoneEvent; + + if (mWaylandDisplay->xdgOutputManager()) { + ret |= XdgOutputNameEvent; + + if (mWaylandDisplay->xdgOutputManager()->version() < 3) + ret |= XdgOutputDoneEvent; + } + return ret; +} + void QWaylandScreen::maybeInitialize() { Q_ASSERT(!mInitialized); - if (!mOutputDone) - return; - - if (mWaylandDisplay->xdgOutputManager() && !mXdgOutputDone) + const uint requiredEvents = this->requiredEvents(); + if ((mProcessedEvents & requiredEvents) != requiredEvents) return; mInitialized = true; @@ -276,9 +287,8 @@ void QWaylandScreen::output_done() { - mOutputDone = true; - if (zxdg_output_v1::isInitialized() && mWaylandDisplay->xdgOutputManager()->version() >= 3) - mXdgOutputDone = true; + mProcessedEvents |= OutputDoneEvent; + if (mInitialized) { updateOutputProperties(); if (zxdg_output_v1::isInitialized()) @@ -339,7 +349,7 @@ if (Q_UNLIKELY(mWaylandDisplay->xdgOutputManager()->version() >= 3)) qWarning(lcQpaWayland) << "zxdg_output_v1.done received on version 3 or newer, this is most likely a bug in the compositor"; - mXdgOutputDone = true; + mProcessedEvents |= XdgOutputDoneEvent; if (mInitialized) updateXdgOutputProperties(); else @@ -348,7 +358,11 @@ void QWaylandScreen::zxdg_output_v1_name(const QString &name) { + if (Q_UNLIKELY(mInitialized)) + qWarning(lcQpaWayland) << "zxdg_output_v1.name received after output has been initialized, this is most likely a bug in the compositor"; + mOutputName = name; + mProcessedEvents |= XdgOutputNameEvent; } void QWaylandScreen::updateXdgOutputProperties() diff -Naur a/qtwayland/src/client/qwaylandscreen_p.h b/qtwayland/src/client/qwaylandscreen_p.h --- a/qtwayland/src/client/qwaylandscreen_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylandscreen_p.h 2022-01-25 17:30:02.332139562 +0000 @@ -116,6 +116,13 @@ static QWaylandScreen *fromWlOutput(::wl_output *output); private: + enum Event : uint { + XdgOutputDoneEvent = 0x1, + OutputDoneEvent = 0x2, + XdgOutputNameEvent = 0x4, + }; + uint requiredEvents() const; + void output_mode(uint32_t flags, int width, int height, int refresh) override; void output_geometry(int32_t x, int32_t y, int32_t width, int32_t height, @@ -148,8 +155,7 @@ QSize mPhysicalSize; QString mOutputName; Qt::ScreenOrientation m_orientation = Qt::PrimaryOrientation; - bool mOutputDone = false; - bool mXdgOutputDone = false; + uint mProcessedEvents = 0; bool mInitialized = false; #if QT_CONFIG(cursor) diff -Naur a/qtwayland/src/client/qwaylandwindow.cpp b/qtwayland/src/client/qwaylandwindow.cpp --- a/qtwayland/src/client/qwaylandwindow.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylandwindow.cpp 2022-01-25 17:30:02.340139533 +0000 @@ -76,7 +76,6 @@ QWaylandWindow::QWaylandWindow(QWindow *window, QWaylandDisplay *display) : QPlatformWindow(window) , mDisplay(display) - , mFrameQueue(mDisplay->createFrameQueue()) , mResizeAfterSwap(qEnvironmentVariableIsSet("QT_WAYLAND_RESIZE_AFTER_SWAP")) { { @@ -95,9 +94,6 @@ QWaylandWindow::~QWaylandWindow() { - mDisplay->destroyFrameQueue(mFrameQueue); - mDisplay->handleWindowDestroyed(this); - delete mWindowDecoration; if (mSurface) @@ -194,10 +190,11 @@ if (QScreen *s = window()->screen()) setOrientationMask(s->orientationUpdateMask()); setWindowFlags(window()->flags()); - if (window()->geometry().isEmpty()) + QRect geometry = windowGeometry(); + if (geometry.isEmpty()) setGeometry_helper(QRect(QPoint(), QSize(500,500))); else - setGeometry_helper(window()->geometry()); + setGeometry_helper(geometry); setMask(window()->mask()); if (mShellSurface) mShellSurface->requestWindowStates(window()->windowStates()); @@ -265,6 +262,8 @@ mMask = QRegion(); mQueuedBuffer = nullptr; + + mDisplay->handleWindowDestroyed(this); } QWaylandWindow *QWaylandWindow::fromWlSurface(::wl_surface *surface) @@ -332,14 +331,21 @@ void QWaylandWindow::setGeometry_helper(const QRect &rect) { + QSize minimum = windowMinimumSize(); + QSize maximum = windowMaximumSize(); QPlatformWindow::setGeometry(QRect(rect.x(), rect.y(), - qBound(window()->minimumWidth(), rect.width(), window()->maximumWidth()), - qBound(window()->minimumHeight(), rect.height(), window()->maximumHeight()))); + qBound(minimum.width(), rect.width(), maximum.width()), + qBound(minimum.height(), rect.height(), maximum.height()))); if (mSubSurfaceWindow) { QMargins m = QPlatformWindow::parent()->frameMargins(); mSubSurfaceWindow->set_position(rect.x() + m.left(), rect.y() + m.top()); - mSubSurfaceWindow->parent()->window()->requestUpdate(); + + QWaylandWindow *parentWindow = mSubSurfaceWindow->parent(); + if (parentWindow && parentWindow->isExposed()) { + QRect parentExposeGeometry(QPoint(), parentWindow->geometry().size()); + parentWindow->sendExposeEvent(parentExposeGeometry); + } } } @@ -362,7 +368,7 @@ if (isExposed() && !mInResizeFromApplyConfigure && exposeGeometry != mLastExposeGeometry) sendExposeEvent(exposeGeometry); - if (mShellSurface) + if (mShellSurface && isExposed()) mShellSurface->setWindowGeometry(windowContentGeometry()); if (isOpaque() && mMask.isEmpty()) @@ -427,9 +433,8 @@ if (window()->type() == Qt::Popup || window()->type() == Qt::ToolTip) activePopups << this; initWindow(); - mDisplay->flushRequests(); - setGeometry(window()->geometry()); + setGeometry(windowGeometry()); // Don't flush the events here, or else the newly visible window may start drawing, but since // there was no frame before it will be stuck at the waitForFrameSync() in // QWaylandShmBackingStore::beginPaint(). @@ -456,14 +461,15 @@ void QWaylandWindow::setMask(const QRegion &mask) { + QReadLocker locker(&mSurfaceLock); + if (!mSurface) + return; + if (mMask == mask) return; mMask = mask; - if (!mSurface) - return; - if (mMask.isEmpty()) { mSurface->set_input_region(nullptr); @@ -613,15 +619,21 @@ const wl_callback_listener QWaylandWindow::callbackListener = { [](void *data, wl_callback *callback, uint32_t time) { - Q_UNUSED(callback); Q_UNUSED(time); auto *window = static_cast(data); + + Q_ASSERT(callback == window->mFrameCallback); + wl_callback_destroy(callback); + window->mFrameCallback = nullptr; + window->handleFrameCallback(); } }; void QWaylandWindow::handleFrameCallback() { + QMutexLocker locker(&mFrameSyncMutex); + mWaitingForFrameCallback = false; mFrameCallbackElapsedTimer.invalidate(); @@ -643,12 +655,16 @@ mWaitingForUpdateDelivery = true; QMetaObject::invokeMethod(this, doHandleExpose, Qt::QueuedConnection); } + + mFrameSyncWait.notify_all(); } bool QWaylandWindow::waitForFrameSync(int timeout) { - QMutexLocker locker(mFrameQueue.mutex); - mDisplay->dispatchQueueWhile(mFrameQueue.queue, [&]() { return mWaitingForFrameCallback; }, timeout); + QMutexLocker locker(&mFrameSyncMutex); + + QDeadlineTimer deadline(timeout); + while (mWaitingForFrameCallback && mFrameSyncWait.wait(&mFrameSyncMutex, deadline)) { } if (mWaitingForFrameCallback) { qCDebug(lcWaylandBackingstore) << "Didn't receive frame callback in time, window should now be inexposed"; @@ -1070,10 +1086,18 @@ return true; } +Qt::WindowStates QWaylandWindow::windowStates() const +{ + return mLastReportedWindowStates; +} + void QWaylandWindow::handleWindowStatesChanged(Qt::WindowStates states) { createDecoration(); - QWindowSystemInterface::handleWindowStateChanged(window(), states, mLastReportedWindowStates); + Qt::WindowStates statesWithoutActive = states & ~Qt::WindowActive; + Qt::WindowStates lastStatesWithoutActive = mLastReportedWindowStates & ~Qt::WindowActive; + QWindowSystemInterface::handleWindowStateChanged(window(), statesWithoutActive, + lastStatesWithoutActive); mLastReportedWindowStates = states; } @@ -1136,8 +1160,11 @@ Q_ASSERT(hasPendingUpdateRequest()); // should be set by QPA // If we have a frame callback all is good and will be taken care of there - if (mWaitingForFrameCallback) - return; + { + QMutexLocker locker(&mFrameSyncMutex); + if (mWaitingForFrameCallback) + return; + } // If we've already called deliverUpdateRequest(), but haven't seen any attach+commit/swap yet // This is a somewhat redundant behavior and might indicate a bug in the calling code, so log @@ -1150,7 +1177,12 @@ // so use invokeMethod to delay the delivery a bit. QMetaObject::invokeMethod(this, [this] { // Things might have changed in the meantime - if (hasPendingUpdateRequest() && !mWaitingForFrameCallback) + { + QMutexLocker locker(&mFrameSyncMutex); + if (mWaitingForFrameCallback) + return; + } + if (hasPendingUpdateRequest()) deliverUpdateRequest(); }, Qt::QueuedConnection); } @@ -1161,19 +1193,19 @@ void QWaylandWindow::handleUpdate() { qCDebug(lcWaylandBackingstore) << "handleUpdate" << QThread::currentThread(); + + if (mWaitingForFrameCallback) + return; + // TODO: Should sync subsurfaces avoid requesting frame callbacks? QReadLocker lock(&mSurfaceLock); if (!mSurface) return; - if (mFrameCallback) { - wl_callback_destroy(mFrameCallback); - mFrameCallback = nullptr; - } + QMutexLocker locker(&mFrameSyncMutex); - QMutexLocker locker(mFrameQueue.mutex); struct ::wl_surface *wrappedSurface = reinterpret_cast(wl_proxy_create_wrapper(mSurface->object())); - wl_proxy_set_queue(reinterpret_cast(wrappedSurface), mFrameQueue.queue); + wl_proxy_set_queue(reinterpret_cast(wrappedSurface), mDisplay->frameEventQueue()); mFrameCallback = wl_surface_frame(wrappedSurface); wl_proxy_wrapper_destroy(wrappedSurface); wl_callback_add_listener(mFrameCallback, &QWaylandWindow::callbackListener, this); @@ -1183,6 +1215,8 @@ // Start a timer for handling the case when the compositor stops sending frame callbacks. if (mFrameCallbackTimeout > 0) { QMetaObject::invokeMethod(this, [this] { + QMutexLocker locker(&mFrameSyncMutex); + if (mWaitingForFrameCallback) { if (mFrameCallbackCheckIntervalTimerId < 0) mFrameCallbackCheckIntervalTimerId = startTimer(mFrameCallbackTimeout); @@ -1231,12 +1265,14 @@ void QWaylandWindow::setOpaqueArea(const QRegion &opaqueArea) { - if (opaqueArea == mOpaqueArea || !mSurface) + const QRegion translatedOpaqueArea = opaqueArea.translated(frameMargins().left(), frameMargins().top()); + + if (translatedOpaqueArea == mOpaqueArea || !mSurface) return; - mOpaqueArea = opaqueArea; + mOpaqueArea = translatedOpaqueArea; - struct ::wl_region *region = mDisplay->createRegion(opaqueArea); + struct ::wl_region *region = mDisplay->createRegion(translatedOpaqueArea); mSurface->set_opaque_region(region); wl_region_destroy(region); } diff -Naur a/qtwayland/src/client/qwaylandwindow_p.h b/qtwayland/src/client/qwaylandwindow_p.h --- a/qtwayland/src/client/qwaylandwindow_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/qwaylandwindow_p.h 2022-01-25 17:30:02.340139533 +0000 @@ -148,6 +148,7 @@ void setWindowState(Qt::WindowStates states) override; void setWindowFlags(Qt::WindowFlags flags) override; void handleWindowStatesChanged(Qt::WindowStates states); + Qt::WindowStates windowStates() const; void raise() override; void lower() override; @@ -231,7 +232,7 @@ int mFrameCallbackCheckIntervalTimerId = -1; QElapsedTimer mFrameCallbackElapsedTimer; struct ::wl_callback *mFrameCallback = nullptr; - QWaylandDisplay::FrameQueue mFrameQueue; + QMutex mFrameSyncMutex; QWaitCondition mFrameSyncWait; // True when we have called deliverRequestUpdate, but the client has not yet attached a new buffer diff -Naur a/qtwayland/src/client/shellintegration/qwaylandshellintegration_p.h b/qtwayland/src/client/shellintegration/qwaylandshellintegration_p.h --- a/qtwayland/src/client/shellintegration/qwaylandshellintegration_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/client/shellintegration/qwaylandshellintegration_p.h 2022-01-25 17:30:02.336139547 +0000 @@ -73,11 +73,10 @@ return true; } virtual QWaylandShellSurface *createShellSurface(QWaylandWindow *window) = 0; + // kept for binary compat with layer-shell-qt virtual void handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus) { - if (newFocus) - m_display->handleWindowActivated(newFocus); - if (oldFocus) - m_display->handleWindowDeactivated(oldFocus); + Q_UNUSED(newFocus); + Q_UNUSED(oldFocus); } virtual void *nativeResourceForWindow(const QByteArray &resource, QWindow *window) { Q_UNUSED(resource); diff -Naur a/qtwayland/src/compositor/compositor_api/qwaylandquickcompositor.cpp b/qtwayland/src/compositor/compositor_api/qwaylandquickcompositor.cpp --- a/qtwayland/src/compositor/compositor_api/qwaylandquickcompositor.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/compositor/compositor_api/qwaylandquickcompositor.cpp 2022-01-25 17:30:02.325139587 +0000 @@ -161,7 +161,7 @@ GrabState *state = new GrabState; state->grabber = grabber; state->buffer = buffer; - static_cast(output->window())->scheduleRenderJob(state, QQuickWindow::NoStage); + static_cast(output->window())->scheduleRenderJob(state, QQuickWindow::AfterRenderingStage); #else emit grabber->failed(QWaylandSurfaceGrabber::UnknownBufferType); #endif diff -Naur a/qtwayland/src/compositor/compositor_api/qwaylandquickitem.cpp b/qtwayland/src/compositor/compositor_api/qwaylandquickitem.cpp --- a/qtwayland/src/compositor/compositor_api/qwaylandquickitem.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/compositor/compositor_api/qwaylandquickitem.cpp 2022-01-25 17:30:02.325139587 +0000 @@ -737,6 +737,7 @@ childItem->setVisible(true); childItem->setParentItem(this); connect(childSurface, &QWaylandSurface::subsurfacePositionChanged, childItem, &QWaylandQuickItem::handleSubsurfacePosition); + connect(childSurface, &QWaylandSurface::destroyed, childItem, &QObject::deleteLater); } else { bool success = QMetaObject::invokeMethod(d->subsurfaceHandler, "handleSubsurfaceAdded", Q_ARG(QWaylandSurface *, childSurface)); if (!success) diff -Naur a/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp --- a/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp 2022-01-25 17:30:02.332139562 +0000 @@ -131,14 +131,16 @@ if (!disableResizeCheck) { wl_egl_window_get_attached_size(m_waylandEglWindow, ¤t_width, ¤t_height); } - if (disableResizeCheck || (current_width != sizeWithMargins.width() || current_height != sizeWithMargins.height())) { + if (disableResizeCheck || (current_width != sizeWithMargins.width() || current_height != sizeWithMargins.height()) || m_requestedSize != sizeWithMargins) { wl_egl_window_resize(m_waylandEglWindow, sizeWithMargins.width(), sizeWithMargins.height(), mOffset.x(), mOffset.y()); + m_requestedSize = sizeWithMargins; mOffset = QPoint(); m_resize = true; } } else if (create && wlSurface()) { m_waylandEglWindow = wl_egl_window_create(wlSurface(), sizeWithMargins.width(), sizeWithMargins.height()); + m_requestedSize = sizeWithMargins; } if (!m_eglSurface && m_waylandEglWindow && create) { diff -Naur a/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h b/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h --- a/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h 2022-01-25 17:30:02.332139562 +0000 @@ -88,6 +88,7 @@ mutable QOpenGLFramebufferObject *m_contentFBO = nullptr; QSurfaceFormat m_format; + QSize m_requestedSize; }; } diff -Naur a/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp b/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp --- a/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp 2022-01-25 17:30:02.337139544 +0000 @@ -336,6 +336,8 @@ << "It may also cause the event loop to freeze in some situations"; } + m_supportSurfaceLessContext = q_hasEglExtension(m_eglDisplay, "EGL_KHR_surfaceless_context"); + updateGLFormat(); } @@ -404,7 +406,10 @@ QWaylandGLContext::~QWaylandGLContext() { delete m_blitter; + m_blitter = nullptr; eglDestroyContext(m_eglDisplay, m_context); + if (m_decorationsContext != EGL_NO_CONTEXT) + eglDestroyContext(m_eglDisplay, m_decorationsContext); } bool QWaylandGLContext::makeCurrent(QPlatformSurface *surface) @@ -439,6 +444,10 @@ eglSurface = window->eglSurface(); } + if (eglSurface == EGL_NO_SURFACE && m_supportSurfaceLessContext) { + return false; + } + if (!eglMakeCurrent(m_eglDisplay, eglSurface, eglSurface, m_context)) { qWarning("QWaylandGLContext::makeCurrent: eglError: %x, this: %p \n", eglGetError(), this); window->setCanResize(true); diff -Naur a/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.h b/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.h --- a/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.h 2022-01-25 17:30:02.324139591 +0000 @@ -93,6 +93,7 @@ DecorationsBlitter *m_blitter = nullptr; uint m_api; bool m_supportNonBlockingSwap = true; + bool m_supportSurfaceLessContext = false; }; } diff -Naur a/qtwayland/src/plugins/shellintegration/wl-shell/qwaylandwlshellsurface.cpp b/qtwayland/src/plugins/shellintegration/wl-shell/qwaylandwlshellsurface.cpp --- a/qtwayland/src/plugins/shellintegration/wl-shell/qwaylandwlshellsurface.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/plugins/shellintegration/wl-shell/qwaylandwlshellsurface.cpp 2022-01-25 17:30:02.324139591 +0000 @@ -134,7 +134,7 @@ { if ((m_pending.states & (Qt::WindowMaximized|Qt::WindowFullScreen)) && !(m_applied.states & (Qt::WindowMaximized|Qt::WindowFullScreen))) { - m_normalSize = m_window->window()->frameGeometry().size(); + m_normalSize = m_window->windowFrameGeometry().size(); } if (m_pending.states != m_applied.states) diff -Naur a/qtwayland/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/qtwayland/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp --- a/qtwayland/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp 2022-01-25 17:30:02.336139547 +0000 @@ -67,11 +67,6 @@ QWaylandXdgSurface::Toplevel::~Toplevel() { - if (m_applied.states & Qt::WindowActive) { - QWaylandWindow *window = m_xdgSurface->window(); - window->display()->handleWindowDeactivated(window); - } - // The protocol spec requires that the decoration object is deleted before xdg_toplevel. delete m_decoration; m_decoration = nullptr; @@ -83,18 +78,17 @@ void QWaylandXdgSurface::Toplevel::applyConfigure() { if (!(m_applied.states & (Qt::WindowMaximized|Qt::WindowFullScreen))) - m_normalSize = m_xdgSurface->m_window->window()->frameGeometry().size(); + m_normalSize = m_xdgSurface->m_window->windowFrameGeometry().size(); - if ((m_pending.states & Qt::WindowActive) && !(m_applied.states & Qt::WindowActive)) + if ((m_pending.states & Qt::WindowActive) && !(m_applied.states & Qt::WindowActive) + && !m_xdgSurface->m_window->display()->isKeyboardAvailable()) m_xdgSurface->m_window->display()->handleWindowActivated(m_xdgSurface->m_window); - if (!(m_pending.states & Qt::WindowActive) && (m_applied.states & Qt::WindowActive)) + if (!(m_pending.states & Qt::WindowActive) && (m_applied.states & Qt::WindowActive) + && !m_xdgSurface->m_window->display()->isKeyboardAvailable()) m_xdgSurface->m_window->display()->handleWindowDeactivated(m_xdgSurface->m_window); - // TODO: none of the other plugins send WindowActive either, but is it on purpose? - Qt::WindowStates statesWithoutActive = m_pending.states & ~Qt::WindowActive; - - m_xdgSurface->m_window->handleWindowStatesChanged(statesWithoutActive); + m_xdgSurface->m_window->handleWindowStatesChanged(m_pending.states); if (m_pending.size.isEmpty()) { // An empty size in the configure means it's up to the client to choose the size @@ -105,8 +99,6 @@ m_xdgSurface->m_window->resizeFromApplyConfigure(m_pending.size); } - m_xdgSurface->setSizeHints(); - m_applied = m_pending; qCDebug(lcQpaWayland) << "Applied pending xdg_toplevel configure event:" << m_applied.size << m_applied.states; } @@ -178,9 +170,12 @@ } if (changedStates & Qt::WindowFullScreen) { - if (states & Qt::WindowFullScreen) - set_fullscreen(nullptr); - else + if (states & Qt::WindowFullScreen) { + auto screen = m_xdgSurface->window()->waylandScreen(); + if (screen) { + set_fullscreen(screen->output()); + } + } else unset_fullscreen(); } @@ -254,6 +249,7 @@ m_toplevel->set_parent(parentXdgSurface->m_toplevel->object()); } } + setSizeHints(); } QWaylandXdgSurface::~QWaylandXdgSurface() diff -Naur a/qtwayland/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp b/qtwayland/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp --- a/qtwayland/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp 2022-01-25 17:30:02.336139547 +0000 @@ -69,20 +69,6 @@ return m_xdgShell->getXdgSurface(window); } -void QWaylandXdgShellIntegration::handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus) -{ - if (newFocus) { - auto *xdgSurface = qobject_cast(newFocus->shellSurface()); - if (xdgSurface && !xdgSurface->handlesActiveState()) - m_display->handleWindowActivated(newFocus); - } - if (oldFocus && qobject_cast(oldFocus->shellSurface())) { - auto *xdgSurface = qobject_cast(oldFocus->shellSurface()); - if (xdgSurface && !xdgSurface->handlesActiveState()) - m_display->handleWindowDeactivated(oldFocus); - } -} - } QT_END_NAMESPACE diff -Naur a/qtwayland/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h b/qtwayland/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h --- a/qtwayland/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h 2022-01-25 17:30:02.336139547 +0000 @@ -65,7 +65,6 @@ QWaylandXdgShellIntegration() {} bool initialize(QWaylandDisplay *display) override; QWaylandShellSurface *createShellSurface(QWaylandWindow *window) override; - void handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus) override; private: QScopedPointer m_xdgShell; diff -Naur a/qtwayland/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp b/qtwayland/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp --- a/qtwayland/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp 2022-01-25 17:30:02.336139547 +0000 @@ -85,13 +85,6 @@ return m_xdgShell->createXdgSurface(window); } -void QWaylandXdgShellV5Integration::handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus) { - if (newFocus && qobject_cast(newFocus->shellSurface())) - m_display->handleWindowActivated(newFocus); - if (oldFocus && qobject_cast(oldFocus->shellSurface())) - m_display->handleWindowDeactivated(oldFocus); -} - } QT_END_NAMESPACE diff -Naur a/qtwayland/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h b/qtwayland/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h --- a/qtwayland/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h 2022-01-25 17:30:02.336139547 +0000 @@ -67,7 +67,6 @@ QWaylandXdgShellV5Integration() {} bool initialize(QWaylandDisplay *display) override; QWaylandShellSurface *createShellSurface(QWaylandWindow *window) override; - void handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus) override; private: QScopedPointer m_xdgShell; diff -Naur a/qtwayland/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp b/qtwayland/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp --- a/qtwayland/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgsurfacev5.cpp 2022-01-25 17:30:02.324139591 +0000 @@ -157,7 +157,7 @@ if (m_pending.isResizing) m_normalSize = m_pending.size; else if (!(m_acked.states & (Qt::WindowMaximized|Qt::WindowFullScreen))) - m_normalSize = m_window->window()->frameGeometry().size(); + m_normalSize = m_window->windowFrameGeometry().size(); if ((m_pending.states & Qt::WindowActive) && !(m_acked.states & Qt::WindowActive)) m_window->display()->handleWindowActivated(m_window); diff -Naur a/qtwayland/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp b/qtwayland/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp --- a/qtwayland/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6.cpp 2022-01-25 17:30:02.324139591 +0000 @@ -72,7 +72,7 @@ void QWaylandXdgSurfaceV6::Toplevel::applyConfigure() { if (!(m_applied.states & (Qt::WindowMaximized|Qt::WindowFullScreen))) - m_normalSize = m_xdgSurface->m_window->window()->frameGeometry().size(); + m_normalSize = m_xdgSurface->m_window->windowFrameGeometry().size(); if ((m_pending.states & Qt::WindowActive) && !(m_applied.states & Qt::WindowActive)) m_xdgSurface->m_window->display()->handleWindowActivated(m_xdgSurface->m_window); diff -Naur a/qtwayland/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp b/qtwayland/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp --- a/qtwayland/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp 2022-01-25 17:30:02.336139547 +0000 @@ -68,20 +68,6 @@ return m_xdgShell->getXdgSurface(window); } -void QWaylandXdgShellV6Integration::handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus) -{ - if (newFocus) { - auto *xdgSurface = qobject_cast(newFocus->shellSurface()); - if (xdgSurface && !xdgSurface->handlesActiveState()) - m_display->handleWindowActivated(newFocus); - } - if (oldFocus && qobject_cast(oldFocus->shellSurface())) { - auto *xdgSurface = qobject_cast(oldFocus->shellSurface()); - if (xdgSurface && !xdgSurface->handlesActiveState()) - m_display->handleWindowDeactivated(oldFocus); - } -} - } QT_END_NAMESPACE diff -Naur a/qtwayland/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h b/qtwayland/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h --- a/qtwayland/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h 2022-01-25 17:30:02.336139547 +0000 @@ -65,7 +65,6 @@ QWaylandXdgShellV6Integration() {} bool initialize(QWaylandDisplay *display) override; QWaylandShellSurface *createShellSurface(QWaylandWindow *window) override; - void handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus) override; private: QScopedPointer m_xdgShell; diff -Naur a/qtwayland/src/qtwaylandscanner/qtwaylandscanner.cpp b/qtwayland/src/qtwaylandscanner/qtwaylandscanner.cpp --- a/qtwayland/src/qtwaylandscanner/qtwaylandscanner.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/qtwaylandscanner/qtwaylandscanner.cpp 2022-01-25 17:30:02.324139591 +0000 @@ -814,7 +814,9 @@ printf(" if (Q_LIKELY(that)) {\n"); printf(" that->m_resource_map.remove(resource->client(), resource);\n"); printf(" that->%s_destroy_resource(resource);\n", interfaceNameStripped); - printf(" if (that->m_resource == resource)\n"); + printf("\n"); + printf(" that = resource->%s_object;\n", interfaceNameStripped); + printf(" if (that && that->m_resource == resource)\n"); printf(" that->m_resource = nullptr;\n"); printf(" }\n"); printf(" delete resource;\n"); diff -Naur a/qtwayland/src/shared/qwaylandinputmethodeventbuilder.cpp b/qtwayland/src/shared/qwaylandinputmethodeventbuilder.cpp --- a/qtwayland/src/shared/qwaylandinputmethodeventbuilder.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/shared/qwaylandinputmethodeventbuilder.cpp 2022-01-25 17:30:02.337139544 +0000 @@ -151,7 +151,7 @@ { QList attributes; - if (m_preeditCursor < 0) { + if (m_preeditCursor <= 0) { attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, 0, 0, QVariant())); } else if (m_preeditCursor > 0) { attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, indexFromWayland(text, m_preeditCursor), 1, QVariant())); diff -Naur a/qtwayland/src/shared/qwaylandmimehelper.cpp b/qtwayland/src/shared/qwaylandmimehelper.cpp --- a/qtwayland/src/shared/qwaylandmimehelper.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/src/shared/qwaylandmimehelper.cpp 2022-01-25 17:30:02.334139555 +0000 @@ -60,7 +60,7 @@ buf.open(QIODevice::ReadWrite); QByteArray fmt = "BMP"; if (mimeType.startsWith(QLatin1String("image/"))) { - QByteArray imgFmt = mimeType.mid(6).toUpper().toLatin1(); + QByteArray imgFmt = mimeType.mid(6).toLower().toLatin1(); if (QImageWriter::supportedImageFormats().contains(imgFmt)) fmt = imgFmt; } diff -Naur a/qtwayland/tests/auto/client/datadevicev1/tst_datadevicev1.cpp b/qtwayland/tests/auto/client/datadevicev1/tst_datadevicev1.cpp --- a/qtwayland/tests/auto/client/datadevicev1/tst_datadevicev1.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/tests/auto/client/datadevicev1/tst_datadevicev1.cpp 2022-01-25 17:30:02.338139540 +0000 @@ -35,7 +35,7 @@ using namespace MockCompositor; -constexpr int dataDeviceVersion = 1; +constexpr int dataDeviceVersion = 3; class DataDeviceCompositor : public DefaultCompositor { public: diff -Naur a/qtwayland/tests/auto/client/surface/tst_surface.cpp b/qtwayland/tests/auto/client/surface/tst_surface.cpp --- a/qtwayland/tests/auto/client/surface/tst_surface.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/tests/auto/client/surface/tst_surface.cpp 2022-01-25 17:30:02.331139565 +0000 @@ -167,17 +167,40 @@ void tst_surface::createSubsurface() { QRasterWindow window; - window.resize(64, 64); - window.show(); - QCOMPOSITOR_TRY_VERIFY(xdgToplevel()); - exec([=] { xdgToplevel()->sendCompleteConfigure(); }); - QCOMPOSITOR_TRY_VERIFY(xdgSurface()->m_committedConfigureSerial); + window.setObjectName("main"); + window.resize(200, 200); QRasterWindow subWindow; + subWindow.setObjectName("subwindow"); subWindow.setParent(&window); subWindow.resize(64, 64); + + window.show(); subWindow.show(); + QCOMPOSITOR_TRY_VERIFY(subSurface()); + QCOMPOSITOR_TRY_VERIFY(xdgToplevel()); + exec([=] { xdgToplevel()->sendCompleteConfigure(); }); + QCOMPOSITOR_TRY_VERIFY(xdgSurface()->m_committedConfigureSerial); + + const Surface *mainSurface = exec([=] {return surface(0);}); + const Surface *childSurface = exec([=] {return surface(1);}); + QSignalSpy mainSurfaceCommitSpy(mainSurface, &Surface::commit); + QSignalSpy childSurfaceCommitSpy(childSurface, &Surface::commit); + + // Move subsurface. The parent should redraw and commit + subWindow.setGeometry(100, 100, 64, 64); + // the toplevel should commit to indicate the subsurface moved + QCOMPOSITOR_TRY_COMPARE(mainSurfaceCommitSpy.count(), 1); + mainSurfaceCommitSpy.clear(); + childSurfaceCommitSpy.clear(); + + // Move and resize the subSurface. The parent should redraw and commit + // The child should also redraw + subWindow.setGeometry(50, 50, 80, 80); + QCOMPOSITOR_TRY_COMPARE(mainSurfaceCommitSpy.count(), 1); + QCOMPOSITOR_TRY_COMPARE(childSurfaceCommitSpy.count(), 1); + } // Used to cause a crash in libwayland (QTBUG-79674) diff -Naur a/qtwayland/tests/auto/client/xdgshell/tst_xdgshell.cpp b/qtwayland/tests/auto/client/xdgshell/tst_xdgshell.cpp --- a/qtwayland/tests/auto/client/xdgshell/tst_xdgshell.cpp 2020-10-27 08:02:11.000000000 +0000 +++ b/qtwayland/tests/auto/client/xdgshell/tst_xdgshell.cpp 2022-01-25 17:30:02.336139547 +0000 @@ -31,6 +31,7 @@ #include #include #include +#include using namespace MockCompositor; @@ -138,6 +139,7 @@ void tst_xdgshell::configureStates() { + QVERIFY(qputenv("QT_WAYLAND_FRAME_CALLBACK_TIMEOUT", "0")); QRasterWindow window; window.resize(64, 48); window.show(); @@ -154,9 +156,12 @@ // Toplevel windows don't know their position on xdg-shell // QCOMPARE(window.frameGeometry().topLeft(), QPoint()); // TODO: this doesn't currently work when window decorations are enabled -// QEXPECT_FAIL("", "configure has already been acked, we shouldn't have to wait for isActive", Continue); -// QVERIFY(window.isActive()); - QTRY_VERIFY(window.isActive()); // Just make sure it eventually get's set correctly + // window.windowstate() is driven by keyboard focus, however for decorations we want to follow + // XDGShell this is internal to QtWayland so it is queried directly + auto waylandWindow = static_cast(window.handle()); + Q_ASSERT(waylandWindow); + QTRY_VERIFY(waylandWindow->windowStates().testFlag( + Qt::WindowActive)); // Just make sure it eventually get's set correctly const QSize screenSize(640, 480); const uint maximizedSerial = exec([=] { @@ -186,6 +191,7 @@ QCOMPARE(window.windowStates(), Qt::WindowNoState); QCOMPARE(window.frameGeometry().size(), windowedSize); // QCOMPARE(window.frameGeometry().topLeft(), QPoint()); // TODO: this doesn't currently work when window decorations are enabled + QVERIFY(qunsetenv("QT_WAYLAND_FRAME_CALLBACK_TIMEOUT")); } void tst_xdgshell::popup() @@ -505,7 +511,7 @@ window.show(); QCOMPOSITOR_TRY_VERIFY(xdgToplevel()); - exec([=] { xdgToplevel()->sendCompleteConfigure(); }); + // we don't roundtrip with our configuration the initial commit should be correct QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.minSize, QSize(100, 100)); QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.maxSize, QSize(1000, 1000)); diff -Naur a/qtwebchannel/src/webchannel/qmetaobjectpublisher.cpp b/qtwebchannel/src/webchannel/qmetaobjectpublisher.cpp --- a/qtwebchannel/src/webchannel/qmetaobjectpublisher.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtwebchannel/src/webchannel/qmetaobjectpublisher.cpp 2022-01-25 17:30:35.227021555 +0000 @@ -186,8 +186,6 @@ QMetaObjectPublisher::QMetaObjectPublisher(QWebChannel *webChannel) : QObject(webChannel) , webChannel(webChannel) - , signalHandler(this) - , clientIsIdle(false) , blockUpdates(false) , propertyUpdatesInitialized(false) { @@ -301,17 +299,17 @@ return data; } -void QMetaObjectPublisher::setClientIsIdle(bool isIdle) +void QMetaObjectPublisher::setClientIsIdle(bool isIdle, QWebChannelAbstractTransport *transport) { - if (clientIsIdle == isIdle) { - return; - } - clientIsIdle = isIdle; - if (!isIdle && timer.isActive()) { - timer.stop(); - } else if (isIdle && !timer.isActive()) { - timer.start(PROPERTY_UPDATE_INTERVAL, this); - } + transportState[transport].clientIsIdle = isIdle; + if (isIdle) + sendEnqueuedPropertyUpdates(transport); +} + +bool QMetaObjectPublisher::isClientIdle(QWebChannelAbstractTransport *transport) +{ + auto found = transportState.find(transport); + return found != transportState.end() && found.value().clientIsIdle; } QJsonObject QMetaObjectPublisher::initializeClient(QWebChannelAbstractTransport *transport) @@ -333,6 +331,7 @@ void QMetaObjectPublisher::initializePropertyUpdates(const QObject *const object, const QJsonObject &objectInfo) { + auto *signalHandler = signalHandlerFor(object); foreach (const QJsonValue &propertyInfoVar, objectInfo[KEY_PROPERTIES].toArray()) { const QJsonArray &propertyInfo = propertyInfoVar.toArray(); if (propertyInfo.size() < 2) { @@ -353,19 +352,19 @@ // Only connect for a property update once if (connectedProperties.isEmpty()) { - signalHandler.connectTo(object, signalIndex); + signalHandler->connectTo(object, signalIndex); } connectedProperties.insert(propertyIndex); } // also always connect to destroyed signal - signalHandler.connectTo(object, s_destroyedSignalIndex); + signalHandler->connectTo(object, s_destroyedSignalIndex); } void QMetaObjectPublisher::sendPendingPropertyUpdates() { - if (blockUpdates || !clientIsIdle || pendingPropertyUpdates.isEmpty()) { + if (blockUpdates) { return; } @@ -415,18 +414,19 @@ // data does not contain specific updates if (!data.isEmpty()) { - setClientIsIdle(false); - message[KEY_DATA] = data; - broadcastMessage(message); + enqueueBroadcastMessage(message); } // send every property update which is not supposed to be broadcasted const QHash::const_iterator suend = specificUpdates.constEnd(); for (QHash::const_iterator it = specificUpdates.constBegin(); it != suend; ++it) { message[KEY_DATA] = it.value(); - it.key()->sendMessage(message); + enqueueMessage(message, it.key()); } + + for (auto state = transportState.begin(); state != transportState.end(); ++state) + sendEnqueuedPropertyUpdates(state.key()); } QVariant QMetaObjectPublisher::invokeMethod(QObject *const object, const QMetaMethod &method, @@ -572,7 +572,7 @@ } } else { pendingPropertyUpdates[object][signalIndex] = arguments; - if (clientIsIdle && !blockUpdates && !timer.isActive()) { + if (!blockUpdates && !timer.isActive()) { timer.start(PROPERTY_UPDATE_INTERVAL, this); } } @@ -590,7 +590,7 @@ // only remove from handler when we initialized the property updates // cf: https://bugreports.qt.io/browse/QTBUG-60250 if (propertyUpdatesInitialized) { - signalHandler.remove(object); + signalHandlerFor(object)->remove(object); signalToPropertyMap.remove(object); } pendingPropertyUpdates.remove(object); @@ -852,6 +852,52 @@ } } +void QMetaObjectPublisher::enqueueBroadcastMessage(const QJsonObject &message) +{ + if (webChannel->d_func()->transports.isEmpty()) { + qWarning("QWebChannel is not connected to any transports, cannot send message: %s", + QJsonDocument(message).toJson().constData()); + return; + } + + for (auto *transport : webChannel->d_func()->transports) { + auto &state = transportState[transport]; + state.queuedMessages.append(message); + } +} + +void QMetaObjectPublisher::enqueueMessage(const QJsonObject &message, + QWebChannelAbstractTransport *transport) +{ + auto &state = transportState[transport]; + state.queuedMessages.append(message); +} + +void QMetaObjectPublisher::sendEnqueuedPropertyUpdates(QWebChannelAbstractTransport *transport) +{ + auto found = transportState.find(transport); + if (found != transportState.end() && found.value().clientIsIdle + && !found.value().queuedMessages.isEmpty()) { + + // If the client is connected with an in-process transport, it can + // happen that a message triggers a subsequent property change. In + // that case, we need to ensure that the queued messages have already + // been cleared; otherwise the recursive call will send everythig again. + // Case in point: The qmlwebchannel tests fail if we don't clear the + // queued messages before sending them out. + // For that same reason set the client to "busy" (aka non-idle) just + // right before sending out the messages; otherwise a potential + // "Idle" type message will not correctly restore the Idle state. + const auto messages = std::move(found.value().queuedMessages); + Q_ASSERT(found.value().queuedMessages.isEmpty()); + found.value().clientIsIdle = false; + + for (const auto &message : messages) { + transport->sendMessage(message); + } + } +} + void QMetaObjectPublisher::handleMessage(const QJsonObject &message, QWebChannelAbstractTransport *transport) { if (!webChannel->d_func()->transports.contains(transport)) { @@ -866,7 +912,7 @@ const MessageType type = toType(message.value(KEY_TYPE)); if (type == TypeIdle) { - setClientIsIdle(true); + setClientIsIdle(true, transport); } else if (type == TypeInit) { if (!message.contains(KEY_ID)) { qWarning("JSON message object is missing the id property: %s", @@ -913,9 +959,9 @@ return; transport->sendMessage(createResponse(message.value(KEY_ID), wrapResult(result, transport))); } else if (type == TypeConnectToSignal) { - signalHandler.connectTo(object, message.value(KEY_SIGNAL).toInt(-1)); + signalHandlerFor(object)->connectTo(object, message.value(KEY_SIGNAL).toInt(-1)); } else if (type == TypeDisconnectFromSignal) { - signalHandler.disconnectFrom(object, message.value(KEY_SIGNAL).toInt(-1)); + signalHandlerFor(object)->disconnectFrom(object, message.value(KEY_SIGNAL).toInt(-1)); } else if (type == TypeSetProperty) { setProperty(object, message.value(KEY_PROPERTY).toInt(-1), message.value(KEY_VALUE)); @@ -931,6 +977,7 @@ blockUpdates = block; if (!blockUpdates) { + timer.start(PROPERTY_UPDATE_INTERVAL, this); sendPendingPropertyUpdates(); } else if (timer.isActive()) { timer.stop(); @@ -948,4 +995,15 @@ } } +SignalHandler *QMetaObjectPublisher::signalHandlerFor(const QObject *object) +{ + auto thread = object->thread(); + auto it = signalHandlers.find(thread); + if (it == signalHandlers.end()) { + it = signalHandlers.emplace(thread, this).first; + it->second.moveToThread(thread); + } + return &it->second; +} + QT_END_NAMESPACE diff -Naur a/qtwebchannel/src/webchannel/qmetaobjectpublisher_p.h b/qtwebchannel/src/webchannel/qmetaobjectpublisher_p.h --- a/qtwebchannel/src/webchannel/qmetaobjectpublisher_p.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtwebchannel/src/webchannel/qmetaobjectpublisher_p.h 2022-01-25 17:30:35.226021558 +0000 @@ -59,6 +59,9 @@ #include #include #include +#include + +#include #include "qwebchannelglobal.h" @@ -110,16 +113,35 @@ void broadcastMessage(const QJsonObject &message) const; /** + * Enqueue the given @p message to all known transports. + */ + void enqueueBroadcastMessage(const QJsonObject &message); + + /** + * Enqueue the given @p message to @p transport. + */ + void enqueueMessage(const QJsonObject &message, QWebChannelAbstractTransport *transport); + + /** + * If client for given @p transport is idle, send queued messaged to @p transport and then mark + * the client as not idle. + */ + void sendEnqueuedPropertyUpdates(QWebChannelAbstractTransport *transport); + + /** * Serialize the QMetaObject of @p object and return it in JSON form. */ QJsonObject classInfoForObject(const QObject *object, QWebChannelAbstractTransport *transport); /** - * Set the client to idle or busy, based on the value of @p isIdle. - * - * When the value changed, start/stop the property update timer accordingly. + * Set the client to idle or busy for a single @p transport, based on the value of @p isIdle. + */ + void setClientIsIdle(bool isIdle, QWebChannelAbstractTransport *transport); + + /** + * Check that client is idle for @p transport. */ - void setClientIsIdle(bool isIdle); + bool isClientIdle(QWebChannelAbstractTransport *transport); /** * Initialize clients by sending them the class information of the registered objects. @@ -272,10 +294,18 @@ friend class TestWebChannel; QWebChannel *webChannel; - SignalHandler signalHandler; + std::unordered_map> signalHandlers; + SignalHandler *signalHandlerFor(const QObject *object); - // true when the client is idle, false otherwise - bool clientIsIdle; + struct TransportState + { + TransportState() : clientIsIdle(false) { } + // true when the client is idle, false otherwise + bool clientIsIdle; + // messages to send + QQueue queuedMessages; + }; + QHash transportState; // true when no property updates should be sent, false otherwise bool blockUpdates; diff -Naur a/qtwebchannel/src/webchannel/signalhandler_p.h b/qtwebchannel/src/webchannel/signalhandler_p.h --- a/qtwebchannel/src/webchannel/signalhandler_p.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtwebchannel/src/webchannel/signalhandler_p.h 2022-01-25 17:30:35.226021558 +0000 @@ -56,6 +56,7 @@ #include #include #include +#include QT_BEGIN_NAMESPACE @@ -71,6 +72,7 @@ template class SignalHandler : public QObject { + Q_DISABLE_COPY(SignalHandler) public: SignalHandler(Receiver *receiver, QObject *parent = 0); @@ -268,6 +270,7 @@ if (call == QMetaObject::InvokeMetaMethod) { const QObject *object = sender(); Q_ASSERT(object); + Q_ASSERT(QThread::currentThread() == object->thread()); Q_ASSERT(senderSignalIndex() == methodId); Q_ASSERT(m_connectionsCounter.contains(object)); Q_ASSERT(m_connectionsCounter.value(object).contains(methodId)); diff -Naur a/qtwebchannel/tests/auto/qml/testwebchannel.cpp b/qtwebchannel/tests/auto/qml/testwebchannel.cpp --- a/qtwebchannel/tests/auto/qml/testwebchannel.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtwebchannel/tests/auto/qml/testwebchannel.cpp 2022-01-25 17:30:35.226021558 +0000 @@ -46,7 +46,11 @@ bool TestWebChannel::clientIsIdle() const { - return QWebChannel::d_func()->publisher->clientIsIdle; + for (auto *transport : QWebChannel::d_func()->transports) { + if (QWebChannel::d_func()->publisher->isClientIdle(transport)) + return true; + } + return false; } QT_END_NAMESPACE diff -Naur a/qtwebchannel/tests/auto/webchannel/tst_webchannel.cpp b/qtwebchannel/tests/auto/webchannel/tst_webchannel.cpp --- a/qtwebchannel/tests/auto/webchannel/tst_webchannel.cpp 2020-10-27 08:02:12.000000000 +0000 +++ b/qtwebchannel/tests/auto/webchannel/tst_webchannel.cpp 2022-01-25 17:30:35.227021555 +0000 @@ -785,7 +785,7 @@ DummyTransport *dummyTransport = new DummyTransport(this); channel.connectTo(dummyTransport); channel.d_func()->publisher->initializeClient(dummyTransport); - channel.d_func()->publisher->setClientIsIdle(true); + channel.d_func()->publisher->setClientIsIdle(true, dummyTransport); QCOMPARE(channel.d_func()->publisher->transportedWrappedObjects.size(), 0); @@ -943,8 +943,6 @@ void TestWebChannel::testAsyncObject() { - QSKIP("This test is broken. See QTBUG-80729"); - QWebChannel channel; channel.connectTo(m_dummyTransport); @@ -990,6 +988,50 @@ thread.wait(); } +void TestWebChannel::testPropertyMultipleTransports() +{ + DummyTransport transport1; + DummyTransport transport2; + + QWebChannel channel; + QMetaObjectPublisher *publisher = channel.d_func()->publisher; + + TestObject testObj; + testObj.setObjectName("testObject"); + channel.registerObject(testObj.objectName(), &testObj); + channel.connectTo(&transport1); + channel.connectTo(&transport2); + + testObj.setProp("Hello"); + + publisher->initializeClient(&transport1); + publisher->initializeClient(&transport2); + publisher->setClientIsIdle(true, &transport1); + QCOMPARE(publisher->isClientIdle(&transport1), true); + QCOMPARE(publisher->isClientIdle(&transport2), false); + QVERIFY(transport1.messagesSent().isEmpty()); + QVERIFY(transport2.messagesSent().isEmpty()); + + testObj.setProp("World"); + QTRY_COMPARE_WITH_TIMEOUT(transport1.messagesSent().size(), 1u, 2000); + QCOMPARE(transport2.messagesSent().size(), 0u); + publisher->setClientIsIdle(true, &transport2); + QTRY_COMPARE_WITH_TIMEOUT(transport2.messagesSent().size(), 1u, 2000); + QCOMPARE(publisher->isClientIdle(&transport1), false); + QCOMPARE(publisher->isClientIdle(&transport2), false); + + testObj.setProp("!!!"); + publisher->setClientIsIdle(true, &transport2); + QCOMPARE(publisher->isClientIdle(&transport2), true); + QCOMPARE(publisher->isClientIdle(&transport1), false); + QTRY_COMPARE_WITH_TIMEOUT(transport2.messagesSent().size(), 2u, 2000); + QCOMPARE(transport1.messagesSent().size(), 1u); + publisher->setClientIsIdle(true, &transport1); + QTRY_COMPARE_WITH_TIMEOUT(transport1.messagesSent().size(), 2u, 2000); + QCOMPARE(publisher->isClientIdle(&transport1), false); + QCOMPARE(publisher->isClientIdle(&transport2), false); +} + class FunctionWrapper : public QObject { Q_OBJECT @@ -1082,7 +1124,7 @@ publisher->propertyUpdatesInitialized = false; publisher->signalToPropertyMap.clear(); - publisher->signalHandler.clear(); + publisher->signalHandlers.clear(); } } @@ -1107,7 +1149,7 @@ obj->change(); } - channel.d_func()->publisher->clientIsIdle = true; + channel.d_func()->publisher->setClientIsIdle(true, m_dummyTransport); channel.d_func()->publisher->sendPendingPropertyUpdates(); } } diff -Naur a/qtwebchannel/tests/auto/webchannel/tst_webchannel.h b/qtwebchannel/tests/auto/webchannel/tst_webchannel.h --- a/qtwebchannel/tests/auto/webchannel/tst_webchannel.h 2020-10-27 08:02:12.000000000 +0000 +++ b/qtwebchannel/tests/auto/webchannel/tst_webchannel.h 2022-01-25 17:30:35.227021555 +0000 @@ -348,6 +348,7 @@ void testJsonToVariant(); void testInfiniteRecursion(); void testAsyncObject(); + void testPropertyMultipleTransports(); void testDeletionDuringMethodInvocation_data(); void testDeletionDuringMethodInvocation();